예제 #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)
예제 #2
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))
예제 #3
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()