Skip to content

Instantly share code, notes, and snippets.

@cacapon
Last active October 16, 2019 15:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cacapon/ebe1fb8fd16c74f76280eec975b16a9e to your computer and use it in GitHub Desktop.
Save cacapon/ebe1fb8fd16c74f76280eec975b16a9e to your computer and use it in GitHub Desktop.
コードでゲームシーンの遷移を表現したコードになります~
from enum import Enum, auto
import pyxel
class GAMEMODE(Enum):
# 画面のシーンをEnumで定義します
Title = auto()
Main = auto()
End = auto()
class App:
def __init__(self):
pyxel.init(200, 200)
self.my_gamemode = GAMEMODE.Title # 最初に表示したいシーンを初期値に設定します。
pyxel.run(self.update, self.draw)
def update(self):
# 現在選択されているシーンのupdateを読み込みます。
if self.my_gamemode == GAMEMODE.Title:
self.update_title()
elif self.my_gamemode == GAMEMODE.Main:
self.update_main()
elif self.my_gamemode == GAMEMODE.End:
self.update_end()
def update_title(self):
# ここでタイトル画面で行うロジックを構成していきます
# 今回はスペースキーを押されたら次のシーンに行く処理を行っています
if pyxel.btnp(pyxel.KEY_SPACE):
self.my_gamemode = GAMEMODE.Main
def update_main(self):
# 作りはほぼ同じ、ここはメインのゲーム画面のロジックです
if pyxel.btnp(pyxel.KEY_SPACE):
self.my_gamemode = GAMEMODE.End
def update_end(self):
# 作りはほぼ同じ、ここはゲームオーバー画面やゲームクリア画面に当たるロジックを想定しています。
if pyxel.btnp(pyxel.KEY_SPACE):
self.my_gamemode = GAMEMODE.Title
def draw(self):
# こちらでは,画面の描画処理を行っています。
# updateと同じく、GAMEMODEで実行される描画を変更しています。
pyxel.cls(0) # 一旦画面を真っ新にしています。前書いていた映像が残ってしまうので
if self.my_gamemode == GAMEMODE.Title:
self.draw_title()
elif self.my_gamemode == GAMEMODE.Main:
self.draw_main()
elif self.my_gamemode == GAMEMODE.End:
self.draw_end()
def draw_title(self):
# タイトル画面の描画です
pyxel.text(75, 0, "cacapon RPG!", 5)
def draw_main(self):
# メインのゲーム画面の描画です
pyxel.text(75, 0, "now playing...", 5)
def draw_end(self):
# ゲームクリア及びゲームオーバーに相当する画面です。
pyxel.text(60, 0, "thank you for playing!", 5)
App()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment