CLS
PRINT "ミッション:3びょういないにAをおせ!"
FOR TIMECNT = 0 TO 60 * 3
IF BUTTON(2) AND 16 THEN BREAK
VSYNC
NEXT
IF TIMECNT < 60*3 THEN
PRINT "おめでとうミッションコンプリートだ!"
ELSE
PRINT "どっかーん! あなたはしんだ。"
ENDIF
大ざっぱにはこんな感じ?
カウントダウンや時間制限に関しては私が作ったゲームで使っているのがあります。詳しくは私の活動などで。
まぁ簡単に書きますと
TIM=30 :'1秒を10カウント(6カウント=0.1秒)で計算する為3.0秒なら10倍の30として設定
TIMZ=MAINCNT
@LOOP
IF MAINCNT<=TIMZ+6 THEN TIM=TIM-1:TIMZ=MAINCNT
IF TIM<=0 THEN END
GOTO @LOOP
何も見ずに書いてるので確認していませんが、こんな感じになるかと。
簡単な解説をします。
R=(RND(15)+1)*16はA、B、X、Yボタンを示す15通りの乱数を発生させます。
WHILE T~WENDはTの値が0でなければループを繰り返します。
画面上に表示するタイムはTの値を60で割ったものを整数にして表示しています。
この際、切り捨てとなるFLOORだと1秒を切ったら残り時間が0になってしまうため切り上げとなるCIELを使っています。
IF BUTTON()==R THEN F=1:BREAKで指定のボタンを押したらフラグを示す変数Fに1を入れてBREAKでループを強制終了します。
ループから抜けた後はFの値が1かどうかでクリアしたかが分かりますのでクリア処理とゲームオーバー処理を用意すれば完成です。
わざわざフラグ用の変数を用意しなくても残りタイムが0以外かどうかで判定をすることも可能です。