Esempio n. 1
0
class SnakeScreen(GameScreen):
    
    GAME_OVER_FONT_SIZE = 28
    GAME_OVER_FONT = pygame.font.Font("fonts/forcedsquare/forcedsquare.ttf", GAME_OVER_FONT_SIZE)
    
    def __init__(self, config, grid_size):
        super(SnakeScreen, self).__init__(config, SnakeGameModel(grid_size[0], grid_size[1]))
        screen_size = config.get_config_val("window_size")
        self.game_model = self.model
        self.game_model.initialize()

        self.block_width = int(math.floor(screen_size[0] / grid_size[0]))
        self.block_height = int(math.floor(screen_size[1] / grid_size[1]))

        self.automove_schedule = Scheduler(config.get_config_val("clock_rate"),
          1, self.__automove_snake)

    def __automove_snake(self):
        current_direction = self.game_model.snake.get_orientation()
        self.game_model.move_snake(current_direction)

    def draw_screen(self, window):
        snake_squares = self.game_model.snake.enumerate_snake_squares()

        for snake_pos in snake_squares:
            color = Colors.DIM_GRAY if snake_pos == self.game_model.snake.head else Colors.EBONY
            snake_pos = QuadraticGrid.make_rect(snake_pos, self.block_width, self.block_height)
            pygame.draw.rect(window, color, snake_pos, 0) 

        if self.game_model.food_point:
            fp_rect = QuadraticGrid.make_rect(self.game_model.food_point, self.block_width, self.block_height)
            pygame.draw.rect(window, Colors.NIGHT_GRAY, fp_rect, 0)

        if self.game_model.is_endgame():
            # Render a "Game Over" sign
            game_over_render = SnakeScreen.GAME_OVER_FONT.render("GAME OVER", True, Colors.HUMAN_RED)
            window.blit(game_over_render, (50, 50))

        self.automove_schedule.event()

    def draw_unchanging(self, window):
        super(SnakeScreen, self).draw_unchanging(window)
        original_dims = self.config.get_config_val("window_size")
        pygame.draw.line(window, Colors.MAX_BLACK, (0, 0), (0, original_dims[1]), 10)
        pygame.draw.line(window, Colors.MAX_BLACK, (0, 0), (original_dims[0], 0), 10)
        pygame.draw.line(window, Colors.MAX_BLACK, (original_dims[0], 0), original_dims, 10)
        pygame.draw.line(window, Colors.MAX_BLACK, (0, original_dims[1]), original_dims, 10)
class RandomDrawing(GameLoopEvents):
    """
    Wanted to draw a rectangle but oh, what the hey...ended up with
    an arrow-like object! :))
    """
    
    def __init__(self, config, gamescreen):
        super(RandomDrawing, self).__init__(config, gamescreen)
        self.__game_screen = gamescreen
        self.s = Scheduler(config.get_config_val("clock_rate"), 1, self.__translate)
    
    def loop_event(self):
        super(RandomDrawing, self).loop_event()
        self.s.event()

    def __translate(self):
        self.game_screen.ps.translate(10, 10)
Esempio n. 3
0
    def __init__(self, config, grid_size):
        super(SnakeScreen, self).__init__(config, SnakeGameModel(grid_size[0], grid_size[1]))
        screen_size = config.get_config_val("window_size")
        self.game_model = self.model
        self.game_model.initialize()

        self.block_width = int(math.floor(screen_size[0] / grid_size[0]))
        self.block_height = int(math.floor(screen_size[1] / grid_size[1]))

        self.automove_schedule = Scheduler(config.get_config_val("clock_rate"),
          1, self.__automove_snake)
class SchedulerTests(unittest.TestCase):

    MOCK_FRAME_RATE = 18
    MOCK_EVENT_FREQUENCY = 3

    def setUp(self):
        self.event = Event()
        self.scheduler = Scheduler(
            SchedulerTests.MOCK_FRAME_RATE, SchedulerTests.MOCK_EVENT_FREQUENCY, self.event.happen
        )

    def test_event(self):
        for _ in range(SchedulerTests.MOCK_FRAME_RATE):
            self.scheduler.event()

        self.assertEquals(SchedulerTests.MOCK_EVENT_FREQUENCY, self.event.times_called)

        for _ in range(SchedulerTests.MOCK_FRAME_RATE):
            self.scheduler.event()

        self.assertEquals(SchedulerTests.MOCK_EVENT_FREQUENCY * 2, self.event.times_called)
 def setUp(self):
     self.event = Event()
     self.scheduler = Scheduler(
         SchedulerTests.MOCK_FRAME_RATE, SchedulerTests.MOCK_EVENT_FREQUENCY, self.event.happen
     )
 def __init__(self, config, gamescreen):
     super(RandomDrawing, self).__init__(config, gamescreen)
     self.__game_screen = gamescreen
     self.s = Scheduler(config.get_config_val("clock_rate"), 1, self.__translate)