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