2012-04-30 43 views
2

因此,我正在開發一個掃雷遊戲,即時分配地雷,但是我無法創建算法來阻止地雷前往已經有地雷的地方,這裏是我所擁有的到目前爲止:驗證位置VB.NET

公用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高度「面向對象」。所以你需要「應該」創建一個「Mine」類。這個礦類在你的網格矩陣中包含一個位置,並且'myMine.isSet(x,y)作爲布爾邏輯'的東西。函數wocoultuld從你的網格中取出2個paramaets,x和y,並且如果那個礦(或者任何其他你希望的礦藏的'List Collection'或'stack')存在於那個X,Y中,則返回true或者false座標。否則,你會以意大利麪代碼結束並嘗試更新它,否則它將成爲一個完整的噩夢。 – ppumkin

回答

1

做的最簡單的辦法是設置前檢查,e.g:

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

    avisinhos() 

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

是的,謝謝,它工作;) – joao

0

您需要存儲全部置於「地雷」在某種類型的數組。如果你想對這些礦井做些什麼,這最後會更好。如果你有地雷作爲物體,現在它們會變得更好,它們可以擁有像死亡,活着或「?」的狀態。像MS版本。

只是我2美分。