5 Player.color = {255, 0, 0}
8 Player.acceleration = 200
9 Player.position = vec2:new(0, 0)
10 Player.vector = vec2:new(0, 0)
12 Player.path.vector = Player.position
15 down = vec2:new(0, 1),
16 left = vec2:new(-1, 0),
17 right = vec2:new(1, 0),
26 function Player:new(o)
30 o.path.vector = o.position
35 function Player:__tostring()
39 function Player:drawPath()
41 local node = self.path
43 table.insert(points, node.vector.x)
44 table.insert(points, node.vector.y)
48 love.graphics.setLineWidth(2)
49 love.graphics.setColor(self.color)
50 love.graphics.line(points)
54 function Player:draw()
55 love.graphics.setColor(self.color)
56 love.graphics.rectangle(
58 self.position.x-self.width/2,
59 self.position.y-self.height/2,
66 function Player:recordPosition()
67 local v = vec2:new(self.position.x, self.position.y)
69 print('Recording position for '..tostring(self)..': '..tostring(self.position))
77 function Player:multiple_keys_are_pressed()
79 for key,_ in pairs(self.keys) do
80 if love.keyboard.isDown(key) then
87 function Player:update(dt)
88 if not self:multiple_keys_are_pressed() then
89 for key, name in pairs(self.keys) do
90 if love.keyboard.isDown(key)
91 and self.vector ~= self.vectors[name]
92 and (self.vector + self.vectors[name]):length() > 0
94 self.vector = self.vectors[name]
100 self.position:add(self.vector * self.acceleration * dt)