Love - Lemmings Movement

From TRCCompSci - AQA Computer Science
Revision as of 14:30, 9 July 2019 by Admin (talk | contribs) (Variables Required)
Jump to: navigation, search

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