diff --git a/snake/game_object.py b/snake/game_object.py index 354c653..ee2a3b5 100644 --- a/snake/game_object.py +++ b/snake/game_object.py @@ -1,3 +1,6 @@ class GameObject: def draw(self, surface): + pass + + def update(self): pass \ No newline at end of file diff --git a/snake/main.py b/snake/main.py index 30b6957..b0eec13 100644 --- a/snake/main.py +++ b/snake/main.py @@ -4,13 +4,18 @@ from input_manager import InputManager from snake import Snake from game_object import GameObject -def draw(window: Window, game_objs: list[GameObject]) -> None: +def draw_all(window: Window, game_objs: list[GameObject]) -> None: window.reset() for obj in game_objs: window.draw_object(obj) +def update_all(game_objs: list[GameObject]) -> None: + for obj in game_objs: + obj.update() + + if __name__ == '__main__': window = Window(title='Snake', size=(800, 600), background_color=(0, 128, 0)) input_manager = InputManager() @@ -27,7 +32,8 @@ if __name__ == '__main__': while last_input != InputManager.QUIT: last_input = input_manager.process_input() - draw(window, game_objs) + draw_all(window, game_objs) + update_all(game_objs) clock.tick(framerate) pygame.display.flip() diff --git a/snake/snake.py b/snake/snake.py index 9cf3d67..e41804b 100644 --- a/snake/snake.py +++ b/snake/snake.py @@ -12,4 +12,16 @@ class Snake(GameObject): def draw(self, surface: pygame.Surface) -> None: for segment in self.__segments: - segment.draw(surface) \ No newline at end of file + segment.draw(surface) + + def update(self) -> None: + head_pos = self.__segments[0].get_position() + head_radius = self.__segments[0].get_radius() + head_color = self.__segments[0].get_color() + + new_head = SnakeSegment(center=(head_pos[0]-2*head_radius, head_pos[1]), + radius=head_radius, + color=head_color) + + self.__segments.insert(0, new_head) + self.__segments.pop() \ No newline at end of file diff --git a/snake/snake_segment.py b/snake/snake_segment.py index f504076..07a860c 100644 --- a/snake/snake_segment.py +++ b/snake/snake_segment.py @@ -12,4 +12,13 @@ class SnakeSegment(GameObject): pygame.draw.circle(surface=surface, color=self.__color, center=self.__center, - radius=self.__radius) \ No newline at end of file + radius=self.__radius) + + def get_position(self) -> tuple: + return self.__center + + def get_radius(self) -> int|float: + return self.__radius + + def get_color(self) -> tuple: + return self.__color \ No newline at end of file