파이게임 상용구 2022년 4월

10141 단어 gamedevpython
나는 gamedev에 약간 파고들고 있습니다. 부분적으로는 더 잘 이해하기 위해서이고 부분적으로는 데이터 파이프라인을 작성하는 것보다 내 두뇌/기술의 다른 부분을 확장하기 때문이지만 대부분은 내 9살 Wyatt로 설계한 경험 때문입니다.

파이게임 상용구



여러 파이게임 상용구 템플릿을 보았지만 모두 globl 변수에 크게 의존하는 것 같습니다. 그것은 내가 일반적으로 개발하는 방식이 아닙니다. 나는 pip 설치, 실행, 가져오기, 테스트, 모든 좋은 것들을 할 수 있는 패키지를 원합니다.

나의 현재 스타터



현재 가지고 있는 것은 github에 있는 단일 모듈 스타터 패키지이므로 설치하고 아주 적은 코드로 게임 빌드를 시작할 수 있습니다.

설치



GitHub의 패키지이므로 git+ 접두사를 사용하여 설치할 수 있습니다.

pip install git+https://github.com/WaylonWalker/pygame-starter


예제 게임



Game에서 상속하고 호출하여 빠른 게임을 만들 수 있습니다..run() . 이 예제에서는 화면을 청록색으로 채울 뿐이지만
모든 게임 로직을 game 메서드에 넣을 수 있습니다.

from pygame_starer import Game

class MyGame(Game):
    def game(self):
        self.screen.fill((128, 255, 255))

if __name__ == "__main__":
    game = MyGame()
    game.run()



시동



다음은 현재game.py의 모습입니다. 시간이 지남에 따라 아마 업데이트할 것이고 그것으로 하고 싶은 일에 대해 더 많이 알게 될 것입니다.

from typing import Tuple

import pygame


class Game:
    def __init__(
        self,
        screen_size: Tuple[int, int] = (854, 480),
        caption: str = "pygame-starter",
        tick_speed: int = 60,
    ):
        """

        screen_size (Tuple[int, int]): The size of the screen you want to use, defaults to 480p.
        caption (str): the name of the game that will appear in the title of the window, defaults to `pygame-starter`.
        tick_speed (int): the ideal clock speed of the game, defaults to 60

        ## Example Game

        You can make a quick game by inheriting from Game, and calling
        `.run()`.  This example just fills the screen with an aqua color, but
        you can put all of your game logic in the `game` method.

        ```

 python
        from pygame_starer import Game

        class MyGame(Game):
            def game(self):
                self.screen.fill((128, 255, 255))

        if __name__ == "__main__":
            game = MyGame()
            game.run()



        ```
        """
        pygame.init()
        pygame.display.set_caption(caption)

        self.screen_size = screen_size
        self.screen = pygame.display.set_mode(self.screen_size)
        self.clock = pygame.time.Clock()
        self.tick_speed = tick_speed

        self.running = True
        self.surfs = []

    def should_quit(self):
        """check for pygame.QUIT event and exit"""
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.running = False

    def game(self):
        """
        This is where you put your game logic.

        """
        ...

    def reset_screen(self):
        """
        fill the screen with black
        """
        self.screen.fill((0, 0, 0))

    def update(self):
        """
        run one update cycle
        """
        self.should_quit()
        self.reset_screen()
        self.game()
        for surf in self.surfs:
            self.screen.blit(surf, (0, 0))
        pygame.display.update()
        self.clock.tick(self.tick_speed)

    def run(self):
        """
        run update at the specified tick_speed, until exit.
        """
        while self.running:
            self.update()
        pygame.quit()


if __name__ == "__main__":
    game = Game()
    game.run()

좋은 웹페이지 즐겨찾기