BETA

pyxel ゲーム画面遷移+動きをつける

投稿日:2020-05-23
最終更新:2020-05-23

前回はpyxelでゲーム画面表示+キャラの移動までできた
pyxelであつ森を知ったかぶりする

ソースコードはこちら

家に着いたらローディング画面を表示

キャラが家に着いたらこのローディング画面に遷移させたい

こちらの記事をお手本にしました
たぶんどんな環境でも使えるであろう、ゲーム画面遷移の作り方になります~

class GameMode(Enum):  
    """ 画面一覧 """  
    # 町  
    Town = auto()  
    # 家の中  
    Home = auto()  

画面遷移を制御するEnumを定義

def switch_active(self, obj, target):  
    """ オブジェクトが重なったら一方を非表示にする """  
    if abs(obj.position[0] - target.position[0]) < 10\  
            and abs(obj.position[1] - target.position[1]) < 10:  
        obj.active = False  
        # ロード画面  
        self.game_mode = GameMode.Home  
    else:  
        obj.active = True  
        # ゲーム画面  
        self.game_mode = GameMode.Town  

元々作っていたキャラが家に着いたらキャラを非表示にする処理
→ ゲームモードのEnumを切り替える

def draw(self):  
    """ 画面描画 """  
    if self.game_mode == GameMode.Town:  
        self.draw_town()  
    elif self.game_mode == GameMode.Home:  
        self.draw_loading()  
        # self.draw_home()  

def draw_town(self):  
    """ 町を描画 """  
    # 背景  
    pyxel.cls(7)  
    pyxel.bltm(0, 0, 0, 0, 0, 16, 16)  
    # 家  
    pyxel.blt(self.home.position[0], self.home.position[1], 0, 16, 0, 16, 16, 5)  
    # うさぎ  
    pyxel.blt(40, 80, 0, 48, 0, 16, 16, 5)  
    # プレイヤー  
    if self.player.active:  
        pyxel.blt(self.player.position[0], self.player.position[1], 0, 0, 0, 16, 16, 5)  

def draw_home(self):  
    """ 家の中を描画 """  
    pass  

def draw_loading(self):  
    """ ロード画面を描画 """  
    pyxel.cls(7)  
    pyxel.bltm(0, 0, 0, 16, 0, 16, 16)  

ゲームモードによって描画する画面を制御

家に着いたらうさぎが表示されるようになった!! レイアウト変更した^^

ローディング画面のうさちゃんをジャンプさせる

こちらの記事をお手本にしました
Python:pyxelで作ったレトロ風タイトル画面

まずうさちゃんジャンプ画像を用意

def draw_loading(self):  
    """ ロード画面を描画 """  
    # ウサギがジャンプする画像を表示  
    if self.flip:  
        tm_x = 32  
        tm_y = 0  
    else:  
        tm_x = 16  
        tm_y = 0  

    pyxel.cls(7)  
    pyxel.bltm(0, 0, 0, tm_x, tm_y, 16, 16)  

    if pyxel.frame_count % 15 == 0:  
        self.flip = not self.flip  

ゲームフレームが15の倍数の時に通常⇔ジャンプ画像を切り替える
タイルマップも座標を指定して表示できる
self.flip__init__()関数で初期化しています

ローディング画面でうさちゃんがジャンプ!

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

だいたい急に挑戦してゴールにたどり着かずに飽きる日々です

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう