The banner above was generated by the code below!
This is a proof of concept about how to write a Flash game in RPython. Check the flex-pypy project!
#/usr/bin/env python
"""
This simple example has very little to do with the pygame
chimp example, except that it will act the same (more or less)
and it uses the same resources, only they got converted to
mp3s, pngs.
"""
#Import Modules
from pypy.translator.flex.modules.flex import *
class MyRect:
def __init__(self,x,y,w,h):
self.x, self.y,self.w,self.h = x,y,w,h
SCREEN_W = 468
SCREEN_H = 60
class Game:
def __init__(self):pass
def init(self,screen):
self.screen = screen
screen.layout = 'absolute'
screen.setActualSize(SCREEN_W, SCREEN_H)
screen.addEventListener('mouseMove',mousemotion)
screen.addEventListener('enterFrame',do_loop)
screen.addEventListener('click',chimp_whip)
self.bg = load_sprite("py_background_png");
self.screen.addChild(self.bg)
self.chimp = load_sprite("py_chimp_png");
self.screen.addChild(self.chimp)
self.orig_y = self.chimp.y
img2 = self.fist = load_sprite("py_fist_png")
self.screen.addChild(img2)
img2.move(400,img2.height/2)
self.move = 1
self.spin = 0
self.hit = 0
self.hit_move = 1
self.sfx = {}
self.sfx['whip'] = load_sound_resource("py_punch_mp3")
self.sfx['nohit'] = load_sound_resource("py_whiff_mp3")
def loop(self):
img = self.chimp
if self.spin:
self.spin -= 1
img.rotation = self.spin*24
else:
img.x += self.move * 8
if img.x > SCREEN_W-img.width:
self.move = -1
if img.x < 0:
self.move = 1
if self.hit:
self.hit -= 1
self.fist.y += 6 * self.hit_move
if self.hit <= 5:
self.hit_move = -1
def paint(self,screen):
pass
game = Game()
def mousemotion(e):
img = game.fist
img_halfw = img.width / 2
newx = e.stageX - img_halfw
# don't reach the borders
if e.stageX > SCREEN_W - img_halfw:
newx = SCREEN_W - img.width
if newx <= 0:
newx = 0
img.x = newx
def do_loop(e):
game.loop()
def chimp_whip(e):
img = game.chimp
game.hit = 10
game.hit_move = 1
game.fist.y=game.fist.height/2
if e.stageX > img.x and e.stageX < img.x+img.width:
game.sfx['whip'].play()
game.spin = 20
else:
game.sfx['nohit'].play()
def flash_main( x=1 ):
game.init(castToWindow(x))