Skip to main content

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

Utility functions

# 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


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)

Uploaded Source

Built Distribution

pygamepal-0.3.5-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

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

Hashes for pygamepal-0.3.5.tar.gz
Algorithm Hash digest
SHA256 83d4a61cbe6ea10676176d587ef982b5a96412ac8f0dfc92780a4fd06224614a
MD5 15b6871a4f52eb15ce3c6adf7d10fdbd
BLAKE2b-256 a40f2ab276086eee9744361526829cdad47801d84278983c3748381bd4463d45

See more details on using hashes here.

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

Hashes for pygamepal-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 7b2c48c8db797ad720caeac26230bc8a5ebc0391550b287ab0d8ff31100b3353
MD5 8037813a9dc3511e911b839cf5136720
BLAKE2b-256 f5d54c9bf42c2f9fa66cb8ed64c715dfd1bd1f5010879278f2e0dcbf39c2a9ee

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