January 15, 2021, 05:44:05 PM

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

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.

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
94.                 Repeat
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