gpt4 book ai didi

java - 我如何在 tictactoe 游戏中执行 check_game_state 方法?

转载 作者:行者123 更新时间:2023-11-30 09:37:40 25 4
gpt4 key购买 nike

我想了解游戏是否已完成、绘制或仍然可以玩。但我想用动态代码来做。

例如,我像这样为 3*3 的井字游戏做静态的:

private static boolean check_game_state(char[] board)
{
if ( (board[0]==cSymbol && board[1]==cSymbol && board[2]==cSymbol)
|| (board[3]==cSymbol && board[4]==cSymbol && board[5]==cSymbol)
|| (board[6]==cSymbol && board[7]==cSymbol && board[8]==cSymbol)
|| (board[0]==cSymbol && board[3]==cSymbol && board[6]==(cSymbol))
|| (board[1]==(cSymbol) && board[4]==(cSymbol) && board[7]==(cSymbol))
|| (board[2]==(cSymbol) && board[5]==(cSymbol) && board[8]==(cSymbol))
|| (board[0]==(cSymbol) && board[4]==(cSymbol) && board[8]==(cSymbol))
|| (board[2]==(cSymbol) && board[4]==(cSymbol) && board[6]==(cSymbol)))
{
if (cSymbol == 'X')
{
state = 5; //player 1 win
}
else if (cSymbol == 'O')
{
state = 4; player 2 win
}
}
}

我想为 4*4 或 5*5 或更大的电路板动态调整。但是我该怎么做呢?可能吗?

最佳答案

您需要在循环中访问元素,而不是对索引进行硬编码。例如。而不是

boolean test = (board[0]==cSymbol && board[1]==cSymbol && board[2]==cSymbol);

你会做类似的事情

boolean test = true;
for (int i = 0; i < length; ++i) {
test = test && board[i] == cSymbol ;
}

其中 length 是棋盘的大小(例如 5、6),与 board.length 的平方根相同 您需要从数组中计算长度或将其与数组本身一起传递给函数

仅当所有元素都等于 cSymbol 时,这会将 test 设置为 true,否则设置为 false

更新:我给你行的计算;您需要将其应用于(提示:计算索引 i+j*length),main dialonal(索引: i*length+i) 和次对角线(索引:i*length+(length-1-i))。索引 i*length + j 转换为第 i 行,j 列:

private static boolean check_game_state(char[] board, int length) 
{
bool row = false;
for (int i = 0; i < length; ++i) {
bool innerRow = true;
for (int j = 0; j < length; ++j) { // calculate the ith row
innerRow = innerRow && board[i*length+j] == cSymbol;
}
row = row || innerRow;
}
if (row)
{
// somebody won...
}
}

关于java - 我如何在 tictactoe 游戏中执行 check_game_state 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10388255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com