def test_can_increase_speed(self):
        events = [StubEvent(pygame.KEYDOWN, pygame.K_DOWN)]
        game_loop = GameLoop(self.level,
                             StubClock(),
                             StubEventQueue(events),
                             StubRenderer(),
                             StubScoreRepository())

        game_loop._GameLoop__check_events()
        self.assertTrue(self.level.pace._Pace__go_fast)
    def test_cannot_move_block_past_left_border(self):
        events = [StubEvent(pygame.KEYDOWN, pygame.K_LEFT) for i in range(10)]
        game_loop = GameLoop(self.level,
                             StubClock(),
                             StubEventQueue(events),
                             StubRenderer(),
                             StubScoreRepository())

        game_loop._GameLoop__check_events()
        x_pos = self.level.block.x_pos
        self.assertEqual(x_pos, 0)
    def test_can_move_block_right(self):
        events = [StubEvent(pygame.KEYDOWN, pygame.K_RIGHT)]

        game_loop = GameLoop(self.level,
                             StubClock(),
                             StubEventQueue(events),
                             StubRenderer(),
                             StubScoreRepository())

        game_loop._GameLoop__check_events()
        x_pos = self.level.block.x_pos
        self.assertEqual(x_pos, 5)
    def test_can_rotate_block(self):
        events = [StubEvent(pygame.KEYDOWN, pygame.K_UP)]
        game_loop = GameLoop(self.level,
                             StubClock(),
                             StubEventQueue(events),
                             StubRenderer(),
                             StubScoreRepository())

        self.level.block.shape = [[1, 1]]
        game_loop._GameLoop__check_events()
        assumed_shape = [[1],
                         [1]]
        self.assertEqual(self.level.block.shape, assumed_shape)
    def test_cannot_move_block_past_right_border(self):
        events = [StubEvent(pygame.KEYDOWN, pygame.K_RIGHT) for i in range(10)]
        game_loop = GameLoop(self.level,
                             StubClock(),
                             StubEventQueue(events),
                             StubRenderer(),
                             StubScoreRepository())

        game_loop._GameLoop__check_events()
        x_pos = self.level.block.x_pos
        assumed_pos = self.level.grid.width - self.level.block.width()

        self.assertEqual(x_pos, assumed_pos)
    def test_can_drop_block(self):
        events = [StubEvent(pygame.KEYDOWN, pygame.K_SPACE)]
        game_loop = GameLoop(self.level,
                             StubClock(),
                             StubEventQueue(events),
                             StubRenderer(),
                             StubScoreRepository())

        #initial block coordinates are (0, 4) and (0, 5)
        self.level.block.shape = [[1, 1]]
        color = self.level.block.color
        game_loop._GameLoop__check_events()

        #dropped block should be at coordinates (19, 4) and (19, 5)

        grid = self.level.grid.grid[19][4], self.level.grid.grid[19][5]
        assumed = color, color
        self.assertEqual(grid, assumed)
Example #7
0
def main():
    pygame.init()

    display = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
    pygame.display.set_caption("TETRIS")

    block = Block()
    pace = Pace()
    score = Score()
    grid = Grid()
    level = Level(block, grid, score, pace)
    clock = Clock()
    event_queue = Event()
    game_renderer = GameRenderer(display, level)
    ui_renderer = UIRenderer(display)

    name_input = PlayerName(ui_renderer, event_queue)
    game_loop = GameLoop(level, clock, event_queue, game_renderer,
                         score_repository)
    high_scores = HighScores(ui_renderer, event_queue, score_repository)
    main_menu = MainMenu(ui_renderer, event_queue, name_input, game_loop,
                         high_scores)

    main_menu.start()