Ejemplo n.º 1
0
class PlayingState(ZedLib.GameState):
    def __init__(self, game):
        super().__init__(game)
        self.paddle_1 = Paddle()
        self.paddle_2 = Paddle()
        self.paddle_2.SetControlScheme(pygame.K_UP, pygame.K_DOWN)
        self.paddle_2.rect.right = self.game.screen_width
        self.paddle_2.pos.UpdatePositionX()
        self.paddles = [self.paddle_1, self.paddle_2]

        self.ball = Ball(30, self.game.screen_width / 2, 0)

        self.top_border = ZedLib.CollisionObject(self.game.screen_width, 10, 0,
                                                 -10)
        self.bottom_border = ZedLib.CollisionObject(self.game.screen_width, 10,
                                                    0, self.game.screen_height)
        self.borders = [self.top_border, self.bottom_border]

    def Update(self):
        for paddle in self.paddles:
            if paddle.ai_controlled:
                paddle.AIControl(None)
            else:
                paddle.HandleInput()
            paddle.UpdateMovement(self.borders + [self.ball])
        self.ball.UpdateMovement(self.borders + self.paddles)
        self.CheckBallOffScreen()

    def DrawSprites(self):
        for paddle in self.paddles:
            self.game.screen.blit(paddle.image, paddle.rect)
        self.game.screen.blit(self.ball.image, self.ball.rect)

    def HandleKeyDownEvent(self, key):
        if key == pygame.K_ESCAPE:
            self.Pause()

    def CheckBallOffScreen(self):
        if ((self.ball.rect.right > self.game.screen_width)
                or (self.ball.rect.left < 0)):
            self.GameOver()

    def Pause(self):
        self.game.ChangeState(self.game.pause_state)

    def GameOver(self):
        self.game.ChangeState(self.game.game_over_state)