aboutsummaryrefslogtreecommitdiff
path: root/src/splitscreen_duo/games/pong.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/splitscreen_duo/games/pong.py')
-rw-r--r--src/splitscreen_duo/games/pong.py43
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)