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)
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()