Skip to content

Instantly share code, notes, and snippets.

@jdmichaud
Last active September 6, 2018 16:53
Show Gist options
  • Save jdmichaud/814ff322e9ec68a0b5f3d4689b7db2c9 to your computer and use it in GitHub Desktop.
Save jdmichaud/814ff322e9ec68a0b5f3d4689b7db2c9 to your computer and use it in GitHub Desktop.
Simple pygame example
import sys
import pygame
# Something that look like object literal
class Object:
def __init__(self, **kwds):
self.__dict__.update(kwds)
g_event_map = {}
def addEventListener(event, handler):
g_event_map[event] = handler
def removeEventListener(event, handler):
del g_event_map[event]
def eventLoop(*args):
while True:
for event in pygame.event.get():
if event.type in g_event_map:
if (g_event_map[event.type](event)):
draw(*args)
def quit(event):
pygame.display.quit()
pygame.quit()
sys.exit()
def keyDown(event):
print(event)
if event.key == 27:
quit(event)
def mouseDown(event):
print(event)
def mouseUp(event):
print(event)
def mouseMove(event, model):
print(f'mouseMove {event} {model.pos.x} {model.pos.y}')
model.pos.x = event.pos[0] - 10
model.pos.y = event.pos[1] - 10
return True
def init(size):
pygame.init()
return pygame.display.set_mode(size)
def draw(model):
model.screen.fill((0, 0, 0))
model.pxarray[model.pos.x, model.pos.y] = 0xFF00FF
pygame.display.flip()
def test():
size = width, height = 512, 512
screen = init(size)
pxarray = pygame.PixelArray(screen)
pos = Object(x=10, y=10)
model = Object(
screen=screen,
pxarray=pxarray,
pos=pos
)
draw(model)
addEventListener(pygame.QUIT, quit)
addEventListener(pygame.MOUSEBUTTONDOWN, mouseDown)
addEventListener(pygame.MOUSEBUTTONUP, mouseUp)
addEventListener(pygame.MOUSEMOTION, lambda event: mouseMove(event, model))
addEventListener(pygame.KEYDOWN, keyDown)
eventLoop(model)
if __name__ == "__main__":
test()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment