Exemplo n.º 1
0
class SpriteListTests(TestCase):

    def setUp(self):
        self.factory = TEST_GAME_CONTEXT.tile_factory
        self.tile = self.factory.get('g')
        self.frame = Frame(TEST_GAME_CONTEXT.screen, Rect(40,50, 160,160))
        self.sprite = Sprite(self.frame, self.tile, Vector(1,1), speed=2)
    
    @showdoc
    def test_sprite_list(self):
        """Two sprites are moving."""
        sprites = SpriteList()
        s1 = Sprite(self.frame, self.factory.get('g'), pos=Vector(1,0), speed=2)
        s2 = Sprite(self.frame, self.factory.get('b'), pos=Vector(1,1), speed=4)
        sprites.append(s1)
        sprites.append(s2)
        s1.add_move(RIGHT)
        s1.add_move(DOWN)
        s2.add_move(DOWN)
        while sprites.is_moving():
            sprites.update()
            self.frame.clear()
            sprites.draw()
            pygame.display.update()
            time.sleep(SHORT_DELAY)
Exemplo n.º 2
0
 def __init__(self, screen, egen, title_rect, image, menu, menu_rect,
              moves):
     self.screen = screen
     self.events = egen
     self.events.add_callback(self)
     frame = Frame(self.screen, title_rect)
     self.title = ImageBox(frame, image)
     frame = Frame(self.screen, menu_rect)
     self.menu = TextMenuBox(frame, menu, self.events, moves)
Exemplo n.º 3
0
class FrameTests(TestCase):

    def setUp(self):
        self.screen = Screen(RESOLUTION, BACKGROUND_IMAGE)
        self.frame = Frame(self.screen, Rect(50, 50, 100, 100))

    @graphictest
    def test_blit(self):
        """image drawn into frame, then cleared."""
        bitmap = image.load(TILE).convert()
        dest = Rect(32, 16, 32, 32)
        source = Rect(0, 0, 32, 32)
        self.frame.blit(bitmap, dest, source)
        next_frame()
        self.frame.clear()

    @graphictest
    def test_text(self):
        """Text drawn into frame, then cleared."""
        self.frame.print_text('Hello Frame', Vector(50,50), \
            DEMIBOLD_BIG, CYAN )
        next_frame()
        self.frame.clear()

    def test_get_dest_rect(self):
        """Adds rectangle values to frame position."""
        rect = Rect(10, 20, 20, 31)
        dest = self.frame.get_dest_rect(rect)
        self.assertEqual(dest, Rect(60, 70, 20, 31))
Exemplo n.º 4
0
 def create_status_box(self):
     frame = Frame(self.game.screen, Rect(660, 20, 200, 200))
     data = {
         'score': 0,
         'level': 1,
     }
     self.status_box = DictBox(frame, data)
Exemplo n.º 5
0
 def __init__(self):
     self.game = Game()
     floorframe = Frame(self.game.screen, Rect(0, 542, MAX_X + 36, 596))
     self.floor = TiledMap(self.game, floorframe)
     self.floor.fill_map('#', (25, 2))
     self.player = Player(self.game)
     self.aliens = Group()
     self.create_aliens()
     self.shots = Group()
     self.alien_shots = Group()
Exemplo n.º 6
0
 def test_game_paused(self, screen):
     """Display pause box."""
     frame = Frame(screen, Rect(100, 100, 260, 160))
     egen = EventGenerator()
     egen.add_scripted_keys(['a'])
     gp = GamePausedBox(frame,
                        config.PAUSE_IMAGE,
                        text='test game paused signal',
                        egen=egen)
     gp.draw()
     pygame.display.update()
     gp.activate()
Exemplo n.º 7
0
def show_highscores(new_score, screen, rect, filename, image, textpos):
    """
    Display high score list and gets a name if the score is high enough.
    """
    screen.clear()
    frame = Frame(screen, rect)
    events = EventGenerator()
    hs = HighscoreList(filename)
    hs = HighscoreBox(frame, events, hs, image, textpos)
    hs.enter_score(new_score)
    hs.activate()
    screen.clear()
    pygame.display.update()
