えくすとらんのブログ: 続 続 pygletさわってみた

続 続 pygletさわってみた

昨日つくったプログラムを少し改造してみた

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyglet

from pyglet.window import mouse
from pyglet.window import key

window = pyglet.window.Window(width=600, height=240, caption='Sprite animation')

usa_image = pyglet.resource.image('usa.png')
usa_image.anchor_x = usa_image.width / 2
usa_image.anchor_y = usa_image.height / 2

usa_sprite = pyglet.sprite.Sprite(img=usa_image, x=20, y=30)
usa_run = 1

@window.event
def on_draw():
window.clear()
usa_sprite.draw()

@window.event
def on_key_press(symbol, modifiers):
if symbol == key.RIGHT:
usa_sprite.x += 10
elif symbol == key.LEFT:
usa_sprite.x -= 10
elif symbol == key.UP:
usa_sprite.y += 10
elif symbol == key.DOWN:
usa_sprite.y -= 10
うんわかりやすい!

おお ひとまずこれで画像をキーボードで動かすことができるようになった
えくすとらんの考えているソフトにはこの動きでもいい
....がこれではアクションゲームやシューティングには使えないなぁ
なめらかに動かすにはやはりupdate(dt)をつかって
キーを押している時間*距離したほうがよさそう

そして...
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyglet

from pyglet.window import mouse
from pyglet.window import key

window = pyglet.window.Window(width=600, height=240, caption='Sprite animation')

usa_image = pyglet.resource.image('usa.png')
usa_image.anchor_x = usa_image.width / 2
usa_image.anchor_y = usa_image.height / 2

usa_sprite = pyglet.sprite.Sprite(img=usa_image, x=20, y=30)

keys = pyglet.window.key.KeyStateHandler()


def update(dt):
    window.push_handlers(keys)
    left = keys[pyglet.window.key.LEFT]
    right = keys[pyglet.window.key.RIGHT]
    up = keys[pyglet.window.key.UP]
    down = keys[pyglet.window.key.DOWN]

    if up and down:
        None
    elif up:
        usa_sprite.y += dt * 300
        print("うえ")
    elif down:
        usa_sprite.y -= dt * 300
        print("した")
    if right and left:
        None
    elif right:
        usa_sprite.x += dt * 300
        print("みぎ")
    elif left:
        usa_sprite.x -= dt * 300
        print("ひだり")

@window.event
def on_draw():
    window.clear()
    usa_sprite.draw()



pyglet.clock.schedule_interval(update, 1 / 60.0)

pyglet.app.run()

こんな感じにしてみた

すると.....




よし!いい感じ^^

あとはこのキャラを複製して配置後クリックでリスト表示なんかできれば
いいんだけど...まだまだ道は遠そうだなぁ

0 件のコメント:

コメントを投稿

 久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...