summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViljami Ilola <+@hix.fi>2024-03-18 19:55:32 +0200
committerViljami Ilola <+@hix.fi>2024-03-18 19:55:32 +0200
commitd19b06f7728df38dd4cfe770615c969b49f9e227 (patch)
tree11643a416d6fce0e73edf3cb262b84caa615fe30
parent78704848d4459907a456044615714b59d4593b2f (diff)
gameplay refactoring
-rw-r--r--src/sliceitoff/__main__.py2
-rw-r--r--src/sliceitoff/game/gameplay.py34
-rw-r--r--src/sliceitoff/player/player.py6
-rw-r--r--src/sliceitoff/stats/stats.py2
4 files changed, 27 insertions, 17 deletions
diff --git a/src/sliceitoff/__main__.py b/src/sliceitoff/__main__.py
index 4e5a626..295bce9 100644
--- a/src/sliceitoff/__main__.py
+++ b/src/sliceitoff/__main__.py
@@ -33,6 +33,8 @@ def sliceitoff():
level = Level(display = display)
while level.step(dt):
dt = clock.tick()
+ if Stats.lives:
+ Stats.level_up()
pygame.quit()
diff --git a/src/sliceitoff/game/gameplay.py b/src/sliceitoff/game/gameplay.py
index 33847fc..cc20c3b 100644
--- a/src/sliceitoff/game/gameplay.py
+++ b/src/sliceitoff/game/gameplay.py
@@ -9,32 +9,36 @@ class Gameplay:
self.status = status
self.player = player
self.field = field
+
+ def fire(self):
+ if self.player.fire_lazer() and Stats.lose_life():
+ return True
+ return Stats.percent < 20
+ def quit(self):
+ Stats.lives = 0
+ return True
+
def step(self):
""" Processes events for the step (frame) """
for event in pygame.event.get():
match event.type:
- case pygame.KEYDOWN:
- match event.key:
- case pygame.K_ESCAPE | pygame.K_q:
- Stats.lives = 0
- return True
- case pygame.K_SPACE:
- if self.player.fire_lazer():
- return True
- case pygame.QUIT:
- Stats.lives = 0
- return True
case pygame.MOUSEMOTION:
self.player.set_position(pygame.mouse.get_pos())
case pygame.MOUSEBUTTONDOWN:
self.player.set_position(pygame.mouse.get_pos())
if event.button == 1:
- if self.player.fire_lazer() and Stats.lose_life():
- return True
- if Stats.percent < 10:
- Stats.level_up()
+ if self.fire():
return True
if event.button == 3:
self.player.set_direction()
+ case pygame.KEYDOWN:
+ match event.key:
+ case pygame.K_ESCAPE | pygame.K_q:
+ return self.quit()
+ case pygame.K_SPACE:
+ if self.fire():
+ return True
+ case pygame.QUIT:
+ return self.quit()
return False
diff --git a/src/sliceitoff/player/player.py b/src/sliceitoff/player/player.py
index 241897d..2f4ce57 100644
--- a/src/sliceitoff/player/player.py
+++ b/src/sliceitoff/player/player.py
@@ -4,6 +4,8 @@ import pygame
from display import Scaling
from images import Images
+DEBUG = os.getenv("DEBUG")
+
class PlayerSprite(pygame.sprite.Sprite):
def __init__(self, image, pos):
super().__init__()
@@ -45,6 +47,8 @@ class Player():
self.__update_sprites()
def fire_lazer(self):
+ if DEBUG:
+ print("PLAYER: fire lazer")
# self.lazer = True
# self.updated = True
hitbox = self.field.slice(self.position, self.direction, 4_500)
@@ -53,7 +57,7 @@ class Player():
for enemy in self.enemies.sprites:
if hitbox.colliderect(enemy.rect):
hit = True
- break;
+ break
for field in self.field.sprites:
for enemy in self.enemies.sprites:
if enemy.rect.colliderect(field.rect):
diff --git a/src/sliceitoff/stats/stats.py b/src/sliceitoff/stats/stats.py
index de7b0c1..7fa39c2 100644
--- a/src/sliceitoff/stats/stats.py
+++ b/src/sliceitoff/stats/stats.py
@@ -23,7 +23,7 @@ class Stats:
@staticmethod
def lose_life():
- __class__.lives -= 3
+ __class__.lives -= 1
return not __class__.lives
@staticmethod