pygame-geometry

Geometry environment for pygame.


License
MIT
Install
pip install pygame-geometry==0.1.2

Documentation

Description

This is a framework based on pygame that allows an easier process for making games. This is so much more than a tool kit. Tested in pygame2 not in pygame1.

Installation

pip install pygame-geometry

Quick examples:

Draw some moving Points and a Circle

from pygame_geometry.abstract import Point, Circle
from pygame_geometry.context import Context
from pygame_geometry import colors

context = Context(name="title") # create a context similar to a pygame surface

p1 = Point(2,2)
p2 = Point(3,2, color=colors.BLUE)
c = Circle(0, -1, radius=2, color=colors.RED)

# main game loop
while context.open:
    # clear the window
    context.clear()
    # check quit event (empty pygame event buffer by doing so)
    context.check()
    # move and zoom around the scene
    context.control()

    # update objects
    p1.rotate(0.01, p2)
    c.x += 0.01

    # show objects
    p1.show(context)
    p2.show(context)
    c.show(context)

    # flip the screen
    context.flip()

Watch the video

Draw Bezier Curves

from pygame_geometry.context import Surface
from pygame_geometry.curves import Trajectory, BezierCurve
from pygame_geometry.abstract import Point
from pygame_geometry import colors

import random

# create objects
surface=Surface(name="Curves demonstration")
l=10
points=[Point(2*x,random.randint(-5,5)) for x in range(l)]
t=Trajectory(points,segment_color=colors.GREEN)
b=BezierCurve(points,segment_color=colors.RED)
n=0
ncp=50 #number construction points

while surface.open:
    # surface stuff
    surface.check()
    surface.clear()
    surface.control()
    surface.show() # show a math grid in background

    # update
    Point.turnPoints([1/1000 for i in range(l)],points)
    n=(n+1)%(ncp+1)
    b.showConstruction(surface,n/ncp)
    p1=b(n/ncp)
    p2=Point(*t(n/ncp))

    # show
    t.show(surface)
    b.show(surface)
    p1.show(surface,color=colors.YELLOW,radius=0.1,fill=True)
    p2.show(surface,color=colors.YELLOW,radius=0.1,fill=True)

    # flip
    surface.flip()

Watch the video

Controls

  • Space: Switch to next mode.
  • Enter: Go back to the center.
  • Up/Down/Right/Left Arrow: Move arround.
  • Right/Left Shift: Zoom in or out.
  • Quit/Escape: Quit.

Geometry objects

Geometry components added:

  • point
  • segment
  • vector
  • line
  • halfline

But also:

  • circle
  • rectangle
  • square
  • polygon
  • triangle
  • bezier curve
  • trajectory

Physics/Maths objects

  • force
  • motion
  • body
  • polynomial
  • perlin noise

Game objects

  • entity
  • anatomy
  • widget
  • menu
  • manager

More technical physics objects

  • material
  • material form
  • material circle
  • material formcollider

Enjoy!