gpt4 book ai didi

java - 检查可扩展矩阵对角线是否相同

转载 作者:行者123 更新时间:2023-12-01 11:53:08 25 4
gpt4 key购买 nike

我正在创建一个可扩展的 TicTacToe 程序,在尝试检查字符串的对角线时遇到了问题。

我能够使用此方法检查行:

    public boolean checkRowsForWin(String b){
//Check all the rows for a winner
for(int y = 0; y < size; y++){
for (int x = 0; x < size; x++){
if (globalGrid[y][x].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}else{
inRow = 0;
}
}
inRow = 0;
}
inRow = 0;
return false;
}

我尝试了 for 循环和 if 语句的组合,我最后的修改如下。如果对角线仅包含右上角,那么当我需要它检查对角线是否不在角落时,这种方法就有效。

    public boolean checkDiagForWin(String b, int c, int d){
for (int x = c, y = d; x < size && y < size; x++, y++){
if (globalGrid[y][x].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}
else{
inRow = 0;
}
inRow = 0;
for (int x2 = size - 1, y2 = 0; x2 >=0 && y2 < size; x2--, y2++){
if (globalGrid[y2][x2].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}
else{
inRow = 0;
}
}
inRow = 0;
}
inRow = 0;
return false;
}

连续的数量和棋盘的大小都可以改变,所以它并不像只检查与该位置相邻的两个那么简单。

最佳答案

您需要从每个可能的位置开始该过程,一种可能的实现可能是:

在每个位置启动检查过程的函数:

public boolean checkDiagonals(String b) {
/* Check the diagonals starting in every position */
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (checkDiagonalForWin(b, i, j) || checkOtherDiagonalForWin(b, i, j)) {
return true;
}
}
}
return false;
}

有一些函数可以检查从某个位置开始的对角线:

public boolean checkDiagonalForWin(String b, int row, int col){

for (int inRow = 0; row < size && col < size; row++, col++) {
//Check all the rows for a winner
if (globalGrid[row][col].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}else{
inRow = 0;
}
}
return false;
}


public boolean checkOtherDiagonalForWin(String b, int row, int col){
for (int inRow = 0; row < size && col >= 0; row++, col--) {
//Check all the rows for a winner
if (globalGrid[row][col].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}else{
inRow = 0;
}
}
return false;
}

关于java - 检查可扩展矩阵对角线是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28631321/

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