前回は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__()
関数で初期化しています
ローディング画面でうさちゃんがジャンプ!