验证Gamefield VB.NET

时间:2012-05-01 17:07:24

标签: vb.net matrix minesweeper

所以我正在开发一个扫雷游戏并且我正在分配地雷,但是我必须检查现在的地雷,以便生成数字。问题是,当我验证列和行时,我需要程序不要离开游戏区域。

以下是我的代码现在的样子:

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。

2 个答案:

答案 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

我意识到这并没有回答你的具体问题,但它是一种方便的技术可能会有用。