70 lines
2.3 KiB
Lua
70 lines
2.3 KiB
Lua
local map = {{'t', 'H', '.', '.', '.', '.', '.', '.', '.', '.', '.'},
|
|
{'.', ' ', ' ', ' ', '.'},
|
|
{' ', ' ', ' ', '.', '.', '.'},
|
|
{'.', ' ', ' ', ' ', '.'},
|
|
{'H', 't', '.', '.', ' ', '.', '.', '.', '.', '.', '.'}}
|
|
|
|
function step(map)
|
|
local next = {}
|
|
for i = 1, #map do
|
|
next[i] = {}
|
|
for j = 1, #map[i] do
|
|
next[i][j] = map[i][j]
|
|
if map[i][j] == "H" then
|
|
next[i][j] = "t"
|
|
elseif map[i][j] == "t" then
|
|
next[i][j] = "."
|
|
elseif map[i][j] == "." then
|
|
local count = ((map[i-1] or {})[j-1] == "H" and 1 or 0) +
|
|
((map[i-1] or {})[j] == "H" and 1 or 0) +
|
|
((map[i-1] or {})[j+1] == "H" and 1 or 0) +
|
|
((map[i] or {})[j-1] == "H" and 1 or 0) +
|
|
((map[i] or {})[j+1] == "H" and 1 or 0) +
|
|
((map[i+1] or {})[j-1] == "H" and 1 or 0) +
|
|
((map[i+1] or {})[j] == "H" and 1 or 0) +
|
|
((map[i+1] or {})[j+1] == "H" and 1 or 0)
|
|
if count == 1 or count == 2 then
|
|
next[i][j] = "H"
|
|
else
|
|
next[i][j] = "."
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return next
|
|
end
|
|
|
|
if not not love then
|
|
local time, frameTime, size = 0, 0.25, 20
|
|
local colors = {["."] = {255, 200, 0},
|
|
["t"] = {255, 0, 0},
|
|
["H"] = {0, 0, 255}}
|
|
function love.update(dt)
|
|
time = time + dt
|
|
if time > frameTime then
|
|
time = time - frameTime
|
|
map = step(map)
|
|
end
|
|
end
|
|
|
|
function love.draw()
|
|
for i = 1, #map do
|
|
for j = 1, #map[i] do
|
|
love.graphics.setColor(colors[map[i][j]] or {0, 0, 0})
|
|
love.graphics.rectangle("fill", j*size, i*size, size, size)
|
|
end
|
|
end
|
|
end
|
|
else
|
|
for iter = 1, 10 do
|
|
print("\nstep "..iter.."\n")
|
|
for i = 1, #map do
|
|
for j = 1, #map[i] do
|
|
io.write(map[i][j])
|
|
end
|
|
io.write("\n")
|
|
end
|
|
map = step(map)
|
|
end
|
|
end
|