Updated on 2024-12-18 (水) 09:41:29 (50d)
2023-11-21.jpg
 

2024年度

参加される方へ

  • ご自身のPCで参加される方は、事前に下記の準備が完了していると当日スムーズに開始できます。
  • ご不明な場合は当日会場で設定しますので、15分程度早めに集合ください。

参考:Pythonでエクセルに画像ファイルを貼り付ける

プログラム例:jump.py

  • 最初に、ライブラリpygletを追加します。
    !pip install -U pyglet
  • 続いて、次のプログラムを実行します。
    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() # 全体のスタート

過去の実施