我正在開發基本的tic tac toe玩家vs Java玩家遊戲,但運行時會導致無限循環。沒有語法錯誤。我是編程的新手,所以代碼有點混亂。謝謝。此代碼導致無限循環
這裏是你反覆循環在同一事件中的代碼(邏輯代碼,而不是圖形)
class handler implements ActionListener{
public void actionPerformed (ActionEvent evt) {
int i = 1;
boolean b1xon=false;
boolean b2xon=false;
boolean b3xon=false;
boolean b4xon=false;
boolean b5xon=false;
boolean b6xon=false;
boolean b7xon=false;
boolean b8xon=false;
boolean b9xon=false;
boolean b1oon=false;
boolean b2oon=false;
boolean b3oon=false;
boolean b4oon=false;
boolean b5oon=false;
boolean b6oon=false;
boolean b7oon=false;
boolean b8oon=false;
boolean b9oon=false;
boolean win=false;
do {
if ((evt.getSource() == b1) && (i == 1)) {
b1.setText("X");
i++;
b1xon=true;
}
else if (evt.getSource() == b1 && i == 2) {
b1.setText("O");
i = 1;
b1oon=true;
}
else if (evt.getSource() == b2 && i == 1) {
b2.setText("X");
i++;
b2xon=true;
}
else if (evt.getSource() == b2 && i == 2) {
b2.setText("O");
i = 1;
b2oon=true;
}
else if (evt.getSource() == b3 && i == 1) {
b3.setText("X");
i++;
b3xon=true;
}
else if (evt.getSource() == b3 && i == 2) {
b3.setText("O");
i = 1;
b1xon=true;
}
else if (evt.getSource() == b4 && i == 1) {
b4.setText("X");
i++;
b4xon=true;
}
else if (evt.getSource() == b4 && i == 2) {
b4.setText("O");
i = 1;
b1xon=true;
}
else if (evt.getSource() == b5 && i == 1) {
b5.setText("X");
i++;
b5xon=true;
}
else if (evt.getSource() == b5 && i == 2) {
b5.setText("O");
i = 1;
b1xon=true;
}
else if (evt.getSource() == b6 && i == 1) {
b6.setText("X");
i++;
b6xon=true;
}
else if (evt.getSource() == b6 && i == 2) {
b6.setText("O");
i = 1;
b1xon=true;
}
else if (evt.getSource() == b7 && i == 1) {
b7.setText("X");
i++;
b7xon=true;
}
else if (evt.getSource() == b7 && i == 2) {
b7.setText("O");
i = 1;
b1xon=true;
}
else if (evt.getSource() == b8 && i == 1) {
b8.setText("X");
i++;
b8xon=true;
}
else if (evt.getSource() == b8 && i == 2) {
b8.setText("O");
i = 1;
b1xon=true;
}
else if (evt.getSource() == b9 && i == 1) {
b9.setText("X");
i++;
b9xon=true;
}
else if(evt.getSource() == b9 && i==1){
b9.setText("O");
i = 1;
b1xon=true;
}
if((b1xon&&b2xon&&b3xon)||(b4xon&&b5xon&&b6xon)||(b7xon&&b8xon&&b9xon)||(b1xon&&b4xon&&b7xon)||(b2xon&&b5xon&&b8xon)||(b3xon&&b6xon&&b9xon)||(b1xon&&b5xon&&b9xon)||(b3xon&&b5xon&&b7xon)){
win=true;
}
else if((b1oon&&b2oon&&b3oon)||(b4oon&&b5oon&&b6oon)||(b7oon&&b8oon&&b9oon)||(b1oon&&b4oon&&b7oon)||(b2oon&&b5oon&&b8oon)||(b3oon&&b6oon&&b9oon)||(b1oon&&b5oon&&b9oon)||(b3oon&&b5oon&&b7oon)){
win=true;
}
}while(!win);
爲什麼不應該是一個無限循環? –
我避風港;噸閱讀(或理解)這個代碼,但如果你的最後'否則,如果(evt.getSource()== B9 &&我== 1){'來檢查我== 2 – DaveH
要在@SotiriosDelimanolis擴大'評論,你這裏實際上沒有提出任何問題。你能解釋它做了什麼,你期望它做什麼,你試圖解決什麼問題?謝謝。 – Ickster