トピック
つばさ☆ nsm2116

横スクロールゲームを作っているのですが

タイムを実装したいです。どうすればいいですか。VSNYCとWAITは無理だったので。タイムが0になったら@GOVERにいくようにする予定です。
0そうだね
プレイ済み
返信[1]
親投稿
Σ εαρ Malfoy-Malfoy
VSYNCで1/60秒間待つので60回繰り返すと1秒間待つことになります。ですので変数の値を1ループことに+1していった場合、その値が60×(制限時間(秒))になったらループから抜けるという形にすればうまくいきます。 10秒たったら@ENDにいきます。 WHILE 1 VSYNC TIME=TIME+1 ? "残り";(60×10-TIME)/60;"秒" IF TIME==60×10 THEN GOTO @END WEND @END
0そうだね
プレイ済み
返信[2]
親投稿
かたけ~ katakei05
永遠の素人(自分)のプログラムでは、 tm=χ*60 'χに好きな秒数を入力 while 1 '----- dec tm tms=floor(tm/60) 'ここの楽な方の式を忘れたので面倒なほうをとりあえず。 if tm==0 then @gover '----- vsync wend と書いてます。(適当すぎワロえない)
0そうだね
プレイ済み
返信[3]
親投稿
VSNYCとWAITが無理って、何が無理なのか説明してほしい。 うまく動かなかったプログラムでも書いてくれれば直せるから。
0そうだね
プレイ済み
返信[4]
親投稿
かたけ~ katakei05
色々ひどいので修正 time=χ*60 while 1 '(メインループ) times=time div 60 locate 0,0?" "?" " locate 0,0?times?time if time==0 then @gover vsync wend @gover end
0そうだね
プレイ済み
返信[5]
親投稿
Σ εαρ Malfoy-Malfoy
ちなみにVSYNC,WAITを使わずにカウントダウンするならこんな感じでできます。10秒たったら@ENDにいきます。下手な説明でごめんなさい。
0そうだね
プレイ済み
返信[6]
親投稿
みむ*mim hidemimtp
厳密に言うとフレーム数と時間とは違うんですが、ストップウォッチのソフトとかでもない限りあまり問題ないのではないかと。 ゲームスタート時のMAINCNT(システム予約変数)の値を変数に取っておいて、そこからのフレーム数の差/60で、経過秒が出せますね。 どうしても厳密なTIMEを使いたければ、日付をまたぐとダメなので、ゲーム開始時のDATEとTIMEを両方保管しておく必要があるんじゃないかと思います。
2そうだね
プレイ済み
返信[7]
親投稿
つばさ☆ nsm2116
皆さんありがとうございます。実装できました
0そうだね
プレイ済み