Exemple #1
0
    def __init__(self):
        # Initialise the clock.
        self._clock = pygame.time.Clock()

        # Create the main screen (the window) and default background.
        self._screen = self._create_screen()
        self._background = self._create_background()
        self._display_logo()
        self._display_score_titles()
        self._high_score = load_high_score()

        # The start screen displayed before the game is started.
        self._start_screen = StartScreen(self._start_game)

        # Reference to a running game, when one is in play.
        self._game = None

        # Whether we're running.
        self._running = True

        # Set up the top level event handlers.
        def quit_handler(event):
            self._running = False
        receiver.register_handler(pygame.QUIT, quit_handler)

        # Initialise the scores.
        self._display_player_score = functools.partial(self._display_score,
                                                       y=35)
        self._display_high_score = functools.partial(self._display_score,
                                                     y=100)
        self._display_player_score(0)
        self._display_high_score(self._high_score)
Exemple #2
0
    def test_register_handler(self):
        def handler():
            pass

        receiver.register_handler('foo', handler)

        self.assertIn(handler, receiver._handlers['foo'])
Exemple #3
0
    def test_register_handler(self):
        def handler():
            pass

        receiver.register_handler('foo', handler)

        self.assertIn(handler, receiver._handlers['foo'])
Exemple #4
0
    def __init__(self):
        # Initialise the clock.
        self._clock = pygame.time.Clock()

        # Create the main screen (the window) and default background.
        self._screen = self._create_screen()
        self._background = self._create_background()
        self._display_logo()
        self._display_score_titles()
        self._high_score = load_high_score()

        # The start screen displayed before the game is started.
        self._start_screen = StartScreen(self._start_game)

        # Reference to a running game, when one is in play.
        self._game = None

        # Whether we're running.
        self._running = True

        # Set up the top level event handlers.
        def quit_handler(event):
            self._running = False
        receiver.register_handler(pygame.QUIT, quit_handler)

        # Initialise the scores.
        self._display_player_score = functools.partial(self._display_score,
                                                       y=35)
        self._display_high_score = functools.partial(self._display_score,
                                                     y=100)
        self._display_player_score(0)
        self._display_high_score(self._high_score)
Exemple #5
0
    def _activate(self):
        """Add the ability to catch a ball when it collides with the
        paddle.
        """
        self.game.paddle.ball_collide_callbacks.append(self._catch)

        # Monitor for spacebar presses to release a caught ball.
        receiver.register_handler(pygame.KEYUP, self._release_ball)
Exemple #6
0
 def _convert_to_laser(self):
     try:
         self._convert()
     except StopIteration:
         # Conversion finished.
         self._to_laser = False
         # Start monitoring for spacebar presses for firing bullets.
         receiver.register_handler(pygame.KEYUP, self._fire)
Exemple #7
0
    def show(self):
        if not self._registered:
            receiver.register_handler(pygame.KEYUP, self._on_keyup)
            self._registered = True
        if not self._init:
            self._init = True
            self._screen.blit(pygame.Surface((600, 650)), (0, TOP_OFFSET))
        ptext.draw('POWERUPS', (210, 200),
                   fontname=ALT_FONT,
                   fontsize=32,
                   color=(255, 255, 255))
        left, top = 30, 270
        for anim, name, desc in self._powerups:
            if self._display_count % 4 == 0:
                image, _ = next(anim)
                self._screen.blit(image, (left, top))
                ptext.draw(name.upper(),
                           (left + image.get_width() + 20, top - 3),
                           fontname=ALT_FONT,
                           fontsize=20,
                           color=(255, 255, 255))
                ptext.draw(desc.upper(), (left, top + 25),
                           fontname=ALT_FONT,
                           fontsize=14,
                           color=(255, 255, 255))
            left += 180
            if left > 400:
                left = 30
                top += 100

        if self._display_count % 15 == 0:
            self._text_color_1 = next(self._text_colors_1)
            self._text_color_2 = next(self._text_colors_2)
        ptext.draw('SPACEBAR TO START', (50, 500),
                   fontname=ALT_FONT,
                   fontsize=48,
                   color=self._text_color_1,
                   shadow=(1.0, 1.0),
                   scolor="grey")
        ptext.draw('OR ENTER LEVEL', (160, 575),
                   fontname=ALT_FONT,
                   fontsize=32,
                   color=self._text_color_2)
        self._user_input_pos = ptext.draw(self._user_input, (280, 625),
                                          fontname=ALT_FONT,
                                          fontsize=40,
                                          color=(255, 255, 255))[1]
        ptext.draw(
            'Based on original Arkanoid game\nby Taito Corporation 1986',
            (100, 700),
            align='center',
            fontname=ALT_FONT,
            fontsize=24,
            color=(128, 128, 128))
        self._display_count += 1
Exemple #8
0
    def test_register_multiple_handlers(self):
        def handler1():
            pass

        def handler2():
            pass

        receiver.register_handler('foo', handler1, handler2)

        self.assertIn(handler1, receiver._handlers['foo'])
        self.assertIn(handler2, receiver._handlers['foo'])
