aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author1029chris <1029chris@gmail.com>2022-02-02 19:34:15 -0800
committer1029chris <1029chris@gmail.com>2022-02-02 19:34:15 -0800
commitf142a571a3587846f666b2fc4a8ad4cb296c6ad6 (patch)
tree1d0ac9185d4b422678985ab40bfdb605e867cf85
parent80f39c08a0b6195088d38888b71825203d038902 (diff)
basic enemies and other stuff!!!!!!!
-rw-r--r--bullets.lua13
-rw-r--r--enemies.lua51
-rw-r--r--objects.lua2
-rw-r--r--players.lua17
-rw-r--r--update.lua5
5 files changed, 74 insertions, 14 deletions
diff --git a/bullets.lua b/bullets.lua
index 01e6dc7..820f3ef 100644
--- a/bullets.lua
+++ b/bullets.lua
@@ -1,9 +1,10 @@
bullets = {}
-function addbullet(x, y, velx, vely, evil)
+function addbullet(x, y, velx, vely, evil, sprite)
local bullet = {}
bullet.type = "bullet"
+ bullet.sprite = sprite
bullet.evil = evil
bullet.x = x
bullet.y = y
@@ -11,7 +12,7 @@ function addbullet(x, y, velx, vely, evil)
bullet.vely = vely
function bullet.draw(bullet)
- spr(6, bullet.x, bullet.y)
+ spr(bullet.sprite, bullet.x, bullet.y)
end
function bullet.collide(object)
@@ -29,8 +30,8 @@ function addbullet(x, y, velx, vely, evil)
--collision detection
if bullet.evil then
foreach(players, bullet.collide)
- elseif bullet.good then
- --foreach(enemies, bullet.collide)
+ elseif bullet.evil == false then
+ foreach(enemies, bullet.collide)
end
--delete bullet if off screen
@@ -41,6 +42,4 @@ function addbullet(x, y, velx, vely, evil)
add(obj, bullet)
add(bullet, #obj)
-end
-
-addbullet(120, 60, -1, 0, true) \ No newline at end of file
+end \ No newline at end of file
diff --git a/enemies.lua b/enemies.lua
index e69de29..0e1df4d 100644
--- a/enemies.lua
+++ b/enemies.lua
@@ -0,0 +1,51 @@
+enemies = {}
+
+function addbasicenemy(x, y, sprite, health)
+ local enemy = {}
+ enemy.x = x
+ enemy.y = y
+ enemy.w = 8
+ enemy.h = 8
+ enemy.inv = -1
+ enemy.sprite = sprite
+ enemy.health = health
+ enemy.shootcooldown = 3
+
+ function enemy.draw(enemy)
+ spr(enemy.sprite, enemy.x, enemy.y, 1,1)
+ end
+
+ function enemy.shot(enemy)
+ --explode
+ for i = 1, 4, 1 do
+ addcircle(enemy.x+rnd(8), enemy.y+rnd(8), -0.5, 0, rnd(8), rnd(1.5)+1, 5)
+ end
+ for i = 1, 4, 1 do
+ addcircle(enemy.x+rnd(8), enemy.y+rnd(8), -0.4, 0, rnd(8), rnd(1)+0.5, 9)
+ end
+ --and reduce health
+ enemy.health -= 1
+ if enemy.health <= 0 then
+ del(enemies, enemy)
+ end
+ end
+
+ function enemy.update()
+ enemy.x -= 0.1
+ enemy.y += sin(time()/5)*0.1
+ enemy.shootcooldown -= 1/60
+ if enemy.shootcooldown < 0 then
+ enemy.shootcooldown = 0.5 + rnd(2)
+ addbullet(enemy.x-3, enemy.y, -1, 0, true, 38)
+ end
+ if enemy.x < -8 then
+ del(enemies, enemy)
+ end
+ end
+
+ add(enemies, enemy)
+end
+
+addbasicenemy(128, 60, 9, 1)
+addbasicenemy(128, 90, 9, 1)
+addbasicenemy(128, 20, 9, 1)
diff --git a/objects.lua b/objects.lua
index 69b2bd8..fa04ee8 100644
--- a/objects.lua
+++ b/objects.lua
@@ -2,10 +2,12 @@ obj = {}
function updateobjs()
foreach(players, function(obj) obj:update() end)
+ foreach(enemies, function(obj) obj:update() end)
foreach(obj, function(obj) obj:update() end)
end
function drawobjs()
foreach(obj, function(obj) obj:draw() end)
+ foreach(enemies, function(obj) obj:draw() end)
foreach(players, function(obj) obj:draw() end)
end \ No newline at end of file
diff --git a/players.lua b/players.lua
index d5da525..ae9ee96 100644
--- a/players.lua
+++ b/players.lua
@@ -1,7 +1,7 @@
playercount = -1
players = {}
-function addplayer()
+function addplayer(sprite, bulletsprite)
playercount += 1
local player = {}
player.health = 3
@@ -9,6 +9,8 @@ function addplayer()
player.y = 60
player.w = 8
player.h = 8
+ player.sprite = sprite
+ player.bulletsprite = bulletsprite
player.ymov = 0
player.inv = -1
player.id = playercount
@@ -20,11 +22,11 @@ function addplayer()
print(player.health)
if player.inv < 0 or ceil(player.inv*10%2) == 1 then
if (player.ymov == 0) then
- spr(2, player.x, player.y)
+ spr(player.sprite, player.x, player.y)
elseif (player.ymov == 1) then
- spr(3, player.x, player.y)
+ spr(player.sprite+1, player.x, player.y)
elseif (player.ymov == -1) then
- spr(3, player.x, player.y, 1, 1, false, true)
+ spr(player.sprite+1, player.x, player.y, 1, 1, false, true)
end
end
end
@@ -64,6 +66,9 @@ function addplayer()
if player.particlecooldown < 0 then
addcircle(player.x-1, player.y, -0.5, 0, 1.5, 0.5, 9)
addcircle(player.x-1, player.y+7, -0.5, 0, 1.5, 0.5, 9)
+ if (player.health == 1) then
+ addcircle(player.x+rnd(8), player.y+rnd(8), -0.5, -0.2, rnd(8), rnd(1.5)+1, 5)
+ end
player.particlecooldown = 0.1
end
@@ -74,7 +79,7 @@ function addplayer()
--for i = 1, 4, 1 do
--addcircle(player.x+3, player.y+4, rnd(1)+0.5, rnd(1)-0.5, 1.5, rnd(0.4), 12)
--end
- addbullet(player.x+3, player.y, 2, 0, false)
+ addbullet(player.x+3, player.y, 2, 0, false, player.bulletsprite)
player.shootcooldown = 0.1
end
end
@@ -82,4 +87,4 @@ function addplayer()
add(players, player)
end
-addplayer() \ No newline at end of file
+addplayer(2, 6) \ No newline at end of file
diff --git a/update.lua b/update.lua
index dd67050..022181d 100644
--- a/update.lua
+++ b/update.lua
@@ -1 +1,4 @@
-updateobjs() \ No newline at end of file
+updateobjs()
+if btn(4, 1) and playercount == 0 then
+ addplayer(18, 22)
+end \ No newline at end of file