定数定義での連番ダブりを根絶するためにオートを!!!!
pythonでは大文字の変数を定数定義とするのが慣習となってます(たぶん)
ゲーム全体の色んな場面(ここではシーンと呼びます)を定数定義した後self.game_statusに代入しています
そして「今現在ゲームがどのような状態なのか?」を調べたい時は
if文でself.game_statusの中身を見て分岐させるのが定石なのですが・・・
よくあるバグに「複数の変数に同じ数値を割り当ててしまう!」というのがあります
上のプログラムファイルはいろんな種類のウィンドウにIDナンバーを持たすために定数定義を行っているのですが
見事にWINDOW_ID_GAME_OVER_RETURNと
WINDOW_ID_GAME_OVER_RETURN_NO_SAVEに全く同じ数値8を代入して定義をするミスを犯しております
これ・・・コピペとかの処理でミスったとおもうんだけれども、
このバグ見つけにくいんだよね
そこで登場するのが「列挙型でautoを使用!するべし!」なのです!!!
ゲーム全体のステータスを単純に連番で定数定義したものをこのように
新たにScene(IntEnum)でSceneクラスを作製します
そしてそのクラスの大文字変数に
大文字変数 = auto()で定数定義していきます
数値を指定しなくて良いので便利ですね~~~~☆彡
(IntEnum)だと内部では整数の連番で定義されてるのかな?良く判らない・・・
ただ、デバッグパラメーターの確認などでself.game_statusの中身を表示した時にこのままだと「Scene.TITLE_INIT」と表示されちゃって画面を占有しちゃうので
#ゲームステータス (ゲームの状態)の表示
status_str = str(self.game_status)
rindex = status_str.rfind(".")
new_status_str = status_str[rindex + 1:]
pyxel.text(0,8,str(new_status_str),pyxel.COLOR_LIGHT_BLUE)
#ゲームステータス(ゲームの状態)の表示
status_str = str(self.game_status)
rindex = status_str.rfind(".")
new_status_str = status_str[rindex + 1:]
pyxel.text(0,8,str(new_status_str),pyxel.COLOR_LIGHT_BLUE)
こんな感じでテキストを整形するのが良いかもしれないです、ハイ