Python Game Development - Pygame vs. Pyglet: Part 1
Here, you’ll find basic comparisons between Pygame and Pyglet, showing you how to accomplish the same tasks in each. As I learn, more posts on the subject will be made.
Get a blank window to come up #
Pygame #
import pygame
pygame.init()
screen = pygame.display.set_mode((800,600))
if __name__ == "__main__":
while True:
pygame.display.flip()
Pyglet #
import pyglet
screen = pyglet.window.Window(800,600)
if __name__ == "__main__":
pyglet.app.run()
Clear Screen #
Pygame #
import pygame
pygame.init()
screen = pygame.display.set_mode((800,600))
if __name__ == "__main__":
while True:
screen.fill((0,0,0))
pygame.display.flip()
Pyglet #
import pyglet
screen = pyglet.window.Window(800,600)
@screen.event
def on_draw():
screen.clear()
if __name__ == "__main__":
pyglet.app.run()
Control Frames Per Second (FPS) #
Pygame #
import pygame
pygame.init()
screen = pygame.display.set_mode((800,600))
clock = pygame.time.Clock()
def update():
#update objects here
if __name__ == "__main__":
while True:
update()
pygame.display.flip()
clock.tick(30)
Pyglet #
import pyglet
screen = pyglet.window.Window(800,600)
def update(dt):
#update objects here
if __name__ == "__main__":
pyglet.clock.schedule_interval(update, 1/120.0)
pyglet.app.run()
Handle events and closing application with Key_ESCAPE #
Pygame #
import pygame, sys
from pygame.locals import *
running = True
pygame.init()
screen = pygame.display.set_mode((800,600))
clock = pygame.time.Clock()
def handleEvents():
global running
for event in pygame.event.get():
if (event.type == QUIT) or (event.type == KEYDOWN and event.key == K_ESCAPE):
running = False
if __name__ == "__main__":
while running:
handleEvents()
pygame.display.flip()
clock.tick(30)
pygame.quit()
sys.exit()
Pyglet #
Note: Pyglet handles the Escape key event by default. This example shows you how to handle when the “a” key is pressed.
import pyglet
from pyglet.window import key
screen = pyglet.window.Window(800,600)
@screen.event
def on_key_press(symbol, modifiers):
if symbol == key.A:
print 'You pressed A'
def update(dt):
#update objects here
if __name__ == "__main__":
pyglet.clock.schedule_interval(update, 1/120.0)
pyglet.app.run()
Check out Part 2
28
Kudos
28
Kudos