Exemplo n.º 8
0
class SpriteTests(TestCase):

    def setUp(self):
        self.factory = TEST_GAME_CONTEXT.tile_factory
        self.tile = self.factory.get('g')
        self.frame = Frame(TEST_GAME_CONTEXT.screen, Rect(40, 50, 160, 160))
        self.sprite = Sprite(self.frame, self.tile, Vector(1, 1), speed=2)

    def test_sprite_pos(self):
        """Sprite has a position."""
        sprite = Sprite(self.frame, self.factory.get('g'), pos=Vector(4, 3))
        self.assertEqual(sprite.pos.x, 4)
        self.assertEqual(sprite.pos.y, 3)

    def move(self):
        """Moves sprite until movement terminates."""
        while self.sprite.is_moving():
            self.sprite.move()
            self.frame.clear()
            self.sprite.draw()
            pygame.display.update()
            time.sleep(SHORT_DELAY)

    @showdoc
    def test_move_sprite(self):
        """Sprite moves east, then southeast."""
        self.sprite.add_move(RIGHT)
        self.sprite.add_move(DOWNRIGHT)
        self.move()
        self.assertEqual(self.sprite.pos.x, 3)
        self.assertEqual(self.sprite.pos.y, 2)

    @showdoc
    def test_priority_move_sprite(self):
        """Sprite moves southeast, then east."""
        self.sprite.add_move(RIGHT)
        self.sprite.add_move(DOWNRIGHT, True)
        self.move()
Exemplo n.º 9
0
 def test_highscores(self, screen):
     """Enters something into the highscore list."""
     os.system('cp %s %s' % (HIGHSCORE_BACKUP, config.HIGHSCORE_FILE))
     hl = HighscoreList(config.HIGHSCORE_FILE)
     events = EventGenerator()
     events.add_scripted_keys(['B', 'C', chr(K_RETURN), chr(K_RETURN)])
     events.add_scripted_event(QUIT_EVENT)
     screen.clear()
     frame = Frame(screen, config.HIGHSCORE_RECT)
     hs = HighscoreBox(frame, events, hl, config.HIGHSCORE_IMAGE,
                       config.HIGHSCORE_TEXT_POS)
     hs.enter_score(33333)
     hs.activate()
     assert hl.scores[0] == (33333, 'BC')
Exemplo n.º 10
0
    def __init__(self):
        self.game = Game()

        self.level = None
        self.pac = None
        self.ghosts = []
        self.status_box = None

        self.create_level()
        self.create_pac()
        self.create_ghosts()
        self.create_status_box()
        frame = Frame(self.game.screen, Rect(660, 220, 200, 200))
        self.lives = BarDisplay(frame, self.game, 3, 'p')

        self.collided = False
        self.mode = None
        self.update_mode = self.update_ingame
Exemplo n.º 11
0
            self.steps -= 1
        if self.steps <= 0:
            self.finished = True
            if self.callback:
                self.callback()

    def draw(self):
        self.tile.draw(self.frame, self.current_vector)


def wait_for_move(move, screen=None, draw=None, delay=0.01):
    while not move.finished:
        if screen:
            screen.clear()
        move.move()
        if draw:
            draw()
        move.draw()
        pygame.display.update()
        time.sleep(delay)


if __name__ == '__main__':
    screen = Screen(Vector(800, 520), '../lightsouls/data/background.png')
    frame = Frame(screen, Rect(64, 64, 320, 320))
    tile_factory = TileFactory('../lightsouls/data/tiles.conf')
    pac = tile_factory.get('b.pac_right')
    move = Move(frame, pac, Vector(50, 50), RIGHT * 2, 200)
    wait_for_move(move, screen)
    time.sleep(1)
Exemplo n.º 12
0
 def test_game_over(self, screen):
     """Display box with Game Over message."""
     frame = Frame(screen, Rect(100, 100, 260, 160))
     go = GameOverBox(frame, config.GAME_OVER_IMAGE,
         font=config.DEMIBOLD_BIG, color=config.WHITE)
     go.activate()
Exemplo n.º 13
0
        self.map.draw()

    def increase(self):
        self.value += 1
        self.redraw()

    def decrease(self):
        if self.value > 0:
            self.value -= 1
        self.redraw()


if __name__ == '__main__':
    screen = Screen()
    tile_factory = TileFactory()
    frame = Frame(screen, Rect(96, 64, 640, 32))
    bananas = BarDisplay(frame, tile_factory, 0, 'b', False)
    frame = Frame(screen, Rect(64, 64, 32, 320))
    cherries = BarDisplay(frame, tile_factory, 10, 'c', True)
    for i in range(15):
        pygame.display.update()
        time.sleep(0.1)
        # screen.clear()
        bananas.increase()
        cherries.decrease()
        pygame.display.update()
    for i in range(15):
        pygame.display.update()
        time.sleep(0.1)
        screen.clear()
        bananas.decrease()
Exemplo n.º 14
0
 def setUp(self):
     self.factory = TEST_GAME_CONTEXT.tile_factory
     self.tile = self.factory.get('g')
     self.frame = Frame(TEST_GAME_CONTEXT.screen, Rect(40,50, 160,160))
     self.sprite = Sprite(self.frame, self.tile, Vector(1,1), speed=2)
Exemplo n.º 15
0
 def setUp(self):
     self.screen = Screen(RESOLUTION, BACKGROUND_IMAGE)
     self.frame = Frame(self.screen, Rect(50, 50, 100, 100))