diff options
| author | Zoltan Szabatin <[email protected]> | 2025-05-14 21:36:56 -0700 |
|---|---|---|
| committer | Zoltan Szabatin <[email protected]> | 2025-05-14 21:36:56 -0700 |
| commit | 70a4c41a75275be6050683191e05ec1cb693ffce (patch) | |
| tree | ffa5257b21e227e17ab65d0ead0dd2851f22c97e /src/splitscreen_duo/games/pong.py | |
| parent | switched from usb hid to cdc (diff) | |
| download | splitscreen-duo-main.tar.xz splitscreen-duo-main.zip | |
Diffstat (limited to 'src/splitscreen_duo/games/pong.py')
| -rw-r--r-- | src/splitscreen_duo/games/pong.py | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/src/splitscreen_duo/games/pong.py b/src/splitscreen_duo/games/pong.py index 0c0df84..d82cdc7 100644 --- a/src/splitscreen_duo/games/pong.py +++ b/src/splitscreen_duo/games/pong.py @@ -19,8 +19,7 @@ logger = logging.getLogger(__name__) class Pong(GameBase): def __init__(self, screen, serial, instance, is_joint_mode=False): super().__init__(screen, serial, instance, is_joint_mode) - self.screen_width = screen.get_width() - self.screen_height = screen.get_height() + self.player_score = 0 self.ai_score = 0 self.score_display_time = 0 @@ -28,6 +27,22 @@ class Pong(GameBase): self.reset() def reset(self): + global PADDLE_WIDTH, PADDLE_HEIGHT, BALL_SIZE, PADDLE_SPEED, AI_SPEED, BALL_SPEED + + scale_factor = min(self.screen_width / 640, self.screen_height / 480) + + if self.is_vertical: + PADDLE_WIDTH = min(100, int(80 * scale_factor)) + PADDLE_SPEED = max(5, min(8, int(8 * scale_factor))) + else: + PADDLE_WIDTH = min(100, int(100 * scale_factor)) + PADDLE_SPEED = max(8, min(10, int(10 * scale_factor))) + + PADDLE_HEIGHT = max(8, int(10 * scale_factor)) + BALL_SIZE = max(6, int(10 * scale_factor)) + AI_SPEED = max(3, min(4, int(4 * scale_factor))) + BALL_SPEED = max(4, min(5, int(5 * scale_factor))) + self.player_paddle = [ self.screen_width // 2 - PADDLE_WIDTH // 2, self.screen_height - 40, @@ -113,6 +128,8 @@ class Pong(GameBase): return None def update(self): + self.update_screen_dimensions() + if self.score_display_time: self.screen.fill(BLACK) @@ -122,26 +139,27 @@ class Pong(GameBase): f"Your Score: {self.player_score}", True, WHITE ) ai_score_text = self.font.render(f"AI Score: {self.ai_score}", True, WHITE) + vertical_spacing = 30 if self.is_vertical else 20 self.screen.blit( result_display, ( self.screen_width // 2 - result_display.get_width() // 2, - self.screen_height // 2 - 40, + self.screen_height // 2 - vertical_spacing * 2, ), ) self.screen.blit( player_score_text, ( self.screen_width // 2 - player_score_text.get_width() // 2, - self.screen_height // 2 - 20, + self.screen_height // 2, ), ) self.screen.blit( ai_score_text, ( self.screen_width // 2 - ai_score_text.get_width() // 2, - self.screen_height // 2 + 20, + self.screen_height // 2 + vertical_spacing, ), ) pygame.display.flip() @@ -226,8 +244,19 @@ class Pong(GameBase): f"AI: {self.ai_score}", True, WHITE ) - self.screen.blit(player_score_text, (10, self.screen_height - 40)) - self.screen.blit(ai_score_text, (10, 10)) + if self.is_vertical: + self.screen.blit( + player_score_text, + (self.screen_width // 2 - player_score_text.get_width() // 2, + self.screen_height - 40) + ) + self.screen.blit( + ai_score_text, + (self.screen_width // 2 - ai_score_text.get_width() // 2, 10) + ) + else: + self.screen.blit(player_score_text, (10, self.screen_height - 40)) + self.screen.blit(ai_score_text, (10, 10)) pygame.display.flip() clock.tick(60) |