アクションサンプルプログラムのことで2つ質問があるのですが

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sadora3
記事: 175
登録日時: 11年前

アクションサンプルプログラムのことで2つ質問があるのですが

#1

投稿記事 by sadora3 » 9年前

http://homepage2.nifty.com/natupaji/DxL ... Sample.cpp
ここのサンプルプログラムについて質問があります。

一つ目はActMain関数の中の

コード:

        // 1/60秒立つまで待つ
        while( GetNowCount() - FrameStartTime < 1000 / 60 ){}

        // 現在のカウント値を保存
        FrameStartTime = GetNowCount() ;
これについてなのですが、なにをやっているのかサッパリわかりません。
これの意味を教えて欲しいです。


二つ目はCharMove関数の中の

コード:

    // 先ず上下移動成分だけでチェック
    {
        // 左下のチェック、もしブロックの上辺に着いていたら落下を止める
        if( MapHitCheck( *X - hsize, *Y + hsize, &Dummy, &MoveY ) == 3 ) *DownSP = 0.0F ;

        // 右下のチェック、もしブロックの上辺に着いていたら落下を止める
        if( MapHitCheck( *X + hsize, *Y + hsize, &Dummy, &MoveY ) == 3 ) *DownSP = 0.0F ;

        // 左上のチェック、もしブロックの下辺に当たっていたら落下させる
        if( MapHitCheck( *X - hsize, *Y - hsize, &Dummy, &MoveY ) == 4 ) *DownSP *= -1.0F ;

        // 右上のチェック、もしブロックの下辺に当たっていたら落下させる
        if( MapHitCheck( *X + hsize, *Y - hsize, &Dummy, &MoveY ) == 4 ) *DownSP *= -1.0F ;

        // 上下移動成分を加算
        *Y += MoveY ;
    }
ここの部分ですが、これ上辺と下辺が逆になってませんか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: アクションサンプルプログラムのことで2つ質問があるのですが

#2

投稿記事 by softya(ソフト屋) » 9年前

逆に質問ですが、GetNowCount() と FrameStartTimeってそれぞれ何の値でしょうか?
引くことで何が求められますか?

それと2Dの座標系は画面下が+なので、
> ここの部分ですが、これ上辺と下辺が逆になってませんか?
逆じゃないと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

sadora3
記事: 175
登録日時: 11年前

Re: アクションサンプルプログラムのことで2つ質問があるのですが

#3

投稿記事 by sadora3 » 9年前

GetNowCount・・・Windowsが起動してからの時間(単位:ミリ秒)
FrameStartTime・・・一番最初に入る値がプログラム開始時のGetNowCountの値で、以降がよく分かりません。
引くことにより求まるのは、以前のFrameStartTimeへの代入から、何ミリ秒経過したかでしょうか。
GetNowCount関数のサンプル見て分かったのですが、「while( GetNowCount() - FrameStartTime < 1000 / 60 ){}」はコメント通り、1/60秒立つまで待つ処理なのですね。つまりゲームスピードを抑えているのでしょうか。でもこの部分をコメントアウトしても、体感的には速さは全く変わってなかったのですが。
WaitTimer(1000/60)と同じ意味ですよね。なぜこんな紛らわしい書き方をしているのでしょうか・・・?

上辺と下辺が逆じゃないということは、プレイヤーが四角だったとして、下(地面との接地部分)が上辺になるのですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: アクションサンプルプログラムのことで2つ質問があるのですが

#4

投稿記事 by softya(ソフト屋) » 9年前

>体感的には速さは全く変わってなかったのですが。

120FPSのモニタを使うと変わると思いますよ。
あと昔のXPなどのOSなら変化したでしょうね。

>上辺と下辺が逆じゃないということは、プレイヤーが四角だったとして、下(地面との接地部分)が上辺になるのですか?
// 左下のチェック、もしブロックの上辺に着いていたら落下を止める
これだとプレーヤーの左下が、マップの上辺と接触するという意味に私は見えますね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

sadora3
記事: 175
登録日時: 11年前

Re: アクションサンプルプログラムのことで2つ質問があるのですが

#5

投稿記事 by sadora3 » 9年前

あーなるほど!
勘違いしていました・・・すみません。
回答ありがとうございまいた。

閉鎖

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