---
title: "Game of life"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/104620-game-of-life"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "anon"
published: "2004-05-29T19:48:23.000Z"
updated: "2004-05-31T20:17:06.000Z"
replies: 5
views: 348
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/104620-game-of-life"
---

# Game of life

## #1 — anon, 2004-05-29T19:48Z

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

Permalänk: https://www.webforum.nu/p/104620

## #2 — Fraggel, 2004-05-31T11:14Z

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

Permalänk: https://www.webforum.nu/p/1359270

## #3 — Jymdis, 2004-05-31T12:03Z

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.

Permalänk: https://www.webforum.nu/p/1359301

## #4 — anon, 2004-05-31T17:09Z

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\]

Permalänk: https://www.webforum.nu/p/1359403

## #5 — Fraggel, 2004-05-31T19:32Z

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å).

Permalänk: https://www.webforum.nu/p/1359448

## #6 — anon, 2004-05-31T20:17Z

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.

Permalänk: https://www.webforum.nu/p/1359476

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/104620-game-of-life
