240 likes | 398 Views
Meet Pygame. Noah Kantrowitz June 8, 2007. The Basics. Cross-platform Based on SDL (don’t quote me on that) Handle input (keyboard, mouse) and output (graphics, audio). Starting Up. import pygame pygame.init() Cue music. The Screen. screen = pygame.display.set_mode((x, y))
E N D
Meet Pygame • Noah Kantrowitz • June 8, 2007
The Basics • Cross-platform • Based on SDL (don’t quote me on that) • Handle input (keyboard, mouse) and output (graphics, audio)
Starting Up • import pygame • pygame.init() • Cue music ...
The Screen • screen = pygame.display.set_mode((x, y)) • screen = pygame.display.get_surface() • pygame.display.flip() • pygame.display.update(dirty)
Surfaces • The basic element of graphics • pygame.image.load(file) • .convert_alpha() vs .set_colorkey((r,g,b)) • dest.blit(src, (x, y))
JPEG PNG GIF BMP PCX TGA TIF LBM PBM XPM Formats • Native support for the following: • SVG will need to worked out • Stay tuned ...
The Loop • while True: <timing> <event handling> <update phase> <draw phase>
The Loop • while True:<timing> <event handling> <update phase> <draw phase>
Timing • from pygame.time import Clock • clock = Clock() • delta = clock.tick(30)
The Loop • while True: <timing><event handling> <update phase> <draw phase>
Event Handling • for evt in pygame.event.get(): if evt.type == pygame.QUIT: sys.exit() ...
QUIT KEYUP KEYDOWN MOUSEMOTION MOUSEBUTTONUP MOUSEBUTTONDOWN Event Handling • Other types:
Key Events • evt.key == pygame.K_a • See the Pygame documentation for the full list of key constants.
Mouse Events • evt.pos • evt.button (for the button events)
The Loop • while True: <timing> <event handling><update phase> <draw phase>
Sprites • pygame.sprite.Sprite • class Foo(Sprite): • Must call superclass __init__() • .image, .rect
Groups • pygame.sprite.Group • RenderUpdates, OrderedUpdates • .add(), .remove() • .update(*args) • More on these in a moment
The Loop • while True: <timing> <event handling> <update phase><draw phase>
Drawing • .draw(dest) • Dirty updates • pygame.draw.update(dirty)
top bottom left right topleft bottomleft topright bottomright midtop midbottom midleft midright center centerx centery size width height Rects • pygame.Rect(left,top,width,height) • surf.get_rect()Always at (0,0) • Attributes:
Collisions • Rect-based • spritecollide(sprite,group,kill) • spritecollideany(sprite,group) • groupcollide(group1,group2,kill1,kill2)
Sound • pygame.mixer.Sound(file) • .play(), .stop() • pygame.mixer.music
Text • Try to avoid it for now.
More? • http://www.pygame.org/docs • Email me. (noah@laptop.org)