def __init__(self, screen, screen_width, screen_height, fiel_rect, bg_color): self.SCREEN_WIDTH = screen_width self.SCREEN_HEIGHT = screen_height self.FIELD_RECT = Rect(0, 50, self.SCREEN_WIDTH, self.SCREEN_HEIGHT - 50) self.BG_COLOR = bg_color self.screen = screen self.bat_image = pygame.image.load("images/bat.png").convert_alpha() self.ball_image = pygame.image.load("images/ball.png").convert_alpha() self.bat_l = Bat(self.screen, self.FIELD_RECT, self, self.bat_image, "left") self.bat_r = Bat(self.screen, self.FIELD_RECT, self, self.bat_image, "right") self.score = (self.bat_l.lives, self.bat_r.lives) self.score_board = MsgBoard(self.screen, Rect(0, 0, self.SCREEN_WIDTH, 50), "{0} : {1}".format(*self.score), Color("green"),Color("black"), 2, Color("green")) self.fps_board = MsgBoard(self.screen, Rect(0, 0, 150, 50), "0", Color("green"), Color("black"), 2, Color("green")) self.new_ball() self.clock = pygame.time.Clock() self.paused = False
def win_check(self): if self.score[0] <= 0 or self.score[1] <= 0: win_text = "Left player win!" if self.score[0] <= 0: win_text = "Right player win!" win_msg = MsgBoard(self.screen, self.FIELD_RECT, win_text, Color("green"), Color("black"), 2, Color("green")) win_msg.draw() self.paused = True
class Game(object): def __init__(self, screen, screen_width, screen_height, fiel_rect, bg_color): self.SCREEN_WIDTH = screen_width self.SCREEN_HEIGHT = screen_height self.FIELD_RECT = Rect(0, 50, self.SCREEN_WIDTH, self.SCREEN_HEIGHT - 50) self.BG_COLOR = bg_color self.screen = screen self.bat_image = pygame.image.load("images/bat.png").convert_alpha() self.ball_image = pygame.image.load("images/ball.png").convert_alpha() self.bat_l = Bat(self.screen, self.FIELD_RECT, self, self.bat_image, "left") self.bat_r = Bat(self.screen, self.FIELD_RECT, self, self.bat_image, "right") self.score = (self.bat_l.lives, self.bat_r.lives) self.score_board = MsgBoard(self.screen, Rect(0, 0, self.SCREEN_WIDTH, 50), "{0} : {1}".format(*self.score), Color("green"),Color("black"), 2, Color("green")) self.fps_board = MsgBoard(self.screen, Rect(0, 0, 150, 50), "0", Color("green"), Color("black"), 2, Color("green")) self.new_ball() self.clock = pygame.time.Clock() self.paused = False def new_ball(self): self.ball = Ball(self.screen, self.FIELD_RECT, self, self.ball_image, (100, 100),(5, 3) ) def win_check(self): if self.score[0] <= 0 or self.score[1] <= 0: win_text = "Left player win!" if self.score[0] <= 0: win_text = "Right player win!" win_msg = MsgBoard(self.screen, self.FIELD_RECT, win_text, Color("green"), Color("black"), 2, Color("green")) win_msg.draw() self.paused = True def run(self): while True: time_passed = self.clock.tick(100) for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: self.bat_r.move_up() elif event.key == pygame.K_DOWN: self.bat_r.move_down() elif event.key == pygame.K_w: self.bat_l.move_up() elif event.key == pygame.K_s: self.bat_l.move_down() elif event.key == pygame.K_SPACE: self.paused = not self.paused elif event.key == pygame.K_ESCAPE: return 0 elif event.type == pygame.KEYUP: if (event.key == pygame.K_UP) or (event.key == pygame.K_DOWN): self.bat_r.stop() elif (event.key == pygame.K_w) or (event.key == pygame.K_s): self.bat_l.stop() if not self.paused: # update self.bat_l.update() self.bat_r.update() self.ball.update(time_passed) self.score = (self.bat_l.lives, self.bat_r.lives) self.score_board.update("{0} : {1}".format(*self.score)) self.fps_board.update(str(int(self.clock.get_fps()))) # draw self.screen.fill(self.BG_COLOR) self.score_board.draw() self.fps_board.draw() self.bat_l.draw() self.bat_r.draw() self.ball.draw() self.win_check() pygame.display.flip()