pyxelがバージョンアップしていたので再入門してみた

github.com

pyxelがいつの間にかバージョンアップして、しかも描画が高速化されていた。

インストールだけして使っていなかったので、ちょっと再入門して使ってみた。

 

python 3.7.xがWindows Storeにあったのでインストールしてみたが、なぜかPATHの設定がされなかったし、まだ不安定との記事を見たので、公式サイトからPythonをインストールした。インストーラでPATHの設定などが選択できるので、当然pythonにPATHを通す設定とPATH文字数制限の解除を選択してインストールした。

そして

pip install pyxel

でインストールは終わり。

 

f:id:stkyk:20190923234557p:plain

タイル

こんな感じでタイルを作成し、キャラクター(探検家)もパレットに用意した。

緑色(カラー番号==11)はクロマキーのように透過色にするつもり。

 

そして、パレット通りの背景を用意して、矢印キーの入力でキャラクターが動くようにした。なお、壁にめり込まないように移動制限もした。

という感じで、とりあえず動かすことに成功した。ウハハーッ。楽しくて笑顔になる。

 

f:id:stkyk:20190923235258g:plain

洞窟を見つけた探検家

 書いたコードはこんな感じ。

 

 

import pyxel

flip = True

class App:
    def __init__(self):
        pyxel.init(128,128)

        self.x = 30
        self.y = 80

        # 作成したドット絵やタイルマップの情報を読み込む
        pyxel.load('asset/test.pyxres')

        pyxel.run(self.update, self.draw)


    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()
        elif pyxel.btnp(pyxel.KEY_SPACE):
                pyxel.quit()
        elif pyxel.btnp(pyxel.KEY_RIGHT, 10, 2):
                self.x = (self.x + 4) % pyxel.width
        elif  pyxel.btnp(pyxel.KEY_LEFT, 10, 2):
                self.x = (self.x - 4) % pyxel.width
        elif  pyxel.btnp(pyxel.KEY_UP, 10, 2):
                self.y = (self.y - 4)
                if self.y < 52:
                    self.y = 52
        elif  pyxel.btnp(pyxel.KEY_DOWN, 10, 2):
                self.y = (self.y + 3)
                if self.y > 112:
                    self.y = 112


    def draw(self):
        # 真っ黒に背景をする
        pyxel.cls(0)
        # タイルマップを描画する
        self.tilemap_draw()

        self.char_draw()

    # タイルマップの描画処理
    def tilemap_draw(self):
        base_x = 0  #描画する位置
        base_y = 0  #描画する位置
        tm = 0
        u = 0   #タイルの開始位置(縦)
        v = 0   #タイルの開始位置(横)
        w = 16  #タイルの枚数(横)
        h = 16  #タイルの枚数(縦)
        pyxel.bltm(base_x,base_y,tm,u,v,w,h)

    #キャラクターの描画
    def char_draw(self):
        global flip
        img = 0
        w=16 #横幅
        h=16 #立幅
        colkey=11 #透過色

        #キャラクター画像の切り替え
        if flip == True:
            rx=32
            ry=0
        else:
            rx=48
            ry=0

        pyxel.blt(self.x, self.y, img, rx, ry, w, h, colkey)

        if pyxel.frame_count %10 ==0:
            flip = not(flip)

App()