Code archives/Algorithms/Game of Life
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
I just made a Blitz3D version of the Game of Life. It's a very simple algorithm but you can do alot of things with it. The best we to find out what it is, is just do run the code. [a http://en.wikipedia.org/wiki/Conway's_Game_of_Life]Click here[/a] for a few examples | |||||
;My version of the Game of Life ;Keys: ; Spacebar : Play/Pause ; Left MB : Edit (while pausing) ; Numpad +/- : Change Speed ; S : Save ; O : Open ;You can change the window size Graphics3D 1200,800,16,2 AppTitle "Game Of Life" SetBuffer BackBuffer() Const Size=256 Dim Grid(Size-1,Size-1) Type change Field x,y End Type Global Play=0 Global Spd=50 Cls w=GraphicsWidth()/Size h=GraphicsHeight()/Size Color 127,127,127 For x=0 To Size-1 Line 0,x*h,Size*w,x*h Line x*w,0,x*w,Size*h ;For y=0 To Size-1 ; Rect x*w,y*h,w+1,h+1,0 ;Next Next Repeat For x=1 To Size-2 For y=1 To Size-2 o=Grid(x,y) n=-o For xx=-1 To 1 For yy=-1 To 1 n=n+Grid(x+xx,y+yy) Next Next If Play Then If o=0 And n=3 Then o=1 ElseIf o=1 And (n>3 Or n<2) o=0 End If Else If RectsOverlap(MouseX(),MouseY(),1,1,x*w,y*h,w,h) Then If MouseHit(1) Then o=1-o End If EndIf If o<>Grid(x,y) Then Color 0,0,0 Rect x*w,y*h,w+1,h+1,1 Color 127+o*127,127+o*127,127+o*127 Rect x*w,y*h,w+1,h+1,o ch.change=New change ch\x=x ch\y=y EndIf Next Next For ch.change=Each change Grid(ch\x,ch\y)=1-Grid(ch\x,ch\y) Delete ch Next Flip If Play Then Delay 1000/Spd EndIf Spd=Spd+KeyHit(78)-KeyHit(74) Spd=Spd+(Spd=0) If KeyHit(57) Then Play=1-Play If KeyHit(31) Then f=WriteFile("save.dat") For x=0 To Size-1 For y=0 To Size-1 If Grid(x,y) Then WriteByte f,x WriteByte f,y End If Next Next CloseFile f End If If KeyHit(24) Then f=ReadFile("save.dat") Repeat x=ReadByte(f) y=ReadByte(f) Grid(x,y)=1 Color 255,255,255 Rect x*w,y*h,w,h,1 Until Eof(f) CloseFile f End If Forever |
Comments
None.
Code Archives Forum