Skip to main content

A library that improves pygame and makes it structured.

Project description

PyGameX

Description

An easy-to-learn library that makes Pygame more structured and user-friendly. The library has many built-in functions that simplify development at times.

Usage/Examples

Empty template

import PygameX as pygamex


class MainGame(Game):
    pass


MainGame(height=300, width=500, max_fps=60)

Simple game

import PygameX

from PygameX.game import *
from PygameX.all_objects import *

from random import randint


class MainGame(Game):
    background_color = color.BLUE
    object_render_mode = True

    def ready(self):
        player = Circle(
            position=(50, 50),
            radius=25,
            color=(0, 255, 0)
        )
        self.objects["player"] = player

    def on_event(self, event):
        super().on_event(event)

    def on_mouse_pressed(self, mouse):
        if mouse[1] == 1:
            if mouse[2]:
                player = self.objects["player"]
                if PygameX.math.is_point_inside_circle(mouse[0], player):
                    player.color = (randint(0, 255), randint(0, 255), randint(0, 255))

    def update(self):
        player = self.objects["player"]
        keys = PygameX.key.get_pressed()  # List of pressed keys
        if keys[PygameX.key.LEFT]:
            player.position = (player.position[0] - 3, player.position[1])
        if keys[PygameX.key.RIGHT]:
            player.position = (player.position[0] + 3, player.position[1])
        if keys[PygameX.key.UP]:
            player.position = (player.position[0], player.position[1] - 3)
        if keys[PygameX.key.DOWN]:
            player.position = (player.position[0], player.position[1] + 3)


MainGame(width=500, height=300, max_fps=60)

API Reference

Game class init

class MainGame(Game):
    pass


MainGame(width=500, height=300, caption="My first PagameX game!", max_fps=60)
Parameters Type Description
width int Sets the width of the screen
height int Sets the height of the screen
caption string Sets the title of the game
max_fps int Sets the max frame rate of the game process

Game class methods

Ready

def ready(self):
    pass

Called when the game window has been created and started.

Init

def init(self):
    pass

Called before starting the game and initializing pygame.

On quit

def on_quit(self):
    pass

Called when the game is closed.

Quit

quit()

Completes the game cycle.

Update

def update(self):
    pass

Called every time, before rendering and processing the keys.

Render

def render(self):
    pass

Called every time to draw objects.

On event (event)

def on_event(self, event):
    pass

Called every time an interaction event occurs (Includes keystroke events).

Parameter Type Description
event pygame event Pygame event about a pressed key or a set of keys and its status

On mouse pressed (key)

def on_mouse_pressed(self, mouse):
    pass

Called every time an interaction event occurs.

Parameter Type Description
mouse tuple An immutable list containing the position: tuple, pressed key: pygame key, is pressed: boolean

Object render mode

PygameX adds the ability to use objects instead of manually drawing shapes.

To enable this mode, just set object_render_mode to True in your game class.

object_render_mode = True

All that remains to be done is to add objects to the objects dictionary.

Object

Object is the main class of all objects in PygameX, it is usually not used in games because it is a dummy that exists to create other objects such as line, circle, rect.

It has a render function for displaying an object on the game screen.

Rect

The object inheriting the Object having 3 settings: position size color.

Initializing template:

Rect(
    position=(50,50),
    size=(25,25),
    color=(0,255,0)
)

Circle

The object inheriting the Object having 3 settings: position radius color.

Initializing template:

Circle(
    position=(50,50),
    radius=25,
    color=(0,255,0)
)

Line

The object inheriting the Object having 3 settings: point1 point2 color.

Initializing template:

Line(
    point1=(50,50),
    point2=(25,25),
    color=(0,255,0)
)

Creating your own object

Any objects should inherit Object because it contains the render function and is simply more convenient than creating a new class manually. As a result, the dummy of the new class will look like this:

import pygame
from .Object import Object

class MyCustomObject(Object):

    def __init__(self):
        pass
    
    def render(self, screen):
        pass

Let's add the variables position and color inside.

import pygame
from .Object import Object

