続いて、次のプログラムを実行します。
import pyglet
from pyglet import shapes
class Player(pyglet.sprite.Sprite):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.vx = 0
self.vy = 0
def update(self, dt): # 毎フレームごとに
self.x += self.vx * dt # 横の動き
self.y += self.vy * dt # 縦の動き
if self.x < 0: # 左端?
self.x += 800 # 右へ
if 800<self.x: # 右端?
self.x -= 800 # 左へ
if 200<player.y : # 空中
self.vy -= 10 # 落ちる速さが増える
else:
self.vy = 0 # 落ちるのをやめる
player.y = 200 # 地面にいる
window = pyglet.window.Window(800, 600)
bg = pyglet.graphics.Batch()
sky = shapes.Rectangle(0,0,800,600,color=(120,120,255),batch=bg)
line = shapes.Rectangle(0,0,800,200,color=(100,50,0),batch=bg)
player_image = pyglet.image.load('player.png') # キャラ画像
player = Player(player_image, x=400, y=200)
sound = pyglet.media.load('coin.wav',streaming=False) # 音
@window.event
def on_key_press(symbol, modifiers): # キー操作
if player.y >200: # 空中なら操作できない
return
if symbol == pyglet.window.key.LEFT: # 左へ
player.vx = -100
elif symbol == pyglet.window.key.RIGHT: # 右へ
player.vx = 100
elif symbol == pyglet.window.key.SPACE: # ジャンプ
player.vy = 200
sound.play()
@window.event
def on_key_release(symbol, modifiers): # キーを離したら止まる
if symbol in (pyglet.window.key.LEFT, pyglet.window.key.RIGHT):
player.vx = 0
@window.event
def on_draw(): # 描画
window.clear() # 消す
bg.draw() # 赤い線
player.draw() # キャラ
def update(dt):
player.update(dt) # 繰り返す
pyglet.clock.schedule_interval(update, 1/60)
pyglet.app.run() # 全体のスタート