Ooops
January 15, 2021, 05:44:05 PM

Author Topic: [bb] Game of Life by SytzeZ [ 1+ years ago ]  (Read 693 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bb] Game of Life by SytzeZ [ 1+ years ago ]
« on: June 29, 2017, 12:28:42 AM »
Title : Game of Life
Author : SytzeZ
Posted : 1+ years ago

Description : 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


Code :
Code: BlitzBasic
  1. ;My version of the Game of Life
  2. ;Keys:
  3. ;  Spacebar : Play/Pause
  4. ;  Left MB : Edit (while pausing)
  5. ;  Numpad +/- : Change Speed
  6. ;  S : Save
  7. ;  O : Open
  8. ;You can change the window size
  9.  
  10.  
  11. Graphics3D 1200,800,16,2
  12. AppTitle "Game Of Life"
  13. SetBuffer BackBuffer()
  14.  
  15. Const Size=256
  16. Dim Grid(Size-1,Size-1)
  17.  
  18. Type change
  19.         Field x,y
  20. End Type
  21.  
  22. Global Play=0
  23. Global Spd=50
  24.  
  25. Cls
  26. w=GraphicsWidth()/Size
  27. h=GraphicsHeight()/Size
  28. Color 127,127,127
  29. For x=0 To Size-1
  30.         Line 0,x*h,Size*w,x*h
  31.         Line x*w,0,x*w,Size*h
  32.         ;For y=0 To Size-1
  33.         ;       Rect x*w,y*h,w+1,h+1,0
  34.         ;Next
  35. Next
  36.  
  37. Repeat
  38.         For x=1 To Size-2
  39.                 For y=1 To Size-2
  40.                         o=Grid(x,y)
  41.                         n=-o
  42.                         For xx=-1 To 1
  43.                                 For yy=-1 To 1
  44.                                         n=n+Grid(x+xx,y+yy)
  45.                                 Next
  46.                         Next
  47.                         If Play Then
  48.                                 If o=0 And n=3 Then
  49.                                         o=1
  50.                                 ElseIf o=1 And (n>3 Or n<2)
  51.                                         o=0
  52.                                 End If
  53.                         Else
  54.                                 If RectsOverlap(MouseX(),MouseY(),1,1,x*w,y*h,w,h) Then
  55.                                         If MouseHit(1) Then o=1-o
  56.                                 End If
  57.                         EndIf
  58.                         If o<>Grid(x,y) Then
  59.                                 Color 0,0,0
  60.                                 Rect x*w,y*h,w+1,h+1,1
  61.                                 Color 127+o*127,127+o*127,127+o*127
  62.                                 Rect x*w,y*h,w+1,h+1,o
  63.                                 ch.change=New change
  64.                                 chx=x
  65.                                 chy=y
  66.                         EndIf
  67.                 Next
  68.         Next
  69.         For ch.change=Each change
  70.                 Grid(chx,chy)=1-Grid(chx,chy)
  71.                 Delete ch
  72.         Next
  73.         Flip
  74.         If Play Then
  75.                 Delay 1000/Spd
  76.         EndIf
  77.         Spd=Spd+KeyHit(78)-KeyHit(74)
  78.         Spd=Spd+(Spd=0)
  79.         If KeyHit(57) Then Play=1-Play
  80.         If KeyHit(31) Then
  81.                 f=WriteFile("save.dat")
  82.                 For x=0 To Size-1
  83.                         For y=0 To Size-1
  84.                                 If Grid(x,y) Then
  85.                                         WriteByte f,x
  86.                                         WriteByte f,y
  87.                                 End If
  88.                         Next
  89.                 Next
  90.                 CloseFile f
  91.         End If
  92.         If KeyHit(24) Then
  93.                 f=ReadFile("save.dat")
  94.                 Repeat
  95.                         x=ReadByte(f)
  96.                         y=ReadByte(f)
  97.                         Grid(x,y)=1
  98.                         Color 255,255,255
  99.                         Rect x*w,y*h,w,h,1
  100.                 Until Eof(f)
  101.                 CloseFile f
  102.         End If
  103. Forever


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal