webForumDet fria alternativet

Game of life

.NET

5 svar · 343 visningar · startad av anon

Medlem sedan feb. 20046 inlägg
Frågan#1

Har försökt göra en enkel version av "spelet" Game of life. skrev följande kod, men den är inte komplett. kan nån hjälpa mig att se vad som saknas?

Option Explicit

Dim antalRutor As Integer, antkol As Integer, antrad As Integer
Dim levande(1 To 225) As Integer, tal As Integer, index As Integer
Private antal As Integer, radNummer As Integer, kolNummer As Integer
Private nr As Integer, höjd As Integer, bredd As Integer
Private antalRader As Integer, antalKolumner As Integer, nummer As Integer

Private Sub Form_Load()
Dim antalRutor As Integer, radNummer As Integer, kolNummer As Integer
Dim nr As Integer, höjd As Integer, bredd As Integer
Dim antalRader As Integer, antalKolumner As Integer, nummer As Integer
'Dim x As Integer
Randomize
antalRader = 15
antalKolumner = 15

antalRutor = antalRader * antalKolumner
höjd = 150 * antalRader
bredd = 150 * antalKolumner
Scale (0, 0)-(bredd, höjd)

For nr = 0 To antalRutor - 1
If nr > 0 Then
Load ruta(nr)
ruta(nr).Visible = True

End If
ruta(nr).BackColor = vbWhite

radNummer = nr \\ antalKolumner
kolNummer = nr Mod antalKolumner

ruta(nr).Height = 150
ruta(nr).Width = 150
ruta(nr).Left = 0 + kolNummer \* 150

ruta(nr).Top = radNummer \* 150

Next
starta
End Sub

Public Sub starta()
Dim nr As Integer
For nr = 0 To antalRutor - 1
If sant_eller_falskt(0.7) Then
ruta(nr).BackColor = vbGreen 'levande
levande(nr) = 1
Else
levande(nr) = 0 'död
ruta(nr).BackColor = vbWhite
End If
Next
färga '' se nedan

End Sub

Public Sub nästageneration()
ReDim nästa(0 To antalRutor - 1) As Integer '1 för levande
Dim nr As Integer, radnr As Integer, kolnr As Integer, summa As Integer

