gpt4 book ai didi

c++ - 扫雷邻居数

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

我正在尝试复制 Minesweeper,但我遇到了计算邻居是地雷的问题。这似乎是一件很容易实现的事情,但出于某种原因,我并没有在任何地方都得到想要的结果。我有一个代表每个图 block 的一维整数数组。考虑到它可能具有可变的网格大小,我想要一种方法来分别获取瓷砖的每个邻居。这是我的代码的样子:

int num = 0;

if (i + 1 < 16 && graph[i + 1] == -1)
num++;
if (i - 1 >= 0 && graph[i - 1] == -1)
num++;
if (i + 3 < 16 && graph[i + 3] == -1)
num++;
if (i - 3 >= 0 && graph[i - 3] == -1)
num++;
if (i + 4 < 16 && graph[i + 4] == -1)
num++;
if (i - 4 >= 0 && graph[i - 4] == -1)
num++;
if (i + 5 < 16 && graph[i + 5] == -1)
num++;
if (i - 5 >= 0 && graph[i - 5] == -1)
num++;

return num;

而且对于最左边和最右边的图 block ,我没有得到我想要的结果。有时最下面和最上面的瓷砖也有问题。我的代码使用固定大小为 4x4(int[16]) 的网格(显然我称之为图 :))。

提前致谢。

最佳答案

您的条件不正确。如果玩家位于网格的右边缘,则 i-3 将位于网格的左侧。

要解决这个问题,您可以添加额外的检查以查看您是否处于优势地位。例如

if (i - 3 >= 0 && (i+1) % 4 > 0 && graph[i - 3] == -1)
num++;

您需要对大多数其他 if 语句进行类似检查(+/- 4 除外)。

关于c++ - 扫雷邻居数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29676206/

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