Bir Simon Says tarzı oyun yapıyorum, dört renkli kareler var ve bilgisayar bir sıra yapıyor, sonra bunu kopyaladınız vb. Ve istediğim noktadayım bazı daha gelişmiş özellikler eklemek için. Baktığım şu anki özellik, kullanıcıların istedikleri renk panellerini gerçek renklerini değiştirmek ve birbirlerinden ayrı ayrı değiştirebilmek.Bir çalışan örneği değişkenini ayrı bir sınıfta düzenleyin ve güncelleyin
Diğer her şeyi korurken JColorChooser aracılığıyla yeni bir renge geçmek için 'renk panellerini' nasıl alabilirim?
Şu anda birkaç farklı sınıfa ayrıldım ve bunların hepsinin iletişim kurmasını ve düzgün çalışmasını sağlayan sorunlarım var.
Ana sınıfı (Yalnızca bir pasajı) :
public class Simonish implements ActionListener, MouseListener {
private ColorPanel colorPanel[] = new ColorPanel[4];
private ScorePanel scorePanel = new ScorePanel();
private Menu menuBar = new Menu();
private JPanel gameBoard = new JPanel();
private Random rand = new Random();
private ArrayList<ColorPanel> compSeq = new ArrayList<ColorPanel>();
private Iterator<ColorPanel> iter;
private JFrame frame = new JFrame();
private boolean playerTurn = false;
private int speed = 500;
public Simonish(Color[] colors){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane = (JPanel)frame.getContentPane();
pane.setLayout(new BorderLayout());
gameBoard.setLayout(new GridLayout(2,2));
gameBoard.setPreferredSize(new Dimension(400,400));
for (int i=0;i<colorPanel.length;i++){
colorPanel[i] = new ColorPanel(colors[i]);
colorPanel[i].addMouseListener(this);
gameBoard.add(colorPanel[i]);
}
scorePanel.addStartListener(this);
frame.setJMenuBar(menuBar);
pane.add(scorePanel, BorderLayout.NORTH);
pane.add(gameBoard, BorderLayout.CENTER);
frame.setLocationRelativeTo(null);
frame.pack();
frame.setVisible(true);
}
Menüm kodu (menü çubuğu oluşturur ve eylemleri uygulayan): Renk değiştirme kodu evine
public class Menu extends JMenuBar {
private JMenuBar menuBar = new JMenuBar();
private JMenu settings = new JMenu("Settings");
private JMenu stats = new JMenu("Stats");
private JMenu help = new JMenu("Help");
private JMenuItem chooseColor = new JMenuItem(new ChooseColorAction("Choose Color"));
private JMenuItem colorMode = new JMenuItem(new ColorModeAction("Color Mode"));
private JMenuItem hScore = new JMenuItem("High Scores");
private JMenuItem history = new JMenuItem("History");
private JMenuItem about = new JMenuItem("About");
private JMenuItem rules = new JMenuItem("Rules");
public Menu(){
this.add(settings);
this.add(stats);
this.add(help);
settings.add(chooseColor);
settings.add(colorMode);
stats.add(hScore);
stats.add(history);
help.add(about);
help.add(rules);
}
}
Eylem sınıfı:
public class ColorModeAction extends AbstractAction {
public ColorModeAction(String name){
super(name);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
Color[] colors = {Color.CYAN, Color.BLACK, Color.WHITE, Color.GREEN};
//new Simonish(colors);
//JOptionPane.showMessageDialog(null, "Color Mode");
}
}
Hızlı cevap için teşekkürler! Sanırım anladım. Bu gece bunu deneyeceğim. – link270
Yardımlarınız için mutluyuz. Arayüz ile iletişimin neden daha iyi bir yaklaşım olduğunu anlamak için "gevşek bağlantı" anahtar sözcüğüyle arama yapabilirsiniz. – rdonuk
Tekrar teşekkürler, kendi araştırmamla birlikte bazı deneme yanılma yoluyla öğrenmeyi seviyorum, ancak bazen sıkışıp kaldım ve ne araştırma yapacağım hakkında hiçbir fikrim yok, bu yüzden rehberlik için teşekkürler. – link270