Exemple #9
0
    def test_register_multiple_handlers(self):
        def handler1():
            pass

        def handler2():
            pass

        receiver.register_handler('foo', handler1, handler2)

        self.assertIn(handler1, receiver._handlers['foo'])
        self.assertIn(handler2, receiver._handlers['foo'])
Exemple #10
0
    def __init__(self, game):
        super().__init__(game)

        # The ball and paddle are kept invisible at the very start.
        self.game.paddle.visible = False
        self.game.ball.visible = False

        # Register the event handlers for paddle control.
        receiver.register_handler(pygame.KEYDOWN, self.game.handler_move_left,
                                  self.game.handler_move_right)
        receiver.register_handler(pygame.KEYUP, self.game.handler_stop)
Exemple #11
0
    def __init__(self, game):
        super().__init__(game)

        # The ball and paddle are kept invisible at the very start.
        self.game.paddle.visible = False
        self.game.ball.visible = False

        # Register the event handlers for paddle control.
        receiver.register_handler(pygame.KEYDOWN,
                                  self.game.handler_move_left,
                                  self.game.handler_move_right)
        receiver.register_handler(pygame.KEYUP, self.game.handler_stop)
Exemple #12
0
    def __init__(self, sensor):
        self._sensor = sensor
        self._clock = pygame.time.Clock()
        self._screen = self._create_screen()
        self._background = self._create_background()
        self._display_logo()
        self._display_score_titles()
        self._high_score = load_high_score()
        self._start_screen = StartScreen(self._start_game, sensor)
        self._game = None
        self._running = True

        def quit_handler(event):
            self._running = False

        receiver.register_handler(pygame.QUIT, quit_handler)

        self._display_player_score = functools.partial(self._display_score,
                                                       y=35)
        self._display_high_score = functools.partial(self._display_score,
                                                     y=100)
        self._display_player_score(0)
        self._display_high_score(self._high_score)
Exemple #13
0
 def __init__(self, game):
     super().__init__(game)
     self.game.paddle.visible = False
     self.game.ball.visible = False
     receiver.register_handler(pygame.KEYDOWN, self.game.handler_move_left,
                               self.game.handler_move_right)
     receiver.register_handler(pygame.KEYUP, self.game.handler_stop)
     #---- kong ----
     receiver.register_handler(pygame.KEYUP, self.game.handler_quit)
Exemple #14
0
 def test_register_handler_raises_exception_when_no_handler(self):
     with self.assertRaises(AssertionError):
         receiver.register_handler('foo')
Exemple #15
0
 def _convert_to_laser(self):
     try:
         self._convert()
     except StopIteration:
         self._to_laser = False
         receiver.register_handler(pygame.KEYUP, self._fire)
Exemple #16
0
 def _activate(self):
     self.game.paddle.ball_collide_callbacks.append(self._catch)
     receiver.register_handler(pygame.KEYUP, self._release_ball)
Exemple #17
0
 def test_register_handler_raises_exception_when_no_handler(self):
     with self.assertRaises(AssertionError):
         receiver.register_handler('foo')
Exemple #18
0
    def show(self):
        """Display the start screen and register event listeners for
        capturing keyboard input.

        This method is designed to be called repeatedly by the main game loop.
        """
        if not self._registered:
            receiver.register_handler(pygame.KEYUP, self._on_keyup)
            self._registered = True

        if not self._init:
            self._init = True
            self._screen.blit(pygame.Surface((600, 650)), (0, TOP_OFFSET))

        ptext.draw('POWERUPS', (210, 200),
                   fontname=ALT_FONT,
                   fontsize=32,
                   color=(255, 255, 255))

        left, top = 30, 270

        for anim, name, desc in self._powerups:
            if self._display_count % 4 == 0:
                image, _ = next(anim)
                self._screen.blit(image, (left, top))
                ptext.draw(name.upper(), (left + image.get_width() + 20,
                                          top-3),
                           fontname=ALT_FONT,
                           fontsize=20,
                           color=(255, 255, 255))
                ptext.draw(desc.upper(), (left, top + 25),
                           fontname=ALT_FONT,
                           fontsize=14,
                           color=(255, 255, 255))
            left += 180

            if left > 400:
                left = 30
                top += 100

        if self._display_count % 15 == 0:
            self._text_color_1 = next(self._text_colors_1)
            self._text_color_2 = next(self._text_colors_2)

        ptext.draw('SPACEBAR TO START', (50, 500),
                   fontname=ALT_FONT,
                   fontsize=48,
                   color=self._text_color_1,
                   shadow=(1.0, 1.0),
                   scolor="grey")

        ptext.draw('OR ENTER LEVEL', (160, 575),
                   fontname=ALT_FONT,
                   fontsize=32,
                   color=self._text_color_2)

        self._user_input_pos = ptext.draw(self._user_input, (280, 625),
                                          fontname=ALT_FONT,
                                          fontsize=40,
                                          color=(255, 255, 255))[1]

        ptext.draw('Based on original Arkanoid game\n'
                   'by Taito Corporation 1986',
                   (100, 700),
                   align='center',
                   fontname=ALT_FONT,
                   fontsize=24,
                   color=(128, 128, 128))

        self._display_count += 1