Вопрос

So I'm developing a minesweeper game and im assigning the mines, but I've got to check where are the mines now, in order to generate the numbers. The problem is that when I'm verifying the columns and lines I need the program not to get out of the game field.

Here's how my code looks like now:

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

How do I create a IF function to verify that I don't get out of the game field? Best regards, joao.

Это было полезно?

Решение

pseudo code

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 

Personally though I wouldn't bother with the loops, they add very little to nothing

HasMineAbove = (line > 1) and (gamefield[line -1,column] = MinePresentValue

would be my approach, do it all in one.

Not to mention the huge potential confusion when auxlinha and auxcolumn are both zero...

Другие советы

I'm not sure exactly what your code is saying. It's a bit cryptic since you're using abbreviations and all lowercase names. You might want to try camelCasing and spelling out the words more completely, intellisense is your friend. =)

But coding style aside, if you are trying to loop through a limited range of values, you can keep your values bounded by using the modulus operator (%). For example, if you need to keep you values between 0-7 and you end up with a value of 12, just take the modulus of 8 to loop back to within range with a value of 4:

12 % 8 = 4
9  % 8 = 1
15 % 8 = 7
24 % 8 = 0

I realize this doesn't answer your specific question, but it's a handy technique might find useful.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top