'räkna antal levande grannar
For nr = 0 To antalRutor - 1
radnr = nr \ antkol
kolnr = nr Mod antkol
If 1 <= radnr And radnr <= antrad - 2 And 1 <= kolnr And kolnr <= antkol - 2 Then
summa = levande(nr - 1) + levande(nr + 1) + levande(nr - antkol) + levande(nr + antkol)
summa = summa + levande(nr - 1 - antkol) + levande(nr - 1 + antkol)
summa = summa + levande(nr + 1 - antkol) + levande(nr + 1 + antkol)
''''o.s.v. här är jag nog inte färdig, men hur ska jag skriva???
End If
Next
End Sub

Public Function sant_eller_falskt(tal As Single) As Boolean 'tal mellan 0 och 1

If Rnd < tal Then
sant_eller_falskt = True
Else
sant_eller_falskt = False
End If
End Function

Public Function färga()
Dim tal1 As Integer, tal2 As Integer

For nr = 0 To 225
tal1 = Int(Rnd * 225)
ruta(tal1).BackColor = vbGreen
tal2 = Int(Rnd * 225)
ruta(tal2).BackColor = vbWhite
Next

End Function

Medlem sedan sep. 2003301 inlägg
#2

Det här säger inget laga upp hela projectet...

Medlem sedan mars 20016 260 inlägg
#3

1. Använd kodtagen.
2. Alltid en idé att undvika å ä ö i allt vad subs, klasser, funktioner och objekt heter.
3. Beskriv ditt problem bättre.

Medlem sedan feb. 20046 inlägg
#4

kan nån hjälpa mig?

Jag ska göra det klassiska spelet "Game of life". när spelet startar så har man 225 rutor (15*15), som var och en representerar en cell. genom subrutinen starta() och funktionen färga() färgas några av cellerna (rutorna) slumpmässigt gröna (RND avgör vilka). de gröna cellerna är "levande" och resterande rutor, som är vita, är "döda". programmet ska räkna hur många grannar varje grön (levande) cell har och utifrån det avgöra vilka rutor som är levande i nästa generation. en levande (grön) cell får liv om den har 2 el. 4 grannar och en död cell får liv om den har 3 levande grannar.

cellerna i mitten av spelplanen har 8 grannar (som är antingen gröna eller vita). cellerna längst ut har 5 grannar med undantag av de som är i ngt av de 4 hörnen.
listan "levande" ska hålla reda på vilka rutor som är gröna.
kan ni hjälpa mig NU då? är tacksam för all hjälp jag kan få.
/Anon

[KOD]
Option Explicit

Dim antalRutor As Integer, antkol As Integer, antrad As Integer
Dim levande(1 To 225) As Integer, tal As Integer, index As Integer
Private antal As Integer, radNummer As Integer, kolNummer As Integer
Private nr As Integer, höjd As Integer, bredd As Integer
Private antalRader As Integer, antalKolumner As Integer, nummer As Integer

Private Sub Form_Load()
Dim antalRutor As Integer, radNummer As Integer, kolNummer As Integer
Dim nr As Integer, höjd As Integer, bredd As Integer
Dim antalRader As Integer, antalKolumner As Integer, nummer As Integer
'Dim x As Integer
Randomize
antalRader = 15
antalKolumner = 15

antalRutor = antalRader * antalKolumner
höjd = 150 * antalRader
bredd = 150 * antalKolumner
Scale (0, 0)-(bredd, höjd)

For nr = 0 To antalRutor - 1
If nr > 0 Then
Load ruta(nr)
ruta(nr).Visible = True

End If
ruta(nr).BackColor = vbWhite

radNummer = nr \ antalKolumner
kolNummer = nr Mod antalKolumner

ruta(nr).Height = 150
ruta(nr).Width = 150
ruta(nr).Left = 0 + kolNummer * 150

ruta(nr).Top = radNummer * 150
Next
starta
End Sub

Public Sub starta()
Dim nr As Integer
For nr = 0 To antalRutor - 1
If sant_eller_falskt(0.7) Then
ruta(nr).BackColor = vbGreen 'levande
levande(nr) = 1
Else
levande(nr) = 0 'död
ruta(nr).BackColor = vbWhite
End If
Next
färga '' se nedan

End Sub

Public Sub nästageneration()
ReDim nästa(0 To antalRutor - 1) As Integer '1 för levande
Dim nr As Integer, radnr As Integer, kolnr As Integer, summa As Integer

'räkna antal levande grannar
For nr = 0 To antalRutor - 1
radnr = nr \ antkol
kolnr = nr Mod antkol
If 1 <= radnr And radnr <= antrad - 2 And 1 <= kolnr And kolnr <= antkol - 2 Then
summa = levande(nr - 1) + levande(nr + 1) + levande(nr - antkol) + levande(nr + antkol)
summa = summa + levande(nr - 1 - antkol) + levande(nr - 1 + antkol)
summa = summa + levande(nr + 1 - antkol) + levande(nr + 1 + antkol)
''''o.s.v. här är jag nog inte färdig, men hur ska jag skriva???
End If
Next
End Sub

Public Function sant_eller_falskt(tal As Single) As Boolean 'tal mellan 0 och 1

If Rnd < tal Then
sant_eller_falskt = True
Else
sant_eller_falskt = False
End If
End Function

Public Function färga()
Dim tal1 As Integer, tal2 As Integer

For nr = 0 To 225
tal1 = Int(Rnd * 225)
ruta(tal1).BackColor = vbGreen
tal2 = Int(Rnd * 225)
ruta(tal2).BackColor = vbWhite
Next

End Function[KOD]

Medlem sedan sep. 2003301 inlägg
#5

Det hjälper inte, skicka samma kod igen?
Vad är det som strular!
De för att kunna hjälpa dig så måste jag helt enkelt skriva om koden från början och dessutom sätta mig in i logiken (isf ganska enkel, men ändå).

Medlem sedan feb. 20046 inlägg
#6

cellerna vill inte föröka sig

det som strular är att programmet helt enkelt inte funkar som det ska. det enda som händer är att den "första generationen" celler skapas men de vägrar föröka sig! du kan lägga in en control array som heter "ruta" och har index 0 i ett formulär och sedan klistra in den kod som jag skrivit. då kan du se vad det är som funkar/inte funkar.

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)