合計 昨日 今日

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

[このトピックは解決済みです]

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: sakurasaku
[URL]
Date: 2017年11月06日(月) 15:52
No: 1
(OFFLINE)

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

太鼓の鉄人のコードを理解しようとプログラムを読んでいるのですが、
コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
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の

Name: sakurasaku
[URL]
Date: 2017年11月06日(月) 15:54
No: 2
(OFFLINE)

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

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

Name: Dixq (管理人)
(管理人)
[URL]
ウィザード(1,488,004 ポイント)
Date: 2017年11月07日(火) 22:45
No: 3
(OFFLINE)

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

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

Name: sakurasaku
[URL]
Date: 2017年11月10日(金) 21:37
No: 4
(OFFLINE)

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

[解決!]

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


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[9人]