1人でゲームが作れるように修行します。2 (487レス)
上
下
前
次
1-
新
220
:
SGGK ◆6pZCoAtaxk
2011/04/17(日)23:21
ID:VrjRr7OP(1)
AA×
>>216
[
240
|320|
480
|
600
|
100%
|
GIF
|
べ
|
レス栞
|
レス消
]
220: SGGK ◆6pZCoAtaxk [sage] 2011/04/17(日) 23:21:42.93 ID:VrjRr7OP 昨日は起きていたのがいつもより遅かったので書けなかったけど、 昨日の間違いというのは、メインループ内のゲーム処理関数の最初の行に書いた2行の順序が逆だったこと。 (間違い) m_Time.countGameTime(); if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();} (正解) if(m_Time.m_GameTimeState==CONTINUE){m_Time.displayGameTime();} m_Time.countGameTime(); 時間の測定はループ1回毎に時間を測定して、前回のループでの測定値との差を毎回足していくんだけど、 1回目のループでは前回のループの測定値がまだ存在しないので、差を計算しては困るので、 時間クラスに2つの状態STARTとCONTINUEという定数を定義しておいて、 初期値はSTARTにしておき、STARTの場合には差を計算しない。CONTINUEなら差を計算する。 1回目のループではSTARTなので時間の測定だけして、差は計算しない。そして状態をCONTINUEに変更する。 そしたら2回目のループ以降は差を計算してくれる。 間違いの例だと1行目で状態がCONTINUEに変更されてるので、まだ差を計算してないのに時間を画面に表示しようとしてしまう。 正解例の順にするとバグが出なくなった。 実は>>216で初期化値がGetNowCount() - 1となっている理由がわからなくて全部0にしてしまったので、 そこに何か関係があるのかと思ったりもしたけど、上記の方法でバグが出なくなったのでたぶん大丈夫。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/220
昨日は起きていたのがいつもより遅かったので書けなかったけど 昨日の間違いというのはメインループ内のゲーム処理関数の最初の行に書いた2行の順序が逆だったこと 間違い 正解 時間の測定はループ1回毎に時間を測定して前回のループでの測定値との差を毎回足していくんだけど 1回目のループでは前回のループの測定値がまだ存在しないので差を計算しては困るので 時間クラスに2つの状態とという定数を定義しておいて 初期値はにしておきの場合には差を計算しないなら差を計算する 1回目のループではなので時間の測定だけして差は計算しないそして状態をに変更する そしたら2回目のループ以降は差を計算してくれる 間違いの例だと1行目で状態がに変更されてるのでまだ差を計算してないのに時間を画面に表示しようとしてしまう 正解例の順にするとバグが出なくなった 実はで初期化値が となっている理由がわからなくて全部0にしてしまったので そこに何か関係があるのかと思ったりもしたけど上記の方法でバグが出なくなったのでたぶん大丈夫
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 267 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
ぬこの手
ぬこTOP
0.037s