class MyCustomObject(Object):

    position = (0,0)
    color = (0,0,0)
    
    def __init__(self, position: tuple = (0,0), color: tuple = (0,0,0)):
        self.position = position
        self.color = color
    
    def render(self, screen):
        pass

Now in the render method we will draw our object. In the example, a 50x50 square is simply drawn using our values.

import pygame
from .Object import Object

class MyCustomObject(Object):

    position = (0,0)
    color = (0,0,0)
    
    def __init__(self, position: tuple = (0,0), color: tuple = (0,0,0)):
        self.position = position
        self.color = color
    
    def render(self, screen):
        pygame.draw.rect(screen, self.color, (self.position, (50, 50)))

Now let's try out our object in the game. Let's replace the circle from the example above with our object First, let's save our script in MyCustomObject, and then import it into the game.

import PygameX

from PygameX.game import *
from .MyCustomObject import MyCustomObject  # I immediately import the object

from random import randint


class MainGame(Game):
    background_color = color.BLUE
    object_render_mode = True

    def ready(self):
        player = MyCustomObject(
            position=(50, 50),
            radius=25,
            color=(0, 255, 0)
        )
        self.objects["player"] = player

    def on_event(self, event):
        super().on_event(event)

    def on_mouse_pressed(self, mouse):
        if mouse[1] == 1:
            if mouse[2]:
                player = self.objects["player"]
                if PygameX.math.is_point_inside_circle(mouse[0], player):
                    player.color = (randint(0, 255), randint(0, 255), randint(0, 255))

    def update(self):
        player = self.objects["player"]
        keys = PygameX.key.get_pressed()
        if keys[PygameX.key.LEFT]:
            player.position = (player.position[0] - 3, player.position[1])
        if keys[PygameX.key.RIGHT]:
            player.position = (player.position[0] + 3, player.position[1])
        if keys[PygameX.key.UP]:
            player.position = (player.position[0], player.position[1] - 3)
        if keys[PygameX.key.DOWN]:
            player.position = (player.position[0], player.position[1] + 3)


MainGame(width=500, height=300, max_fps=60)

Scripts

The library provides a quick import of all objects from the library.

from PygameX.all_objects import *

If you don't need to import all the objects, you can import them individually.

from .objects.Rect import Rect # Rect
from .objects.Circle import Circle # Circle
from .objects.Line import Line # Line
from .objects.TextDisplay import TextDisplay # Text

Convenient functions

PygameX provides functions for working with objects quickly.

List of additional functions:

is_point_inside_circle(point: tuple, circle: Circle)

PygameX.math.is_point_inside_circle(mouse_position, my_circle)

is_point_inside_rect(point: tuple, rect: Rect)

PygameX.math.is_point_inside_rect(mouse_position, my_rect)

Installation

Install my library using pip in CMD or PyCharm Console:

pip install PygameX

Authors

Project details


Download files

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

Source Distribution

pygamex-0.2.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

PygameX-0.2-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file pygamex-0.2.tar.gz.

File metadata

  • Download URL: pygamex-0.2.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.0

File hashes

Hashes for pygamex-0.2.tar.gz
Algorithm Hash digest
SHA256 8836b20084e66e60514c47e0f0c07c1f944db25e0d7a804fb929b61d6bc46a3e
MD5 7d0f49fa99ca7a2a449bfd0fd43fa271
BLAKE2b-256 41e70e4b52973c4cac47ce26e478fba8ea411bacec360c63b07497dde9103b7d

See more details on using hashes here.

File details

Details for the file PygameX-0.2-py3-none-any.whl.

File metadata

  • Download URL: PygameX-0.2-py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.0

File hashes

Hashes for PygameX-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 c1ca6973b540990d7d624770f3d3d6fd90cfb64b6f451f28076a5c4f7cb4aef9
MD5 221a10d61af9e9533e537635620d0729
BLAKE2b-256 f81a82f0485100a995a2e547bdb1ddc5e4647d8ad43859d652ee2dd25ac8b2f2

See more details on using hashes here.

Supported by

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