gpt4 book ai didi

java - 我的逻辑有什么问题,我无法确定从左边开始还是从底部开始连续有3个?

转载 作者:行者123 更新时间:2023-11-29 20:26:51 24 4
gpt4 key购买 nike

所以我试图检查是否有 3 个相同颜色的方 block 在垂直和水平方向上连续排列。这适用于从左侧水平但不是右侧的瓷砖。它也适用于从顶部而非底部对齐的图 block 。

基本上我有一个 4BY4 网格,其中每个图 block 都可以更改为红色、白色或灰色。我的逻辑有问题,我就是挑不出来!!

这是我用来确定是否有 3 个连续的代码! gridArray[i].getRDC() == R.drawable.white - 这只会检查返回的 RDC 是否为白色。目前只是试图让逻辑正确,我还没有添加代码来检查 RDC 是否为红色。

public void checkWinner(){
//CHECK FOR HORIZONTAL
for(int i=0;i<16;i+=4){
if(gridArray[i].getRDC() == R.drawable.white
&& gridArray[i+1].getRDC() == R.drawable.white
&& gridArray[i+2].getRDC() == R.drawable.white
){
Toast.makeText(getApplicationContext(),"THREE IN A ROW HORIZONTALLY",
Toast.LENGTH_SHORT).show();
Log.d("MyApp","3 in row horizontally");
}

}


//CHECK FOR VERTICAL
for(int i=0;i<=3;i++){
if(gridArray[i].getRDC() == R.drawable.white
&& gridArray[i+4].getRDC() == R.drawable.white
&& gridArray[i+8].getRDC() == R.drawable.white
// && gridArray[i+12].getRDC() == R.drawable.white
// ||
// gridArray[i+12].getRDC() == R.drawable.white
// && gridArray[i+8].getRDC() == R.drawable.white
// && gridArray[i].getRDC() == R.drawable.white
){
Toast.makeText(getApplicationContext(),"THREE IN A ROW VERTICALLY",
Toast.LENGTH_SHORT).show();
Log.d("MyApp","3 in row vertically");
}
}
}

所以目前,如果我从网格左侧连续获得 3 个图 block ,那么它会显示一个 toast 但是 如果我从右侧连续获得 3 个图 block THE GRID 它不会显示 toast ?这与垂直对齐的图 block 相同(我将在这张图片后解释)。

左对齐

这是从左侧水平对齐的 3 个图 block 的图像:

Aligned from the left

从右对齐:

这是一张图像,其中有 3 个图 block 从右侧水平对齐: Aligned from the right

顶部垂直对齐的图 block 的图像:

aligned from the top

从底部对齐

出于某种原因,它不会检查是否有 3 个从网格底部垂直对齐,只有顶部?!

aligned from the bottom

最佳答案

对于垂直检查,

for(int i=0;i<=3;i++){

应该是

for(int i=0;i<=7;i++){

为什么?因为我们有两行可以有一列包含三个连续的相同颜色的单元格。第 1 行和第 2 行。

在循环中查找错误的最可靠方法是在纸上画一个表并遍历每次迭代。但是您的代码还有其他一些问题。这是一个表示二维问题的一维数组。这是不合逻辑且容易出错的。此外,当您应该编写自适应代码时,您正在对数字进行硬编码。如果您需要将其更改为五乘五的网格怎么办?

关于java - 我的逻辑有什么问题,我无法确定从左边开始还是从底部开始连续有3个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32433234/

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