MCPcopy Index your code
hub / github.com/ndleah/python-mini-project / PongGame

Class PongGame

Lazy_Pong/pong.py:237–396  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235
236
237class PongGame:
238 def __init__(self, game_field: GameField,
239 ball: Ball,
240 player: Gamer,
241 computer: Gamer,
242 max_score: int = 100,
243 fps: int = 120) -> None:
244 self._period = 1 / fps
245 self._max_ball_time_4_travel = 3
246 self._max_gamer_time_4_travel = 2
247 self._pong_pygame = pygame
248 self._game_field = game_field
249 self._ball = ball
250 self._player = player
251 self._computer = computer
252 self._pong_pygame.init()
253 self._clock = self._pong_pygame.time.Clock()
254 self._stat = {"player_score": 0, "cpu_score": 0,
255 "last_diff": 0, "level": 1, "max_score": max_score}
256 self._fps = fps
257 self._BALL_SPEED_X_DFLT = (self._game_field.disp_w) / (self._max_ball_time_4_travel * self._fps)
258 self._BALL_SPEED_Y_DFLT = (self._game_field.disp_h) / (self._max_ball_time_4_travel * self._fps)
259 self._CPU_SPEED_DFLT = (self._game_field.disp_h) / (self._max_gamer_time_4_travel * self._fps)
260 self._cpu_speed_increment = 1
261 self._ball_speed_increment = 0.5
262 self._player_speed = (self._game_field.disp_h) / (self._max_gamer_time_4_travel * self._fps)
263 self._cpu_speed = self._CPU_SPEED_DFLT
264
265 def _reset_game(self):
266 self._update_game_speed()
267 self._ball.reset()
268 self._player.reset()
269 self._computer.reset()
270
271 def _check_collision(self):
272 ball_coord = self._ball.get_borders()
273 if ball_coord['left'] <= self._computer.get_borders()['left']:
274 pong_log.debug("Player score +1")
275 self._stat['player_score'] += 1
276 self._reset_game()
277
278 if ball_coord['right'] >= self._player.get_borders()['right']:
279 pong_log.debug("CPU score +1")
280 self._stat['cpu_score'] += 1
281 self._reset_game()
282
283 if ball_coord['right'] > self._game_field.disp_w / 2 and ball_coord['right'] >= self._player.get_borders()['left']:
284 if ball_coord['top'] <= self._player.get_borders()['bott'] and ball_coord['bott'] >= self._player.get_borders()['top']:
285 self._ball.invert_move(invert_x=True)
286
287 if ball_coord['left'] < self._game_field.disp_w / 2 and ball_coord['left'] <= self._computer.get_borders()['right']:
288 if ball_coord['top'] <= self._computer.get_borders()['bott'] and ball_coord['bott'] >= self._computer.get_borders()['top']:
289 self._ball.invert_move(invert_x=True)
290
291 # Update game speed after a reset due to cpu error
292 def _update_game_speed(self):
293 score_diff = self._stat['player_score'] - self._stat['cpu_score']
294 if score_diff > 0 and score_diff > self._stat['last_diff']:

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected