2012-04-30 6 views
2

그래서 지뢰 찾기 게임을 개발 중이며 광산을 할당하고 있지만 광산이 이미 광산이있는 곳으로 이동하는 알고리즘을 만들 수는 없습니다. 여기에 제가 갖고있는 것이 있습니다. 지금까지 :위치 확인 VB.NET

공공 하위 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은 매우 객체 지향적입니다. 그래서 당신은 "광산"클래스를 만들어야합니다. 이 광산 클래스는 그리드 매트릭스의 위치와'myMine.isSet (x, y) as boolean' 또는 무엇인가의 속성을 포함합니다. 함수 wocoultuld는 두 개의 패러미터, x와 y를 그리드에서 취해 그 광산 (또는 광산의'List Collection' 또는'stack'을 원한다면 다른 것)이 그 X, Y 안에 존재하면 true 또는 false를 반환합니다 동등 어구. 그렇지 않으면 당신은 스파게티 코드로 끝날 것이고, 그것을 갱신하려고 노력할 것입니다. 그렇지 않으면 그것을 완전히 악몽이 될 것입니다. – ppumkin

답변

1

가장 간단한 것은 예컨대, 설정하기 전에 확인하는 것입니다 :

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

    avisinhos() 

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

예, 고맙습니다, 작동했습니다;) – joao

0

당신은 어떤 종류의 배열에 배치 된 모든 "광산"을 저장해야합니다. 당신이 그 광산으로 무언가를하고 싶다면 결국 더 좋습니다. 광산을 물체로 사용하면 더 나은 상태가됩니다. 죽은 상태, 살아있는 상태 또는 "?"과 같은 상태를 가질 수 있습니다. MS 버전.

그냥 2 센트입니다.