mirror of
https://github.com/kristoferssolo/Tetris.git
synced 2025-10-21 20:00:35 +00:00
refactor(game): pause
This commit is contained in:
parent
68452de415
commit
4eed4a18e9
@ -64,6 +64,10 @@ class Game(BaseScreen):
|
||||
self.music.set_volume(0)
|
||||
self.tetris.mute()
|
||||
|
||||
def pause(self) -> None:
|
||||
"""Pause the game."""
|
||||
self.tetris.pause()
|
||||
|
||||
def _initialize_game_components(self) -> None:
|
||||
"""Initialize game-related components."""
|
||||
self.clock = pygame.time.Clock()
|
||||
|
||||
@ -8,6 +8,7 @@ from utils import CONFIG, GameMode, read_settings
|
||||
from .base import BaseScreen, SceenElement, TextScreen
|
||||
from .button import Button
|
||||
from .game import Game
|
||||
from .tetris import get_keys
|
||||
|
||||
|
||||
class Main(BaseScreen, SceenElement, TextScreen):
|
||||
@ -45,8 +46,10 @@ class Main(BaseScreen, SceenElement, TextScreen):
|
||||
if event.type == pygame.QUIT:
|
||||
self.exit()
|
||||
elif event.type == pygame.KEYDOWN:
|
||||
if event.key in [pygame.key.key_code(key) for key in self.settings["General"]["quit"]]:
|
||||
if event.key in get_keys(self.settings["General"]["quit"]):
|
||||
self.exit()
|
||||
elif event.key in get_keys(self.settings["General"]["pause"]) and self.game:
|
||||
self.game.pause()
|
||||
|
||||
if not self.game:
|
||||
for button in self.buttons:
|
||||
|
||||
@ -95,7 +95,6 @@ class Tetris(BaseScreen):
|
||||
self._handle_rotation_keys()
|
||||
self._handle_down_key()
|
||||
self._handle_drop_key()
|
||||
self._handle_pause_key()
|
||||
|
||||
def move_down(self) -> bool:
|
||||
"""
|
||||
@ -415,11 +414,11 @@ class Tetris(BaseScreen):
|
||||
|
||||
See `settings.toml` for the default key bindings.
|
||||
"""
|
||||
right_keys = _get_keys(self.settings["Movement"]["right"])
|
||||
right_key_pressed = _is_key_pressed(right_keys)
|
||||
right_keys = get_keys(self.settings["Movement"]["right"])
|
||||
right_key_pressed = is_key_pressed(right_keys)
|
||||
|
||||
left_keys = _get_keys(self.settings["Movement"]["left"])
|
||||
left_key_pressed = _is_key_pressed(left_keys)
|
||||
left_keys = get_keys(self.settings["Movement"]["left"])
|
||||
left_key_pressed = is_key_pressed(left_keys)
|
||||
|
||||
if not self.timers.horizontal.active:
|
||||
if left_key_pressed:
|
||||
@ -436,11 +435,11 @@ class Tetris(BaseScreen):
|
||||
See `settings.toml` for the default key bindings.
|
||||
"""
|
||||
|
||||
cw_keys = _get_keys(self.settings["Rotation"]["cw"])
|
||||
cw_key_pressed = _is_key_pressed(cw_keys)
|
||||
cw_keys = get_keys(self.settings["Rotation"]["cw"])
|
||||
cw_key_pressed = is_key_pressed(cw_keys)
|
||||
|
||||
ccw_keys = _get_keys(self.settings["Rotation"]["ccw"])
|
||||
ccw_key_pressed = _is_key_pressed(ccw_keys)
|
||||
ccw_keys = get_keys(self.settings["Rotation"]["ccw"])
|
||||
ccw_key_pressed = is_key_pressed(ccw_keys)
|
||||
|
||||
if not self.timers.rotation.active:
|
||||
if cw_key_pressed:
|
||||
@ -457,8 +456,8 @@ class Tetris(BaseScreen):
|
||||
|
||||
See `settings.toml` for the default key bindings.
|
||||
"""
|
||||
down_keys = _get_keys(self.settings["Movement"]["down"])
|
||||
down_key_pressed = _is_key_pressed(down_keys)
|
||||
down_keys = get_keys(self.settings["Movement"]["down"])
|
||||
down_key_pressed = is_key_pressed(down_keys)
|
||||
if not self.down_pressed and down_key_pressed:
|
||||
self.down_pressed = True
|
||||
self.timers.vertical.duration = self.increased_block_speed
|
||||
@ -473,26 +472,13 @@ class Tetris(BaseScreen):
|
||||
|
||||
See `settings.toml` for the default key bindings.
|
||||
"""
|
||||
drop_keys = _get_keys(self.settings["Action"]["drop"])
|
||||
drop_key_pressed = _is_key_pressed(drop_keys)
|
||||
drop_keys = get_keys(self.settings["Action"]["drop"])
|
||||
drop_key_pressed = is_key_pressed(drop_keys)
|
||||
|
||||
if not self.timers.drop.active and drop_key_pressed:
|
||||
self.drop()
|
||||
self.timers.drop.activate()
|
||||
|
||||
def _handle_pause_key(self) -> None:
|
||||
"""
|
||||
Handle the pause key.
|
||||
|
||||
See `settings.toml` for the default key bindings.
|
||||
"""
|
||||
pause_keys = _get_keys(self.settings["General"]["pause"])
|
||||
pause_key_pressed = _is_key_pressed(pause_keys)
|
||||
|
||||
if pause_key_pressed and not self.timers.horizontal.active:
|
||||
self.pause()
|
||||
self.timers.horizontal.activate()
|
||||
|
||||
def _reset_game_state(self) -> None:
|
||||
"""Reset the game state."""
|
||||
self.sprites.empty()
|
||||
@ -522,12 +508,12 @@ class Tetris(BaseScreen):
|
||||
)
|
||||
|
||||
|
||||
def _get_keys(keys: dict[str, str]) -> list[int]:
|
||||
def get_keys(keys: dict[str, str]) -> list[int]:
|
||||
"""Get the key codes for the specified keys."""
|
||||
return [pygame.key.key_code(key) for key in keys]
|
||||
|
||||
|
||||
def _is_key_pressed(keys: list[int]) -> bool:
|
||||
def is_key_pressed(keys: list[int]) -> bool:
|
||||
"""Check if any of the specified keys is pressed."""
|
||||
keys_pressed = pygame.key.get_pressed()
|
||||
return any(keys_pressed[key] for key in keys)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user