def __init_ball(self): radius = 5 middle_pos = self.win_x / 2, self.win_y / 2 self.ball = Ball(middle_pos, radius)
class Pong(object): def set_up_game(self): self.p1_score = 0 self.p2_score = 0 self.winning_score = 11 self.tie_score = 10 def set_up_round(self, screen_sz): self.volleys = 0 self.win_x = screen_sz[0] self.win_y = screen_sz[1] self.__init_ball() self.__init_player_entities() def update_scores(self): if self.__ball_out_for_p1(): self.p2_score += 1 elif self.__ball_out_for_p2(): self.p1_score += 1 else: return False return True def is_won(self): if self.p1_score >= self.tie_score and self.p2_score >= self.tie_score: if self.p1_score - self.p2_score >= 2: self.winner = self.player1 return True elif self.p2_score - self.p1_score >= 2: self.winner = self.player2 return True else: return False if self.p1_score == self.winning_score: self.winner = self.player1 return True elif self.p2_score == self.winning_score: self.winner = self.player2 return True else: return False def move_entities(self, keys_pressed): for key in keys_pressed: if key == "down": self.player1.move_down(1) elif key == "up": self.player1.move_up(1) ai_move = self.p2_ai.get_move() if (ai_move == 1): self.player2.move_down(1) elif (ai_move == -1): self.player2.move_up(1) def move_ball(self): self.__check_ball_collisions() self.ball.move() def __check_ball_collisions(self): ball = self.ball.get_next_frame_hit_box() p1 = self.player1.get_area() p2 = self.player2.get_area() if p1.colliderect(ball): self.__handle_volley(self.player1) elif p2.colliderect(ball): self.__handle_volley(self.player2) elif ball.top <= 0 or ball.bottom >= self.win_y: self.ball.mirror_y_axis_movement() def __handle_volley(self, paddle): bounce = paddle.get_return_angle(self.ball) self.ball.set_movement_vector(bounce) self.volleys += 1 if self.volleys == 4 or self.volleys == 12: self.ball.speed_up() def __init_player_entities(self): paddle_size = 10, 50 y_pos = self.win_y / 2 - paddle_size[1] / 2 p1_paddle_pos = 30, y_pos p2_paddle_pos = self.win_x - 30, y_pos self.player1 = Paddle(p1_paddle_pos, paddle_size, (0, self.win_y)) self.player2 = Paddle(p2_paddle_pos, paddle_size, (0, self.win_y)) self.p2_ai = AI(self.player2, self.ball, self.win_x / 2) def __init_ball(self): radius = 5 middle_pos = self.win_x / 2, self.win_y / 2 self.ball = Ball(middle_pos, radius) def __ball_out_for_p1(self): return self.ball.get_hit_box().right < 0 def __ball_out_for_p2(self): return self.ball.get_hit_box().left > self.win_x