В настоящее время я пытаюсь запрограммировать игру на память / сопоставление. У меня возникла проблема с попыткой выяснить, как проверить, была ли нажата та же карта, и нашел ли пользователь совпадение. Я понимаю, что мне нужно сохранить значение первого клика и сравнить его со вторым кликом, но все еще не уверен, как на самом деле это сделать.
Рассмотрим этот код, я воссоздал более простую версию игры который вы можете запустить ниже:
class start {
JToggleButton DisplayCards[][] = new JToggleButton[4][4];
Shuffle shuffle = new Shuffle();
void main() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 600);
int y = 20;
int x = 60;
for (int i = 0; i < DisplayCards.length; ++i) {
for (int j = 0; j < DisplayCards[i].length; ++j) {
DisplayCards[i][j] = new JToggleButton("Click Me!");
DisplayCards[i][j].setBounds(x, y, 90, 126);
y = y + 135;
if (y >= 540) {
y = 20;
x = x + 120;
}
frame.add(DisplayCards[i][j]);
DisplayCards[i][j].addActionListener(new Clicked(i, j, shuffle));
}
}
frame.setLayout(null);
frame.setVisible(true);
}
}
Класс для перемешивания букв:
class Shuffle {
String[][] cards = {
{"A", "B", "C", "D"},
{"E", "F", "G", "H"},
{"A", "B", "C", "D"},
{"E", "F", "G", "H"}
};
public void random() {
for (int i = 0; i < cards.length; i++) {
for (int j = 0; j < cards[i].length; j++) {
int i1 = (int) (Math.random() * cards.length);
int j1 = (int) (Math.random() * cards[i].length);
String temp = cards[i][j];
cards[i][j] = cards[i1][j1];
cards[i1][j1] = temp;
}
}
}
}
Класс для ActionListener:
class Clicked implements ActionListener {
Shuffle shuffle;
JToggleButton tBtn;
private int i;
private int j;
public Clicked(int i, int j, Shuffle shuffle) {
this.i = i;
this.j = j;
this.shuffle = shuffle;
}
public void actionPerformed(ActionEvent e) {
tBtn = (JToggleButton) e.getSource();
if (tBtn.isSelected()) {
tBtn.setText(shuffle.cards[i][j]);
} else {
tBtn.setText("Click Me!");
}
}
}