# Difference between revisions of "Love - Lemmings Movement"

This tutorial will create the movement for an individual Lemming, it will fall to the ground and then move in one direction until it hits something it can't climb and then switch direction.

I have extended this by creating different subclasses of lemming, ones to block, explode, tunnel, bridge and so on.

I used this image for the map:

I also made this map for my extended version:

I used this image for a lemming:

## Variables Required

local width = 800
local height = 800

local lemtime = 2 -- time between lemmings
local elapsed = lemtime
local maxlem = 10 -- number of lemmings to create
local lemcount = 0 -- used to count the number of lemmings created

local startx = 100 -- drop position for new lemmings
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
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

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.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