Pyxelで作る03 キャラクターをkeyで動かす
表示したプレイヤーをkeyで動かしたい
参考サイト
dev.classmethod.jp
といっても、ここのサンプルを参考にしました
ソースコード
#keyで移動 import pyxel class App: def __init__(self): # 画面サイズの設定 captionはwindow枠にtext出せる pyxel.init(160, 120, caption="Hello Pysel") # editorデータ読み込み(コードと同じフォルダにある) pyxel.load("my_resource.pyxres") # 初期配置 self.player_x = 80 self.player_y = 60 # 実行開始 更新関数 描画関数 pyxel.run(self.update, self.draw) def update(self): if pyxel.btnp(pyxel.KEY_Q): # Qキーで終了 pyxel.quit() self.update_player() def update_player(self): # key入力 # max関数 min関数で画面外に行かないようにしているのか if pyxel.btn(pyxel.KEY_LEFT): self.player_x = max(self.player_x - 2, 0) if pyxel.btn(pyxel.KEY_RIGHT): self.player_x = min(self.player_x + 2, pyxel.width - 16) if pyxel.btn(pyxel.KEY_UP): self.player_y = max(self.player_y - 2, 0) if pyxel.btn(pyxel.KEY_DOWN): self.player_y = min(self.player_y + 2, pyxel.height - 16) def draw(self): # 画面クリア 0は黒 pyxel.cls(0) # editorデータ描画 pyxel.blt(self.player_x, self.player_y, 0, 0, 0, 16, 16, 0) #描画座標(左上のX座標) #描画座標(左上のY座標) #画像番号 #切り出しの左上のX座標 #切り出しの左上のY座標 #切り出す幅 #切り出す高さ #抜き色(パレット番号) App()
ここのkey入力判定を見てみると
if pyxel.btn(pyxel.KEY_LEFT): self.player_x = max(self.player_x - 2, 0)
ここでmax関数を使う事で、
プレイヤーが画面左端をぶっちぎった場合、x座標はマイナスになるからmax関数で0が選択されるのね
ちなみに、左端の場合キャラクタの左上端が基準点で幅が16だから、右端ピッタシの座標は-16って事なのね