diff options
| author | 1029chris <1029chris@gmail.com> | 2022-02-02 19:34:15 -0800 |
|---|---|---|
| committer | 1029chris <1029chris@gmail.com> | 2022-02-02 19:34:15 -0800 |
| commit | f142a571a3587846f666b2fc4a8ad4cb296c6ad6 (patch) | |
| tree | 1d0ac9185d4b422678985ab40bfdb605e867cf85 | |
| parent | 80f39c08a0b6195088d38888b71825203d038902 (diff) | |
basic enemies and other stuff!!!!!!!
| -rw-r--r-- | bullets.lua | 13 | ||||
| -rw-r--r-- | enemies.lua | 51 | ||||
| -rw-r--r-- | objects.lua | 2 | ||||
| -rw-r--r-- | players.lua | 17 | ||||
| -rw-r--r-- | update.lua | 5 |
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 @@ -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 |
