プレイ日記
ケイン KEIN.HORGAN
シンプルRPG製作日記 4日目 条件分岐とボタン検知
3そうだね
プレイ済み
返信[1]
親投稿
ケイン KEIN.HORGAN
製作4日目の今日は、ちょっとプログラムの整理と、そしてメッセージ欄更新の為の作業その1を行いました。 整理をした部分は、モンスターが歩いてくる部分です。 具体的には、ループ文のTO の部分を、7 → 8 に変更し、28行目を削除しました。 こうする事で、最後の1歩の後にWAIT 60 が実行されるようになりますが、代わりにプログラムがややすっきりします。 (また、TO の数値を変更する事で、モンスターの歩く歩数を調整する事も出来るようになります)
0そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
それはさておき。 メッセージ欄の更新は、一つの命令で実行出来るわけではありません。 とりあえず今回は、「点滅するカーソル」を作りました。 (「カーソルが点滅している時にボタンを押すと、メッセージが更新される」というあれです) 29行目からのコードがそれになっています。 今回の新規命令は3つです。 VSYNC IF ~ THEN ~ ENDIF BUTTON()
0そうだね
プレイ済み
返信[3]
親投稿
ケイン KEIN.HORGAN
■VSYNC これは、プログラムの実行速度を一定以下に抑える命令です。 試しにこの命令を削除してもらうと分かると思いますが、カーソルの点滅があほみたいに早くなってしまうと思います。 WAIT 命令と似た機能なのですが、WAIT は必ずプログラムを一時停止させるのに対して、VSYNC は「もともとプログラムの実行速度が低下している場合」は一時停止しない、という違いがあります。
0そうだね
プレイ済み
返信[4]
親投稿
ケイン KEIN.HORGAN
■IF ~ THEN ~ ENDIF 命令を実行するかしないかの条件判断をします。 今回は、ループに使用している変数 I の値によって、カーソルを表示したり、空白で上書きしたりしています。 ※表示した文字を点滅させる、という命令はないので、手動で点滅させているわけです。
0そうだね
プレイ済み
返信[5]
親投稿
ケイン KEIN.HORGAN
■BUTTON() "この命令が実行される直前"に、ボタンの入力状態がどうなっているかをチェックする命令です。 BUTTON(2) とすると、「何かのボタンが押されなくなったら」そのボタンに応じた値が返ってきます。 ※ボタンに応じた値 Aボタン:#A Bボタン:#B 等。詳細はヘルプを見てください。 ここを見てわかるとおり、#A や #B などは数値として扱える特別な数です。 BUTTON() 命令は、ボタンが押されていようが押されていなかろうが関係なく一瞬で終了してしまうので、ループの中に組み込んでおかないと、あんまり意味がありません。 (ループの外にしてしまった場合、BUTTON() 命令が実行されるその瞬間にボタンを押していないと意味がないのですが、それは人間にはほぼ不可能です)
0そうだね
プレイ済み
返信[6]
親投稿
ケイン KEIN.HORGAN
■BREAK すみません、すっかり忘れていましたが、これも新規命令でした。 この命令は、ループを強制終了させる命令です。 IF BUTTON(2)==#A THEN BREAK とは、つまり「もし、たった今Aボタンが押されたら、このループを終了させる」という意味になります。
0そうだね
プレイ済み
返信[7]
親投稿
ケイン KEIN.HORGAN
※ループ補足 今回のループは、I=0 であり、かつ TO 100 とあるので、Iが100になったらループ終了するかのように見えますが…… ループ中に、I=-1 としている箇所があります。 つまり、ループの終了判断を行う NEXT の時に、I=100 となっているタイミングが出てきません。 その為、プレイヤーがAボタンを押すまで、何回でもいつまででも、カーソルの点滅を繰り返させる事が出来るのです。
0そうだね
プレイ済み
返信[8]
親投稿
ケイン KEIN.HORGAN
さて、今日の日記はここまで。 明日はお休みの予定で、明後日は多分、サブルーチン(GOSUB ~ RETUEN)を使ってみようかな、と思っています。
0そうだね
プレイ済み