Skip to main content

A pygame utility package that allows you to handle different screens in an organized manner.

Project description

PyPI Github Releases Downloads PyPI Downloads License Docs Versions

Game-State

A pygame utility package that allows you to handle different screens in an organized manner.

Table of Contents

Analytics

Alt

Requirements

This library supports python versions 3.8 - 3.14.

Installation

Create and activate a virtual environment in your workspace (optional) and run the following command-

pip install game_state

Note: This package does not have any dependancy on pygame, hence you will need to install them separately on your own. This gives you the freedom to work with pygame, pygame-ce or any of it's forks.

Getting Started

This is an example of creating two screens. One displaying green colour and the other blue with a player.

import pygame

from game_state import State, StateManager


GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
speed = 200
pygame.init()
pygame.display.init()
pygame.display.set_caption("Game State Example")


class MainMenuState(State, state_name="MainMenu"):
   def process_event(self, event: pygame.event.Event) -> None:
      if event.type == pygame.QUIT:
            self.manager.is_running = False

      if event.type == pygame.KEYDOWN and event.key == pygame.K_w:
            self.manager.change_state("Game")

   def process_update(self, dt: float) -> None:
      self.window.fill(GREEN)
      pygame.display.update()


class GameState(State, state_name="Game"):
   def __init__(self) -> None:
      self.player_x = 250

   def process_event(self, event: pygame.event.Event) -> None:
      if event.type == pygame.QUIT:
            self.manager.is_running = False

      if event.type == pygame.KEYDOWN and event.key == pygame.K_w:
            self.manager.change_state("MainMenu")

   def process_update(self, dt: float) -> None:
      self.window.fill(BLUE)
      pressed = pygame.key.get_pressed()
      if pressed[pygame.K_a]:
            self.player_x -= speed * dt

      if pressed[pygame.K_d]:
            self.player_x += speed * dt

      pygame.draw.rect(
            self.window,
            "red",
            (
               self.player_x,
               100,
               50,
               50,
            ),
      )

      pygame.display.update()

def main() -> None:
   screen = pygame.display.set_mode((500, 600))

   state_manager = StateManager(screen)
   state_manager.load_states(MainMenuState, GameState)
   state_manager.change_state("MainMenu")

   clock = pygame.time.Clock()

   while state_manager.is_running:
      dt = clock.tick(60) / 1000

      for event in pygame.event.get():
            state_manager.current_state.process_event(event)

      state_manager.current_state.process_update(dt)

if __name__ == "__main__":
   main()

You can have a look at the game state guide for a more detailed explaination.

Links

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

game_state-2.0.3.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

game_state-2.0.3-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file game_state-2.0.3.tar.gz.

File metadata

  • Download URL: game_state-2.0.3.tar.gz
  • Upload date:
  • Size: 11.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for game_state-2.0.3.tar.gz
Algorithm Hash digest
SHA256 1213e3a6802478a4fe5d1d6d132637d4353f7e3684f218e5a71b7d3dfd0336ee
MD5 029858d14d18ec47e985b8becd67afa5
BLAKE2b-256 8d4776d45439b8b53232956ed460efda46bf8e9e5f280c08a5b5520ab47fee43

See more details on using hashes here.

Provenance

The following attestation bundles were made for game_state-2.0.3.tar.gz:

Publisher: python-publish.yml on Jiggly-Balls/game-state

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file game_state-2.0.3-py3-none-any.whl.

File metadata

  • Download URL: game_state-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for game_state-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ade4c3bd736d2f483180df48cad96c73f9bb618fd76c0e3cf51cb8ae1ac305bc
MD5 b2aa43c60993ffefad06a30d17bfd217
BLAKE2b-256 e162b1591e0373ec8f65be0e4101db4d78a9bc8505b2be526c8246f50fdd772d

See more details on using hashes here.

Provenance

The following attestation bundles were made for game_state-2.0.3-py3-none-any.whl:

Publisher: python-publish.yml on Jiggly-Balls/game-state

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page