Я только что закончил свои первые два семестра занятий по Java в моем колледже. Я очень взволнован, чтобы учиться, и я возвращаюсь и пытаюсь исправить некоторые из моих проектов как опыт обучения. В этом задании я должен был создать игру в крестики-нолики. Мне удалось заставить все работать, что требовалось для назначения, но у меня возникли проблемы с выходом из тупика.
Я сделал 2 2D массива, один из JButtons и один из объекта, который представляет объект Tic Tac Toe, который имеет базовые методы get / set для символа (X или O) и логическое значение для указания, если он занят.
public void actionPerformed(ActionEvent e){
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
try{
if(player_array[i][j].getOccupied()){
throw new CellTakenException("Cell taken, try another.");
}
else {
if(e.getSource()==button_array[i][j]){
move_num++;
if(move_num%2!=0){
player_array[i][j].setOccupid(true);
player_array[i][j].setChar('X');
button_array[i][j].setText("X");
if(gameWon()){
JOptionPane.showMessageDialog(pane,button_array[i][j].getText()+" wins!");
}
}
else if(move_num%2==0){
player_array[i][j].setOccupid(true);
player_array[i][j].setChar('O');
button_array[i][j].setText("O");
if(gameWon()){
JOptionPane.showMessageDialog(pane,button_array[i][j].getText()+" wins!");
}
}
else if(move_num==9){
if(boardFull()){
JOptionPane.showMessageDialog(pane,"Game over. No Winners.");
}
}
}
}
}
catch(CellTakenException c){
c.getMessage();
}
}
}
}
Сначала я попытался просто использовать значение move_num, чтобы проверить, закончилось ли оно, но это не сработало, поэтому я добавил логическое значение boardFull (), которое проверяет, нажата ли каждая кнопка, и занятое логическое значение для пальца ноги объект.
public boolean boardFull(){
int cellTaken=0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
if(button_array[i][j].getModel().isPressed()&&player_array[i][j].getOccupied()){
cellTaken++;
}
}
}
return cellTaken==9;
}
Я не могу понять, почему патовое сообщение не появляется. Кто-нибудь знает, почему это так / что я мог сделать, чтобы это исправить?