ゲームなどで任意の内容をリアルタイムで知りたい為に使われる、printデバッグ。
私もキャラクタのパラメータなどを表示させて、チェックし不具合を直したりしています。
今回のスネークゲーム(PICO-8で作成)も、自分の不死フラグ(真なら無敵、偽なら当たり判定あり)を実装したため、ちゃんと機能しているのか画面上に表示しようと思い、print文を記述して実行。
print(“flag is “..simmo_flag)
結果は、エラー!!
「runtime error attempt to concatenate global ‘simmo_flag’ (a boolean value)」
「ランタイムエラーグローバル’simmo_flag ’を連結しようとしました(ブール値)」
if 文で print 文を2つ書く方法も考えたのですが、
「なにか 良い方法があるのでは?」
と思い、グーグル検索。
すると、本家PICO-8のBBSにありました!!
正解は、
print(“flag is “..(simmo_flag and “true” or “false”))
でした。
コンソールモードで試してみました。
「A and B or C」とした時、
まず「A and B」で、Aの内容がfalseかnilの場合Aを返し、それ以外はBを返します。
そして「B or C」で、Bの内容がfalseかnilの場合Cを返し、それ以外はBを返します。
なので、
(true and ‘1’ or ‘0’) -> ((true and ‘1’) or ‘0’) -> ‘1’ or ‘0’ ->’1′
(false and ‘1’ or ‘0’) -> ((false and ‘1’) or ‘0’) -> false or ‘0’ ->’0′
となります。
こちらもコンソールで試しました。
これで、printデバッグのboolean値の扱いが出来るようになりました!!
コメント