init version
This commit is contained in:
commit
dda603ee58
73
src/main.moon
Normal file
73
src/main.moon
Normal file
@ -0,0 +1,73 @@
|
||||
cells = {}
|
||||
active = {}
|
||||
|
||||
sand = { 1, 1, 0, 1 }
|
||||
|
||||
cells.get = (x, y) ->
|
||||
if y > 100
|
||||
return sand
|
||||
if cells[x]
|
||||
if cells[x][y]
|
||||
return cells[x][y]
|
||||
|
||||
cells.set = (x, y, v) ->
|
||||
unless cells[x]
|
||||
cells[x] = {}
|
||||
cells[x][y] = v
|
||||
|
||||
love.update = (dt) ->
|
||||
for cell in *active
|
||||
if cells.get(cell.x, cell.y) == sand
|
||||
if cells.get(cell.x, cell.y + 1) == nil
|
||||
cells.set(cell.x, cell.y, nil)
|
||||
cells.set(cell.x, cell.y + 1, sand)
|
||||
cell.y += 1
|
||||
else
|
||||
if math.random! < 0.5
|
||||
if cells.get(cell.x - 1, cell.y + 1) == nil
|
||||
cells.set(cell.x, cell.y, nil)
|
||||
cells.set(cell.x - 1, cell.y + 1, sand)
|
||||
cell.x -= 1
|
||||
cell.y += 1
|
||||
elseif cells.get(cell.x + 1, cell.y + 1) == nil
|
||||
cells.set(cell.x, cell.y, nil)
|
||||
cells.set(cell.x + 1, cell.y + 1, sand)
|
||||
cell.x += 1
|
||||
cell.y += 1
|
||||
else
|
||||
cell.remove = true
|
||||
else
|
||||
if cells.get(cell.x + 1, cell.y + 1) == nil
|
||||
cells.set(cell.x, cell.y, nil)
|
||||
cells.set(cell.x + 1, cell.y + 1, sand)
|
||||
cell.x += 1
|
||||
cell.y += 1
|
||||
elseif cells.get(cell.x - 1, cell.y + 1) == nil
|
||||
cells.set(cell.x, cell.y, nil)
|
||||
cells.set(cell.x - 1, cell.y + 1, sand)
|
||||
cell.x -= 1
|
||||
cell.y += 1
|
||||
else
|
||||
cell.remove = true
|
||||
for i = #cells, 1, -1
|
||||
cell = cells[i]
|
||||
if cell and cell.remove
|
||||
table.remove(cells, i)
|
||||
if love.mouse.isDown 1
|
||||
x, y = love.mouse.getPosition!
|
||||
x = math.floor x / 5
|
||||
y = math.floor y / 5
|
||||
table.insert(active, { :x, :y })
|
||||
cells.set(x, y, sand)
|
||||
|
||||
love.draw = ->
|
||||
love.graphics.setColor sand
|
||||
for x = 1, 120
|
||||
for y = 1, 120
|
||||
if cells.get(x, y)
|
||||
love.graphics.rectangle "fill", x * 5, y * 5, 5, 5
|
||||
love.graphics.print love.timer.getFPS!
|
||||
|
||||
love.keypressed = (key) ->
|
||||
if key == "escape"
|
||||
love.event.quit!
|
Loading…
Reference in New Issue
Block a user