diff --git a/entidades/cercado.lua b/entidades/cercado.lua new file mode 100644 index 0000000..96f6eb5 --- /dev/null +++ b/entidades/cercado.lua @@ -0,0 +1,16 @@ +Cercado = {} + +function Cercado:new(x, y) + self.sprite = love.graphics.newImage("img/cercado.png") + self.width = self.sprite:getWidth() + self.height = self.sprite:getHeight() + self.x = x-self.width/2 + self.y = y-self.height/2 + self.speed = 2 + + return self +end + +function Cercado:draw() + love.graphics.draw(self.sprite, self.x, self.y) +end diff --git a/entidades/ovella.lua b/entidades/ovella.lua index 27c0e2f..ce0d8b4 100644 --- a/entidades/ovella.lua +++ b/entidades/ovella.lua @@ -1,3 +1,5 @@ +require("../lib/helpers") + Ovella = {} local OvellaMT = {__index = Ovella} @@ -14,7 +16,7 @@ function Ovella:new(id, x, y) return setmetatable(instance, OvellaMT) end -function Ovella:update(pastor) +function Ovella:update(pastor, cercado) -- vector local X = pastor.x - self.x; local Y = pastor.y - self.y; @@ -43,6 +45,9 @@ function Ovella:update(pastor) if distancia < DISTANCIA then -- movemento -- FIXME comprobar que non se vai de marxenes e non choca con muros + print(Helpers:CheckCollision(self, cercado)) + + -- Establece a nova posiciĆ³n self.x = self.x - dX; self.y = self.y - dY; end diff --git a/img/pastor.png b/img/pastor.png index c11246a..6bf4d64 100644 Binary files a/img/pastor.png and b/img/pastor.png differ diff --git a/img/pastor2.png b/img/pastor2.png new file mode 100644 index 0000000..c11246a Binary files /dev/null and b/img/pastor2.png differ diff --git a/lib/helpers.lua b/lib/helpers.lua new file mode 100644 index 0000000..f34dad9 --- /dev/null +++ b/lib/helpers.lua @@ -0,0 +1,10 @@ +Helpers = {} + +function Helpers:CheckCollision(entidade1, entidade2) + return entidade1.x < entidade2.x+entidade2.width and + entidade2.x < entidade1.x+entidade1.width and + entidade1.y < entidade2.y+entidade2.height and + entidade2.y < entidade1.y+entidade1.height +end + +return Helpers diff --git a/main.lua b/main.lua index ae35f3d..1fbe913 100644 --- a/main.lua +++ b/main.lua @@ -1,6 +1,7 @@ require "socket" -- para o tempo en milisengundos require("entidades/pastor") require("entidades/ovella") +require("entidades/cercado") inspect = require 'lib.inspect' -- configuracion @@ -21,16 +22,14 @@ function love.load() -- imaxes background = love.graphics.newImage("img/fondo.png") - cercado = love.graphics.newImage("img/cercado.png") -- fonte local f = love.graphics.newFont(12) love.graphics.setFont(f) -- entidades + cercado = Cercado:new(width/2, height/2) player = Pastor:new(width/2, height/2) - - -- ovellas con posicios aleatorias for i=1,OVELLAS do -- print(i) math.randomseed(os.time()+i) @@ -55,9 +54,7 @@ function love.draw() end -- cercado - cercadoX = (love.graphics.getWidth() - cercado:getWidth()) / 2 - cercadoY = (love.graphics.getHeight() - cercado:getHeight()) / 2 - love.graphics.draw(cercado, cercadoX, cercadoY) + cercado:draw() -- pastor player:draw() @@ -76,7 +73,7 @@ function love.update(dt) player:update(dt) -- update ovella object for i = 1, #ovellas,1 do --itera sobre cada ovella na tabla - ovellas[i]:update(player) + ovellas[i]:update(player, cercado) end end