From TRCCompSci - AQA Computer Science
Variables Required
local width = 800
local height = 800
local lemtime = 2
local elapsed = lemtime
local maxlem = 10
local lemcount = 0
local startx = 100
local starty = 100
Lemmings Class & List of Lemmings
Lems = {}
function Lem(x,y)
local self = {
direction = 1,
climbheight = 4,
width = 10,
height = 20,
xpos = x,
ypos=y
}
function self.update(dt)
bl = self.checkground(self.xpos,self.ypos + self.height)
br = self.checkground(self.xpos + self.width,self.ypos + self.height)
if not bl and not br then
self.ypos=self.ypos+1
else
local testheight = 0
local found = false
while not found and testheight <= self.climbheight do
if self.direction == 1 then
frontx = self.xpos + self.width
fronty = self.ypos + (self.height) - testheight
else
frontx = self.xpos - 1
fronty = self.ypos + (self.height) - testheight
end
if not self.checkground(frontx, fronty) then
self.xpos = self.xpos+self.direction
self.ypos = self.ypos - testheight
found=true
end
testheight = testheight + 1
end
if not found then
self.direction = self.direction * -1
end
end
end
function self.checkground(x,y)
if mapdata:getPixel(x,y) ~= bgcolor then
return true
else
return false
end
end
return self
end
Method to Create Lemming
function createlem()
if lemcount<maxlem then
Lems[lemcount] = Lem(startx,starty)
lemcount = lemcount + 1
end
end
love.load method
function love.load()
love.window.setMode(width, height)
mapdata = love.image.newImageData("level.png")
map = love.graphics.newImage(mapdata)
bgcolor = mapdata:getPixel(startx,starty)
lem = love.graphics.newImage("lemming.png")
end
love.update method
function love.update(dt)
elapsed = elapsed - dt
if elapsed <= 0 then
createlem()
elapsed=lemtime
end
for _,test in pairs(Lems )do
test.update(dt)
end
end
love.draw method
function love.draw()
love.graphics.draw(map, 0, 0)
for _,test in pairs(Lems )do
love.graphics.draw(lem,test.xpos, test.ypos)
end
end