A library of classes and helper functions to support game development in Pygame
Project description
PygamePal
A library of classes and functions to support game development in Pygame.
Usage
-
pip install pygamepal
-
Full example, using all pygamepal classes
Contents
Game (create a game with minimal setup) -- Template // Example
self.size = (x, y)
self.caption = 'text'
self.icon = pygame.image.load('imageURL')
self.fps = x
self.screen
self.gameTime
self.init()
self.update(gameTime)
self.draw()
self.quit()
Input -- Key Example // Mouse Example
# create new instance
input = pygamepal.Input(longPressDuration=60)
# update() must be called once per frame
input.update(deltaTime=1)
# key press methods
input.isKeyDown(keycode)
input.isKeyPressed(keycode)
input.isKeyDoublePressed(keycode)
input.isKeyReleased(keycode)
input.getKeyDownDuration(keycode)
input.isKeyLongDown(keycode)
input.isKeyLongPressed(keycode)
input.getKeyLongPressPercentage(keycode)
# mouse button methods
input.isMouseButtonDown(mouseButton)
input.isMouseButtonPressed(mouseButton)
input.isMouseButtonDoublePressed(mouseButton)
input.isMouseButtonReleased(mouseButton)
input.getMouseButtonDownDuration(mouseButton)
input.isMouseButtonLongDown(mouseButton)
input.isMouseButtonLongPressed(mouseButton)
input.getMouseButtonLongPressPercentage(mouseButton)
SpriteImage -- Example // Showcase
# create new instance
spriteImage = pygamepal.spriteImage()
# add one or more sprites, associated with a state
spriteImage.addTextures(firstTexture, *moreTextures, state=None, animationDelay=12, loop=True, hFlip=False, vFlip=False)
# update() must be called once per frame
spriteImage.update()
# draw the current image/animation frame
spriteImage.draw()
# change the current image/animation state
# (does not need to be called for sprite with single state)
spriteImage.setState(state)
# resets the current animation
spriteImage.reset()
spriteImage.pause
Camera -- Example
# creates a new camera instance
camera = pygamepal.Camera(position=(0, 0), size=(640, 480), target=(0, 0), zoom=1, backgroundColour='gray30', borderColour='black', borderThickness=2, clamp=False, clampRect=(0, 0, 1000, 1000), followDelay=0)
# update() must be called once per frame
camera.update(deltaTime=1)
# draws surface to the destinationSurface, using camera attributes
camera.draw(surface, destinationSurface)
Particles -- Example
# creates a new particle emitter
particles = pygamepal.particles(
# emitter attributes
emitterPosition=(0,0), emitterSize=(0,0),
emitterLifetime=100,
emitterVelocity=(0,0), emitterAcceleration=(0,0),
emitterParticleDelay=5,
# particle attributes
particleVelocityMin=(-1,-1), particleVelocityMax=(1,1),
particleAccelerationMin=(0,0), particleAccelerationMax=(0,0),
particleLifetime=100,
particleSize=20,
particleSizeDecay=0.2,
particleColors=None
)
# update() must be called once per frame
particles.update(deltaTime=1)
# call draw() once per frame to draw all particles
particles.draw(surface)
Transitions -- Example // Showcase
Transition types:
- TransitionFade
- TransitionFadeToBlack
- TransitionWipeLeft
- TransitionWipeRight
- TransitionWipeUp
- TransitionWipeDown
- TransitionMoveLeft
- TransitionMoveRight
- TransitionMoveUp
- TransitionMoveDown
Easing functions
- linear
- bounceEaseOut
# creates a new transition instance
transition = pygamepal.TransitionFade(fromSurface=None, toSurface=None, duration=100, easingFunction=linear)
# update() and draw() should be called each game loop frame
transition.update(deltaTime=1)
transition.draw(surface)
# transition properties
transition.duration = x # number of frames (default) / game time in ms
transition.easingFunction = pygampal.bounceEaseOut
# draws text with minimal required parameters
drawText(screen, text, x, y, font=None, antialias=True, color='white', background=None)
# minimal example:
drawText(screen, 'Hello, world!')
# returns a list of sub-textures from a large spritesheet/texture
# the list has the same dimensions as the original texture, but
# can be flattened using flatten(2dList).
splitTexture(texture, newTextureWidth, newTextureHeight)
# simple example, splitting a single 96x32 spritesheet into 4 separate textures:
textureList = splitTexture(texture, 32, 32)
firstTexture = textureList[0][0] # or firstTexture = flatten(textureList)[0]
# flattens a 2d list into a single list
newList = flatten(2dList)
# see above for example
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pygamepal-0.3.5.tar.gz
(18.5 MB
view details)
Built Distribution
pygamepal-0.3.5-py3-none-any.whl
(13.3 kB
view details)
File details
Details for the file pygamepal-0.3.5.tar.gz
.
File metadata
- Download URL: pygamepal-0.3.5.tar.gz
- Upload date:
- Size: 18.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 83d4a61cbe6ea10676176d587ef982b5a96412ac8f0dfc92780a4fd06224614a |
|
MD5 | 15b6871a4f52eb15ce3c6adf7d10fdbd |
|
BLAKE2b-256 | a40f2ab276086eee9744361526829cdad47801d84278983c3748381bd4463d45 |
File details
Details for the file pygamepal-0.3.5-py3-none-any.whl
.
File metadata
- Download URL: pygamepal-0.3.5-py3-none-any.whl
- Upload date:
- Size: 13.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7b2c48c8db797ad720caeac26230bc8a5ebc0391550b287ab0d8ff31100b3353 |
|
MD5 | 8037813a9dc3511e911b839cf5136720 |
|
BLAKE2b-256 | f5d54c9bf42c2f9fa66cb8ed64c715dfd1bd1f5010879278f2e0dcbf39c2a9ee |