Particle fountain: Difference between revisions

Added Lua version
(Created Nim solution.)
(Added Lua version)
Line 385:
fountain()
</syntaxhighlight>
 
=={{header|Lua}}==
{{libheader|LÖVE}}
<syntaxhighlight lang="lua">-- Returns canvas of given width and height containing a circle
function initCanvas (width, height)
local c = love.graphics.newCanvas(width, height)
love.graphics.setCanvas(c) -- Switch to drawing on canvas 'c'
love.graphics.circle("fill", width / 2, height / 2, 2, 100)
love.graphics.setCanvas() -- Switch back to drawing on main screen
return c
end
 
-- Returns particle system with given canvas
function initPartSys (image, maxParticles)
local ps = love.graphics.newParticleSystem(image, maxParticles)
ps:setParticleLifetime(3, 5) -- (min, max)
ps:setDirection(math.pi * 1.5)
ps:setSpeed(700)
ps:setLinearAcceleration(-100, 500, 100, 700) -- (minX, minY, maxX, maxY)
ps:setEmissionRate(1000)
ps:setPosition(400, 550)
ps:setColors(1, 1, 1, 1, 0, 0, 1, 0) -- Start solid white, fade to transluscent blue
return ps
end
 
-- LÖVE callback that runs on program start
function love.load ()
love.window.setTitle("Lua particle fountain")
local canvas = initCanvas(10, 10)
psystem = initPartSys(canvas, 10000)
end
 
-- LÖVE callback to update values before each frame
function love.update (dt)
psystem:update(dt)
end
 
-- LÖVE callback to draw each frame to the screen
function love.draw ()
love.graphics.draw(psystem)
end</syntaxhighlight>
 
=={{header|Nim}}==
31

edits