Tervehdys tännekin autiotaloon.
Kaivoin pitkästä aikaa vanhan kunnon CB:n esiin ja töräytin oman versioni Conwayn kuuluisuudesta.
Idea kaikille varmasti tuttu, joten asiaan.
Tuosta latauslinkkiä:
https://drive.google.com/file/d/0B0UknX ... sp=sharing
cbLife - elämänpeli
- Kokkelkhan
- Newcomer
- Posts: 6
- Joined: Tue Mar 15, 2011 9:25 pm
- Location: Pk-seutu
cbLife - elämänpeli
Päräjää...!
Re: cbLife - elämänpeli
Hyvältä näytti, koodailin itse kans tätä keväällä, mutta jostain syystä en saanut omaani toimimaan. Oletko katsonut tämän?
Solar Eclipse
We're in a simulation, and God is trying to debug us.
- Kokkelkhan
- Newcomer
- Posts: 6
- Joined: Tue Mar 15, 2011 9:25 pm
- Location: Pk-seutu
Re: cbLife - elämänpeli
Ihan mielenkiintonen pätkä, thanks
Tässä muuten pohja omalle toteukselle:
Tässä muuten pohja omalle toteukselle:
Code: Select all
//Paina välilyöntiä
Const SW=800
Const SH=600
Rate=50 //Päivitysnopeus
cSize=50 //Solujen koko
sX=SW/cSize
sY=SH/cSize
cells=sX*sY
cell_i=1
SCREEN SW,SH,0,1
Dim cGrid(cells,4)
//1 = X
//2 = Y
//3 = Elossa
//4 = Naapurit
//Alustetaan solut:
For y=1 To sY
For x=1 To sX
cGrid(cell_i,1)=x : cGrid(cell_i,2)=y : cGrid(cell_i,3)=Rand(0,1) : cGrid(cell_i,4)=0
cell_i=cell_i+1
Next x
Next y
Repeat
If Timer()>record+Rate Then
Gosub CheckNeighbours
Gosub CellLife
record=Timer()
EndIf
Gosub DrawCells
If KeyHit(cbkeySpace) Then
For i=1 To cells
cGrid(i,3)=Rand(0,1)
Next i
EndIf
DrawScreen
Forever
CheckNeighbours:
For i=1 To cells
//Ylävasen
If cGrid(i,1)>1 And cGrid(i,2)>1 Then
If cGrid(i-(sX+1),3)=1 Then n=n+1
EndIf
//Vasen
If cGrid(i,1)>1 And cGrid(i-1,3)=1 Then n=n+1
//Alavasen
If cGrid(i,1)>1 And cGrid(i,2)<sY-1 Then
If cGrid(i+(sX-1),3)=1 Then n=n+1
EndIf
//Ylä
If cGrid(i,2)>1 Then
If cGrid(i-sX,3)=1 Then n=n+1
EndIf
//Ala
If cGrid(i,2)<sY Then
If cGrid(i+sX,3)=1 Then n=n+1
EndIf
//Yläoikea
If cGrid(i,1)<sX And cGrid(i,2)>1 Then
If cGrid(i-(sX-1),3)=1 Then n=n+1
EndIf
//Oikea
If cGrid(i,1)<sX And cGrid(i+1,3)=1 Then n=n+1
//Alaoikea
If cGrid(i,1)<sX And cGrid(i,2)<sY-1 Then
If cGrid(i+(sX+1),3)=1 Then n=n+1
EndIf
cGrid(i,4)=n
n=0
Next i
Return
CellLife:
For i=1 To cells
//Elossa & vähemmän kuin 2 naapuria -> kuolee
If cGrid(i,3)=1 And cGrid(i,4)<2 Then cGrid(i,3)=0
//Elossa & enemmän kuin 3 naapuria -> kuolee
If cGrid(i,3)=1 And cGrid(i,4)>3 Then cGrid(i,3)=0
//Kuollut & tasan 3 naapuria -> henkiin
If cGrid(i,3)=0 And cGrid(i,4)=3 Then cGrid(i,3)=1
Next i
Return
DrawCells:
For i=1 To cells
If cGrid(i,3)=1 Then
Color cbGreen
Box (cGrid(i,1)*cSize)-cSize,(cGrid(i,2)*cSize)-cSize,cSize,cSize,1
EndIf
Next i
Return
Päräjää...!