HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0326
RTMループの内部で時間の違うループの作り方を教えてください。1未解決


RTM

リンク

2019/3/26(Tue) 19:07:27|NO.86961

僕は音ゲーを作ろうとしてますが、メインループ内での時間の取り方がわかりません。

現在はメインループは60FPSを維持しつつ、その内部でテンポの判定(=時間の違うループ)をしようと思ってます。
一応同期仮という部分で単品でテンポとの同期は取れるようにはなっています。
これを使い、テンポの同期・ボタン入力・時間のずれなど取得を作るためには複数の時間の違うループが必要になってしまいます。
どうすれば時間の違うループを複数作れますか?


#module // 時間を正確に測るためのAPI #uselib "kernel32.dll" #func QueryPerformanceFrequency "QueryPerformanceFrequency" var #func QueryPerformanceCounter "QueryPerformanceCounter" var #deffunc __init_await ddim fr, 1 ddim tm, 1 ddim tm2, 1 ddim wt, 1 QueryPerformanceFrequency fr if stat = 0 : return 1 QueryPerformanceCounter tm return 0 #undef await// 既存のawait命令を消す(いままでのawait命令を使用する場合はawait@hspで呼び出せます) #deffunc await double wc wt = double(strf("%I64u", fr)) * wc / 1000 repeat wait 0 QueryPerformanceCounter tm2 if double(strf("%I64u", tm2)) - double(strf("%I64u", tm)) >= wt : QueryPerformanceCounter tm : break loop return #global __init_await if stat : dialog "エラー", 1 : end //同期仮 /* chr="◆" RP=RP+1 mes chr if (RP=5){;五拍目に全消し+新文字 cls:sysfont 10;cls+フォント RP=1 mes chr } await 60000/bpm/8*8 */ //変数 bpm=101 //- sysfont 10;フォント mmload "101.wav",1,0 ;音楽演奏 mmplay 1 *main redraw 0 redraw 1 Counter++ await 17-(Counter\3==0) ;1/60秒ウエイト goto *main



この記事に返信する


ソラ

リンク

2019/3/26(Tue) 20:01:36|NO.86963

timegettimeやgettimeでPCを起動してからの経過時間をms単位で取得できるので、
ループ内で1フレームごとにそれを呼び出して、経過時間を元に処理してみては?



ONION software Copyright 1997-2023(c) All rights reserved.