えくすとらんのブログ

pygletさわってみた4

スプライトの座標確認と

ウインドウの端についたら反対側から出てくるようにしてみた

#!/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=600, 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=300, y=300)

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("うえ",usa_sprite.y)
        if usa_sprite.y > 570:
            usa_sprite.y = 30
    elif down:
        usa_sprite.y -= dt * 300
        print("した",usa_sprite.y)
        if usa_sprite.y < 30:
            usa_sprite.y = 570
    if right and left:
        None
    elif right:
        usa_sprite.x += dt * 300
        print("みぎ",usa_sprite.x)
        if usa_sprite.x > 570:
            usa_sprite.x = 30
    elif left:
        usa_sprite.x -= dt * 300
        print("ひだり",usa_sprite.x)
        if usa_sprite.x < 30:
            usa_sprite.x = 570

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



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

pyglet.app.run()

なかなかいい感じ



















これで一応キャラクターは好きな位置にもってこれることがわかった
もう一体くらい登場させて衝突判定とかできたらいいのになぁ
探してみたけれどpygletにそういった関数はないみたい?
cocos2d使ってくれとかという記述を見たような気がするが

sprite中心座標に丸か四角のポイントをつくって当たり判定とか
できたら楽しいだろうなぁ






続々.pygletさわってみた

今日はマウスイベントをちょっと勉強...

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

import pyglet

window = pyglet.window.Window(width=200, height=200, caption='Mouseev')


# MOUSE EVENTS

# mouse press
@window.event
def on_mouse_press(x, y, button, modifiers):
    print('Mouse press')
    print('  x: {}, y: {}, button: {}, modifiers: {}'.format(x, y, button, modifiers)
)

# mouse release
@window.event
def on_mouse_release(x, y, button, modifiers):
    print('Mouse release')
    print('  x: {}, y: {}, button: {}, modifiers: {}'.format(x, y, button, modifiers)
)

# mouse drag
pyglet.app.run()

ウインドウ内をクリックするとカーソル位置座標とクリックボタン名などを
返すようだ

返り値を使えばクリック座標にイメージやスプライトを配置することが
できるかもしれない


続 続 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()

こんな感じにしてみた

すると.....




よし!いい感じ^^

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

続 pyglet さわってみた

おお! なんとか画像を動かすことができた!

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


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=30, y=90)


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

def update(dt):
    usa_sprite.rotation += dt * 360
    usa_sprite.x += dt * 70

pyglet.clock.schedule_interval(update, 0.03)

pyglet.app.run()

これを実行すると




こんな感じになった

キーイベントに抱き合わせればキャラクターを動かせるかも....

もう少し調べてみよう!










久しぶりにプログラミング pygletをさわってみた

前々から作りたいと思っているアプリがある

それはかんたんにゆうと箱庭ゲームのような感じのもので

簡単なオブジェクトに名前をつけマップ上に配置しそれをクリック

するとリスト...あるいはデータが表示されるようなものだ

あえて簡単な(単純な色違いの四角)オブジェクトにしたいのは

用途が広がるからであり、例えば学校の席順から書籍管理に駐車場の車両管理

はたまた航空機の管制からおじいちゃんの薬の置き場所までカバー!

できるのではないかとおもっている?...

ただ...いかんせんえくすとらんは素人...

scratchを使ってなんとなくイメージを作ってみた

オブジェクトに名前をつけて配置するアプリ
(音量注意!)

...が名前はいれることができたもののリストやデータなどはまだ実装できてない

まぁおそらくできない...lol

そんなこんなでおもいたち.しばらく放置ぎみだったプログラミングをまた少しだけ

さわってみることに...

pythonのゲームフレームワークも結構あるみたいだが

自分の今の感じだとpygletがよさそうかななどとおもい

ドキュメントをちらちらみている

ひとまず デスクトップにresourceフォルダを作って
3種類のうさぎのpngチップをいれそれを表示することにした
(権限注意かなぁ)

#!/usr/bin/python
# -*- coding: utf-8 -*-
import pyglet
import resource
from pyglet.window import mouse
from easygui import*
window = pyglet.window.Window()

#リソースフォルダパス
pyglet.resource.path = ["/home/xtoran/Desktop/resource/"]
pyglet.resource.reindex()

#フォルダ中身を代入
usa1 = pyglet.resource.image("usa1.png")
usa2 = pyglet.resource.image("usamae.png")
usa3 = pyglet.resource.image("usaushiro.png")

#ドロー
@window.event
def on_draw():
    window.clear()
    sprite.draw()

def update(dt):
    pass

if __name__ == '__main__':
    sprite = pyglet.sprite.Sprite(usa2, x=100, y=100)

    pyglet.clock.schedule_interval(update, 0.5)
    pyglet.app.run()

なんとか表示されたようだ


























モジュールにeasyguiとかいれているのはあとあとlist表示とかするのに
つかえるかななんておもっている
一応マウスクリックで画面をクリックしてmsgboxがでるところまでは
確認できたので組み合わせ的にはよさそうな感じがする

しかし完成しそうにないので...えくすとらんの思っているような”無料かつ簡単な”アプリがすでにあるよとか...そんなものなら簡単にできちゃったよ とかいうかたはぜひ教えていただければ幸いですm(_ _)m




ああ お店から店員が消える日も近いのかなと思った...

販売所に持っていき

商品をを発券機で登録し発券してもらい貼り付ける

所定の位置などに置いて帰るのだが

そこまでやるのであれば期限が過ぎたものの回収なども

なにも人でなくてもよいような気がしてきた

発券されたものを読み取り期限が来ているものがあれば

ロッカーのようなもので販売し落とし穴式に回収

そのままコンベアーでバックヤードへ

その際振り分けをするようなことも現在の技術があれば可能であろう

レジももう自動化されているところもあるようだし

なんらかの仲介という作業は今後どんどん必要なくなっていくんだろうな

受付 仲介 審判 お金 etc...

なにがいるものだったっけ...


雪桜

本日,日本海側は記録的な寒波に見舞われ 我が街にもたくさんの

雪が降りました

久しぶりの更新になってしまいましたが

朝日に光る雪をいつもの桜土手にて写してみました
























先日の氷桜とはまた趣が変わり

美しい景色だと感じました

過去にとらわれず 未来にとらわれず 今その一瞬に

心を動かされる....

そんな冬の1ページでございました

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