From 60d6692e22ca006860acd4a045ac54d95a0a0db0 Mon Sep 17 00:00:00 2001 From: NCLanceman Date: Thu, 27 Mar 2025 23:12:13 -0500 Subject: [PATCH] enemy firing --- enemy.lua | 22 ---------- entities/enemy.lua | 65 ++++++++++++++++++++++++++++++ player.lua => entities/player.lua | 0 main.lua | 9 +++-- classic.lua => scripts/classic.lua | 0 5 files changed, 70 insertions(+), 26 deletions(-) delete mode 100644 enemy.lua create mode 100644 entities/enemy.lua rename player.lua => entities/player.lua (100%) rename classic.lua => scripts/classic.lua (100%) diff --git a/enemy.lua b/enemy.lua deleted file mode 100644 index 7053c25..0000000 --- a/enemy.lua +++ /dev/null @@ -1,22 +0,0 @@ ---! file enemy.lua -require("blaster") -Enemy = Object:extend() - -function Enemy:new(x, y) - self.x = x - self.y = y - self.width = 30 - self.height = 30 - self.health = 100 -end - -function Enemy:draw() - --draw stuff - love.graphics.rectangle("line", self.x, self.y, self.width, self.height) -end - -function Enemy:update(dt) - --movement -end - ---shoot at the player a variable number of seconds diff --git a/entities/enemy.lua b/entities/enemy.lua new file mode 100644 index 0000000..9afb3d6 --- /dev/null +++ b/entities/enemy.lua @@ -0,0 +1,65 @@ +--! file enemy.lua +require("blaster") +Enemy = Object:extend() + +local fireTime = love.timer.getTime() + +function Enemy:new(x, y, radius) + self.origin = { x, y } + self.x = x + self.y = y + self.width = 30 + self.height = 30 + self.health = 100 + self.move_radius = radius + self.speed = 100 + + listOfBullets = {} +end + +function Enemy:draw() + --draw stuff + love.graphics.rectangle("line", self.x, self.y, self.width, self.height) + + for _, v in ipairs(listOfBullets) do + love.graphics.circle("fill", v.x, v.y, v.radius) + end +end + +function Enemy:update(dt) + local bounds = { self.origin[1] - self.move_radius, self.origin[1] + self.move_radius } + local window_height = love.graphics.getHeight() + + self.x = self.x + self.speed * dt + + --movement + if self.x > bounds[2] then + self.speed = -self.speed + elseif self.x < bounds[1] then + self.speed = -self.speed + end + + --firing! + self:fire() + + for i, v in ipairs(listOfBullets) do + v:update(dt) + + if v.y > window_height then + v.destroy = true + end + + if v.destroy == true then + print("Enemy Bullet Removed! Bullets in table remaining: ", #listOfBullets) + table.remove(listOfBullets, i) + end + end +end + +--shoot at the player a variable number of seconds +function Enemy:fire() + if love.timer.getTime() - fireTime > 2 then + table.insert(listOfBullets, Blaster(self.x, self.y, "enemy")) + fireTime = love.timer.getTime() + end +end diff --git a/player.lua b/entities/player.lua similarity index 100% rename from player.lua rename to entities/player.lua diff --git a/main.lua b/main.lua index 0d2272d..b7c7e40 100644 --- a/main.lua +++ b/main.lua @@ -1,14 +1,14 @@ function love.load() - Object = require("classic") + Object = require("scripts.classic") --require("blaster") - require("player") - require("enemy") + require("entities.player") + require("entities.enemy") local window_width = love.graphics.getWidth() local window_height = love.graphics.getHeight() player = Player(window_width / 2, window_height * 0.8) - enemy = Enemy(100, 100) + enemy = Enemy(100, 100, 70) --set background for space! love.graphics.setBackgroundColor(27 / 255, 51 / 255, 85 / 255) @@ -16,6 +16,7 @@ end function love.update(dt) player:update(dt) + enemy:update(dt) end function love.draw() diff --git a/classic.lua b/scripts/classic.lua similarity index 100% rename from classic.lua rename to scripts/classic.lua