太鼓の鉄人で理解できないコードがあります。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sakurasaku

太鼓の鉄人で理解できないコードがあります。

#1

投稿記事 by sakurasaku » 10ヶ月前

太鼓の鉄人のコードを理解しようとプログラムを読んでいるのですが、

コード:

void input_bullet(){
	int k;
	double sc0=stage.cnt*16.6666666666, sc1=(stage.cnt+1)*16.6666666666; //←
	double cnt=music.term*humen[stage.humen_cnt].cnt; //←ここです
	if(sc0<=cnt && cnt<sc1){
		if((k=serch_bullet())!=-1){
			enter_bullet(k,humen[stage.humen_cnt].knd-1,stage.spd);
		}
		stage.humen_cnt++;
	}
}
bullet.cppの

sakurasaku

Re: 太鼓の鉄人で理解できないコードがあります。

#2

投稿記事 by sakurasaku » 10ヶ月前

すみません。途中で途切れてしまいました。コメントで指しているところの、sc0, sc1, cntが何を表す変数なのかがわかりません。解説お願いします。

アバター
Dixq (管理人)
管理人
記事: 1656
登録日時: 8年前
住所: 北海道札幌市
連絡を取る:

Re: 太鼓の鉄人で理解できないコードがあります。

#3

投稿記事 by Dixq (管理人) » 10ヶ月前

もう10年位前のコードなので定かではないですが、おそらく1フレームの時間かと思います。
60FPSで動作しているゲームにおいて、1フレームの時間は1/60秒、つまり16.6666....[ms]を意味します。
1/60に現在のフレーム数をかけるとあるべきゲーム時間が出てきます。
ゲームの中で計算上進んでいる時間とリアルで進んだ時間を一致させないと音ゲーが成立しないので、
その調整をしながらゲームを制御することになります。
関数名から察するにbulletつまり弾、つまりダンレボでいう矢印に相当するものが、何フレーム目に出現するかを計算して登録しているものと思います。

sakurasaku

Re: 太鼓の鉄人で理解できないコードがあります。

#4

投稿記事 by sakurasaku » 10ヶ月前

理解できました。ありがとうございます。

返信

“C言語何でも質問掲示板” へ戻る