diff options
author | Viljami Ilola <+@hix.fi> | 2024-03-18 19:55:32 +0200 |
---|---|---|
committer | Viljami Ilola <+@hix.fi> | 2024-03-18 19:55:32 +0200 |
commit | d19b06f7728df38dd4cfe770615c969b49f9e227 (patch) | |
tree | 11643a416d6fce0e73edf3cb262b84caa615fe30 | |
parent | 78704848d4459907a456044615714b59d4593b2f (diff) |
gameplay refactoring
-rw-r--r-- | src/sliceitoff/__main__.py | 2 | ||||
-rw-r--r-- | src/sliceitoff/game/gameplay.py | 34 | ||||
-rw-r--r-- | src/sliceitoff/player/player.py | 6 | ||||
-rw-r--r-- | src/sliceitoff/stats/stats.py | 2 |
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 |