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

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.1.0.tar.gz (12.2 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.1.0-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: game_state-2.1.0.tar.gz
  • Upload date:
  • Size: 12.2 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.1.0.tar.gz
Algorithm Hash digest
SHA256 18b35ee55ef1c4f53004570f82d8b6cbb78888054b7493dce752555bf4a546eb
MD5 3f9791bc8b9baa3e031fdc5dc37d5a98
BLAKE2b-256 be5642528bff5e79b93c399abcbd0d84aba66941e541abfe6154df39c7a3f16d

See more details on using hashes here.

Provenance

The following attestation bundles were made for game_state-2.1.0.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: game_state-2.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.4 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1a2521484d0d552244cabd560aa752cce95d9d9a092010cbf433314d06ae8ed9
MD5 409ba119952a9f9ddd5903bc466c9b16
BLAKE2b-256 b13f07872711436ed537a0cb6c1a7faea6dc606110290e1b1adf5d1d4aefb2b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for game_state-2.1.0-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