Author Topic: Game Of Life in EGSL  (Read 843 times)

Tomaaz

• Guest
Game Of Life in EGSL
« on: 26. October 2013, 18:26:13 »
Here is a small implementation of Conway's Game of Life written in EGSL.

f - faster
s - slower
esc - quit

Code: [Select]
`openwindow (600, 630, 32, "Life")cell = createimage(10, 10)startimagedraw(cell)colour(0, 0, 0)fillbox(0, 10, 10, 10)colour(200, 200, 200)fillcircle (5, 5, 4)stopimagedraw(cell)old={}new={}math.randomseed(os.time())for x = 1, 60 do old[x] = {} for y = 1, 60 do old[x][y] = 0 endendfor x = 1, 60 do new[x] = {} for y = 1, 60 do new[x][y] = 0 endendfor a = 1, 1000 do x = math.random(59) y = math.random(59) old[x][y] = 1endstep = 0speed = 250repeat step = step + 1 colour(0, 0, 0) fillbox(0, 0, 599, 629) colour(255, 255, 255) drawtext(5, 620, "Step: ") drawtext(50, 620, step) for x = 1, 60 do for y = 1, 60 do if (old[x][y] == 1) then putimage (x * 10, y * 10, cell) end end end redraw() for x = 1, 60 do for y = 1, 60 do status = 0 a = x - 1 b = y - 1 if (a > 0) and (b > 0) and (old[a][b] == 1) then status = status + 1 end a = x b = y - 1 if (b > 0) and (old[a][b] == 1) then status = status + 1 end a = x + 1 b = y - 1 if (a < 61) and (b > 0) and (old[a][b] == 1) then status = status + 1 end a = x + 1 b = y if (a < 61) and (old[a][b] == 1) then status = status + 1 end a = x + 1 b = y + 1 if (a < 61) and (b < 61) and (old[a][b] == 1) then status = status + 1 end a = x b = y + 1 if (b < 61) and (old[a][b] == 1) then status = status + 1 end a = x - 1 b = y + 1 if (a > 0) and (b < 61) and (old[a][b] == 1) then status = status + 1 end a = x - 1 b = y if (a > 0) and (old[a][b] == 1) then status = status + 1 end if old[x][y] == 1 then if (status == 2) or (status == 3) then new[x][y] = 1 else new[x][y] = 0 end else if (status == 3) then new[x][y] = 1 else new[x][y] = 0 end end end end for x = 1, 60 do for y = 1, 60 do old[x][y] = new[x][y] end end wait(speed) key = getkey() if key == 102 and speed > 50 then speed = math.floor(speed / 2) end if key == 115 and speed < 1000 then speed = speed * 2 enduntil key == 27 `
« Last Edit: 26. October 2013, 18:28:49 by Tomaaz »