2012-04-30 2 views
2

Итак, я разрабатываю игру тральщика и назначаю мины, но я не могу создать алгоритм, чтобы остановить шахту, чтобы перейти в место, где уже есть моя, вот что я имею до сих пор:Проверить позицию VB.NET

Public Sub initflags()

Dim line, column As Integer 
    For line = 0 To 9 
     For column = 0 To 9 
      mat(line, column) = 0 
     Next 
    Next 
    Dim numbandeiras As Integer 
    Dim r, c As Integer 

    Do Until numbandeiras = 34 



     Randomize() 

     line = Int(Rnd() * 10) 
     column = Int(Rnd() * 10) 
     r = line 
     c = column 
     If r And c = 1 Then 


      mat(line, column) = 0 
     Else 
      numbandeiras = numbandeiras + 1 

      Call avisinhos() 

      mat(line, column) = 1 
     End If 


    Loop 

End Sub 

Может кто-нибудь мне помочь? С уважением, joao.

+0

Прежде всего, .NET является очень «Object Orientated». Поэтому вы должны «создать» класс «Mine». Этот класс шахт содержит позицию в вашей матрице сетки и свойство 'myMine.isSet (x, y) как boolean' или что-то еще. Функция wocoultuld принимает 2 парамакета, x и y из вашей сетки и возвращает true или false, если эта моя (или любая другая, если вы хотите, чтобы «Коллекция списков» или «стек» ваших минов) существует внутри этого X, Y Координировать. В противном случае вы попадете в код спагетти и попытаетесь обновить его или повысить, это будет полный кошмар. – ppumkin

ответ

1

Самое простое, что нужно сделать, это проверить перед установкой, например:

if mat(line, column) = 0 then 
    numbandeiras = numbandeiras + 1 

    avisinhos() 

    mat(line, column) = 1 
end if 
+0

Да, спасибо, это сработало;) – joao

0

Вы должны хранить все помещенные «мины» в массиве своего рода. В конце концов, это лучше, если вы хотите что-то сделать с этими минами. Если у вас есть мины в качестве объектов, они делают их еще лучше, теперь они могут иметь такие состояния, как мертвые, живые или «?» как версия MS.

Только мои 2 цента.

Смежные вопросы