From da2bb3d8e7dcd7f7f0a0c2d2e214b422350d1993 Mon Sep 17 00:00:00 2001 From: Viljami Ilola <+@hix.fi> Date: Thu, 28 Mar 2024 10:00:00 +0200 Subject: hiscore name - game.game --- src/sliceitoff/game/__init__.py | 1 + src/sliceitoff/game/game.py | 61 +++++++++++++++++++++++++++++++++++++++++ src/sliceitoff/game/hiscore.py | 44 +++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 src/sliceitoff/game/game.py create mode 100644 src/sliceitoff/game/hiscore.py (limited to 'src/sliceitoff/game') diff --git a/src/sliceitoff/game/__init__.py b/src/sliceitoff/game/__init__.py index d578385..cf0da1e 100644 --- a/src/sliceitoff/game/__init__.py +++ b/src/sliceitoff/game/__init__.py @@ -1,3 +1,4 @@ +from .game import Game from .gameplay import Gameplay from .level import Level from .show import Show diff --git a/src/sliceitoff/game/game.py b/src/sliceitoff/game/game.py new file mode 100644 index 0000000..fd796e9 --- /dev/null +++ b/src/sliceitoff/game/game.py @@ -0,0 +1,61 @@ +""" Slice It Off! - Game where you slice the area where enemies reside to + the minimum +""" + +from pathlib import Path + +import pygame + +from display import Display +from images import Images, Fonts +from stats import Stats +from screens import welcome_screen + +from .level import Level +from .show import Show +from .hiscore import HiScore + +class Game: + def __init__(self): + pygame.init() + self.clock = pygame.time.Clock() + self.display = Display() + + pygame.mouse.set_visible(False) + + Fonts.load_fonts( Path(__file__).parent.parent.resolve() ) + + def welcome(self): + ws = Show(welcome_screen()) + dt = 0 + while ws.step(dt): + dt = self.clock.tick() + self.display.update( [ws.sprites] ) + + def newgame(self): + Stats.new_game() + + while Stats.lives: + level = Level(display = self.display) + dt = 0 + while level.step(dt): + dt = self.clock.tick() + if Stats.lives: + Stats.level_up() + + def hiscore(self): + hs = HiScore() + dt = 0 + while hs.step(): + dt = self.clock.tick() + # hs.update(dt = dt) + self.display.update([hs]) + + def run(self): + self.welcome() + self.newgame() + self.hiscore() + + def __del__(self): + pygame.quit() + diff --git a/src/sliceitoff/game/hiscore.py b/src/sliceitoff/game/hiscore.py new file mode 100644 index 0000000..734ad5e --- /dev/null +++ b/src/sliceitoff/game/hiscore.py @@ -0,0 +1,44 @@ +import pygame + +from screens import hiscore_screen + +class HiScore(pygame.sprite.Group): + def __init__(self): + super().__init__() + self.add(hiscore_screen("")) + self.name = "" + + def update(self, **kwargs): + super().update(**kwargs) + + def step(self): + for event in pygame.event.get(): + if event.type == pygame.QUIT: + return False + if event.type == pygame.KEYDOWN: + if event.key in ( + pygame.K_ESCAPE, + pygame.K_KP_ENTER, + pygame.K_RETURN): + return False + if event.key in ( + pygame.K_RSHIFT, + pygame.K_LSHIFT, + pygame.K_RCTRL, + pygame.K_LCTRL, + pygame.K_RALT, + pygame.K_LALT, + pygame.K_RMETA, + pygame.K_LMETA, + pygame.K_LSUPER, + pygame.K_RSUPER, + pygame.K_SPACE): + continue + if event.key in (pygame.K_BACKSPACE, pygame.K_DELETE): + self.name = self.name [:-1] + elif pygame.key.name(event.key): + self.name += pygame.key.name(event.key)[0].upper() + self.name = self.name[:8] + self.empty() + self.add(hiscore_screen(self.name)) + return True -- cgit v1.2.3