所以我正在开发一个扫雷游戏并且我正在分配地雷,但是我必须检查现在的地雷,以便生成数字。问题是,当我验证列和行时,我需要程序不要离开游戏区域。
以下是我的代码现在的样子:
Public Sub avisinhos(ByVal line, ByVal column)
If mat(line, column) = 0 Then
mat(line, column) = -1
numbandeiras = numbandeiras + 1
End If
For auxlinha = -1 To 1
For auxcolumn = -1 To 1
Next
Next
End Sub
如何创建IF函数以验证我没有退出游戏领域? 最好的问候,joao。
答案 0 :(得分:1)
伪代码
int linestart = -1;
int lineend = 1;
int colstart = -1;
int colend = 1;
Assuming a 10 x 10 grid (zero based)
if line < 2 linestart = 0
if line > 8 lineend = 0
if column < 2 colstart = 0
if column > 8 colend = 0
For auxlinha = linestart To lineend
For auxcolumn = colstart To colend
// check
Next
Next
就个人而言,虽然我不打扰循环,但它们几乎没有添加任何东西
HasMineAbove =(line&gt; 1)和(gamefield [line -1,column] = MinePresentValue
将是我的方法,一起完成。
更不用说当auxlinha和auxcolumn都为零时巨大的潜在混淆......
答案 1 :(得分:1)
我不确定你的代码到底在说什么。由于您使用的是缩写和所有小写名称,因此它有点神秘。您可能想尝试camelCasing并更完整地拼写单词,intellisense是您的朋友。 =)
但是除了编码风格之外,如果你试图遍历有限范围的值,你可以使用模数运算符(%)来保持你的值。例如,如果您需要保持0到7之间的值并且最终得到值为12,则只需将8的模数循环回到范围内,值为4:
12 % 8 = 4
9 % 8 = 1
15 % 8 = 7
24 % 8 = 0
我意识到这并没有回答你的具体问题,但它是一种方便的技术可能会有用。