Tags
I'm poking a bit into gamedev. Partly to better understand, partly because it's stretching different parts of my brain/skillset than writing data pipelines does, but mostly for the experience of designing them with my 9yo Wyatt.
pygame boilerplates #
I've seen several pygame boilerplate templates, but they all seem to rely heavily on globl variables. That's just not how I generally develop anything. I want a package that I can pip install, run, import, test, all the good stuff.
My current starter #
What currently have is a single module starter package that is on github so that I can install it and start building games with very little code.
Installation #
Since it's a package on GitHub you can install it with the git+ prefix.
pip install git+https://github.com/WaylonWalker/pygame-starter
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.
from pygame_starer import Game class MyGame(Game): def game(self): self.screen.fill((128, 255, 255)) if __name__ == "__main__": game = MyGame() game.run()
The starter #
Here is what the current game.py
looks like. I will probably update
it as time goes on and I learn more about the things I want to do with
it.
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()