Java 我如何确定我的Tic Tac Toe计划中的获胜者
以前的职位: 我试着让一个Tic Tac Toe程序(人与计算机)可伸缩(电路板大小可以改变)。我之前遇到了一些大问题,但大部分问题都解决了 游戏规则是基本的井字游戏,但有一个不同的规则是,无论棋盘有多大(当Java 我如何确定我的Tic Tac Toe计划中的获胜者,java,arrays,tic-tac-toe,Java,Arrays,Tic Tac Toe,以前的职位: 我试着让一个Tic Tac Toe程序(人与计算机)可伸缩(电路板大小可以改变)。我之前遇到了一些大问题,但大部分问题都解决了 游戏规则是基本的井字游戏,但有一个不同的规则是,无论棋盘有多大(当=5时),玩家或计算机只需要连续五分就可以获胜 现在,我的程序唯一的问题就是决定谁赢了这场比赛。这场比赛现在只可能以“平局”结束。(而且我还没有实现“=5”) 具体的问题解释是,我需要为类似“computer wins”和/或“player wins”的内容确定赢家和结束屏幕 package
=5
时),玩家或计算机只需要连续五分就可以获胜
现在,我的程序唯一的问题就是决定谁赢了这场比赛。这场比赛现在只可能以“平局”结束。(而且我还没有实现“=5
”)
具体的问题解释是,我需要为类似“computer wins
”和/或“player wins
”的内容确定赢家和结束屏幕
package-tictactoe;
导入java.util.Scanner;
导入java.util.Random;
公共类Tictatcoe{
公共静态整数大小;
公共静态字符[][]板;
公共静态积分=0;
公共静态扫描仪扫描=新扫描仪(System.in);
/**
*为游戏创建基础。
*
*@param args命令行参数。未使用。
*/
公共静态void main(字符串[]args){
System.out.println(“选择电路板尺寸”);
系统输出打印(“[int]:”);
size=Integer.parseInt(scan.nextLine());
board=新字符[大小][大小];
设置板();
int i=1;
while(true){
如果(i%2==1){
显示板();
getMove();
}否则{
computerTurn();
}
//伊斯旺()
if(isDraw()){
System.err.println(“Draw!”);
打破
}
i++;
}
}
/**
*检查是否有抽签。
*
*@return如果这场比赛是平局
*/
公共静态布尔值isDraw(){
对于(int i=0;i=大小)| |(inY>=大小)){
返回false;
}
//检查是否已在该位置进行播放,
//因此,该位置无效。
返回(板[inX][inY]='';
}
}
您已经有了要玩的循环,因此,在每次迭代中,以同样的方式检查游戏isDraw()
,同时检查一些玩家是否赢了:
while (true) {
if (i % 2 == 1) {
displayBoard();
getMove();
} else {
computerTurn();
}
// isWon()
if (isDraw()) {
System.err.println("Draw!");
break;
} else if (playerHasWon()){
System.err.println("YOU WIN!");
break;
} else if (computerHasWon()) {
System.err.println("Computer WINS!\nYOU LOOSE!!");
break;
}
i++;
}
创建所需的方法后:
public static boolean playerHasWon() {
boolean hasWon = false;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
// check if 5 in a line
}
}
return hasWon ;
}
public static boolean computerHasWon() {
boolean hasWon = false;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
// check if 5 in a line
}
}
return hasWon ;
}
然后用开关盒检查一下
每回合后检查是否有人赢了?@MuratK。根据他的代码(这与他的要求相矛盾),他已经得出了这个结论。在每个玩家/电脑回合后,他的
//isWon()
内有,while(true)
。虽然OP没有明确提出这一问题,但我假设他想知道如何实现isWon()
,其中将检查相邻X或O(水平、垂直或对角)的三/四/五(取决于电路板大小)。同样,这只是我的假设,因此OP可能应该编辑一下他的问题,并展示他迄今为止在isWon()
-method中所做的尝试。有趣而有用的答案,非常感谢。实际上,这个程序还没有完全运行,但我已经取得了一些进展。再次感谢!
public static boolean playerHasWon() {
boolean hasWon = false;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
// check if 5 in a line
}
}
return hasWon ;
}
public static boolean computerHasWon() {
boolean hasWon = false;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
// check if 5 in a line
}
}
return hasWon ;
}
private final int DRAW = 0;
private final int COMPUTER = 1;
private final int PLAYER = 2;
private int isGameFinished() {
if (isDraw()) return DRAW;
else if (computerHasWon()) return COMPUTER;
else if (playerHasWon()) return PLAYER;
}
loop: while (true) {
// other stufff
switch (isGameFinished()) {
case PLAYER:
System.err.println("YOU WIN!");
break loop;
case COMPUTER:
System.err.println("Computer WINS!\nYOU LOOSE!!");
break loop;
case DRW:
System.err.println("IT'S A DRAW");
break loop;
}