Java Do循环不是';t终止于tic-tac-toe游戏
wincondition在Siegbeingung()中。如果Siegbeingung()为真,我希望do循环停止,但即使看起来满足wincondition,循环也不会终止。ausgewählteReihe是chosenRow,ausgewählteSpalte是球员的chosenColumn 我的想法是:如果玩家1选择了2,2,并且他已经在1,2和3,2上得到了分数,那么它应该验证第二个胜利条件并返回true,这样就满足了do循环的while条件并终止Java Do循环不是';t终止于tic-tac-toe游戏,java,Java,wincondition在Siegbeingung()中。如果Siegbeingung()为真,我希望do循环停止,但即使看起来满足wincondition,循环也不会终止。ausgewählteReihe是chosenRow,ausgewählteSpalte是球员的chosenColumn 我的想法是:如果玩家1选择了2,2,并且他已经在1,2和3,2上得到了分数,那么它应该验证第二个胜利条件并返回true,这样就满足了do循环的while条件并终止 import java.util.Sca
import java.util.Scanner;
public class TTT {
static Scanner sc = new Scanner(System.in);
static final int spalte = 3;
static final int reihe = 3;
static int[][] feld = new int[reihe][spalte];
static int leer = 0;
static int kreuz = 1;
static int kreis = 2;
static int spieler;
static int ausgewählteReihe;
static int ausgewählteSpalte;
static int spielerSymbol;
static boolean siegBedingung;
public static void main(String[] args) {
start();
do {
brett();
zug();
siegBedingung();
}while(siegBedingung == false);
System.out.println("Spieler " + spielerSymbol + " gewinnt.");
}
public static void start() {
for(int zählerReihe = 0; zählerReihe < reihe; zählerReihe++) {
for(int zählerSpalte = 0; zählerSpalte < spalte; zählerSpalte++) {
feld[zählerReihe][zählerSpalte] = leer;
}
}
spielerSymbol = 1;
}
public static void zug() {
boolean validInput = false;
do {
if(spielerSymbol == 1) {
System.out.println("Spieler 1 (Kreuz) ist am Zug.");
}
if(spielerSymbol == 2) {
System.out.println("Spieler 2 (Kreis) ist am Zug.");
}
System.out.println("Geben Sie die gewünschte Reihe ein.");
ausgewählteReihe = sc.nextInt() -1;
System.out.println("Geben Sie die gewünschte Spalte ein.");
ausgewählteSpalte = sc.nextInt() -1;
if(ausgewählteReihe >= 0 && ausgewählteReihe < reihe && ausgewählteSpalte >= 0 && ausgewählteSpalte < spalte && feld[ausgewählteReihe][ausgewählteSpalte] == leer) {
feld[ausgewählteReihe][ausgewählteSpalte] = spielerSymbol;
validInput=true;
} else {
System.out.println("Das ausgewählte Feld ist nicht gültig.");
}
}while(!validInput==true);
spielerSymbol = (spielerSymbol == 1) ? 2 : 1;
}
public static boolean siegBedingung() {
return(feld[ausgewählteReihe][0] == spielerSymbol && feld[ausgewählteReihe][1] == spielerSymbol && feld[ausgewählteReihe][2] == spielerSymbol
|| feld[0][ausgewählteSpalte] == spielerSymbol && feld[1][ausgewählteSpalte] == spielerSymbol && feld[2][ausgewählteSpalte] == spielerSymbol
|| feld[1][1] == spielerSymbol && feld[2][2] == spielerSymbol && feld[0][0] == spielerSymbol
|| feld[0][2] == spielerSymbol && feld[1][1] == spielerSymbol && feld[2][0] == spielerSymbol);
}
public static void brett() {
for(int zählerReihe = 0; zählerReihe < reihe; zählerReihe++) {
for(int zählerSpalte = 0; zählerSpalte < spalte; zählerSpalte++) {
System.out.print("|");
zelle(feld[zählerReihe][zählerSpalte]);
}
System.out.print("|");
System.out.println();
}
}
public static void zelle(int inhalt) {
switch(inhalt) {
case 0: System.out.print("_"); break;
case 1: System.out.print("X"); break;
case 2: System.out.print("O"); break;
}
}
import java.util.Scanner;
公共类TTT{
静态扫描仪sc=新扫描仪(System.in);
静态最终int spalte=3;
静态最终int reihe=3;
静态int[]feld=新int[reiche][spalte];
静态int leer=0;
静态int kreuz=1;
静态int kreis=2;
静态int-spieler;
ausgewählteReihe的静态输入;
ausgewähltesplate静态内部;
静态整数符号;
静态布尔Siegbeingung;
公共静态void main(字符串[]args){
start();
做{
布雷特();
zug();
齐格贝丁贡();
}while(siegBedingung==false);
System.out.println(“Spiler”+SpilerSymbol+“gewinnt”);
}
公共静态void start(){
for(int zählerReihe=0;zählerReihe=0和ausgewählteReihe=0和ausgewählteSpalte
}所以我测试了你的代码,它成功了。我需要这些东西来改变:
start();
do {
spielerSymbol = (spielerSymbol == 1) ? 2 : 1;
brett();
zug();
} while (!siegBedingung());
System.out.println("Spieler " + spielerSymbol + " gewinnt.");
在zug()
中删除最后一行
更改Siegbeingung
,如用户建议的其他更改:
public static boolean siegBedingung() {
return (feld[ausgewählteReihe][0] == spielerSymbol && feld[ausgewählteReihe][1] == spielerSymbol
&& feld[ausgewählteReihe][2] == spielerSymbol)
|| (feld[0][ausgewählteSpalte] == spielerSymbol && feld[1][ausgewählteSpalte] == spielerSymbol
&& feld[2][ausgewählteSpalte] == spielerSymbol)
|| (feld[1][1] == spielerSymbol && feld[2][2] == spielerSymbol && feld[0][0] == spielerSymbol)
|| (feld[0][2] == spielerSymbol && feld[1][1] == spielerSymbol && feld[2][0] == spielerSymbol);
}
您好,添加了它,但它仍然没有终止。为什么变量与方法同名?@AndrewLi ask OP,他将其命名为way@JohnnyAW它应该是固定的。哎呀,我不需要的变量实际上和删除它。但是,
}而(!siegBedingung())
也没有终止