【DXライブラリ】printfDX関数がif文に影響する?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
amehirune
記事: 181
登録日時: 10年前
住所: どっか
連絡を取る:

【DXライブラリ】printfDX関数がif文に影響する?

#1

投稿記事 by amehirune » 6年前

ご無沙汰しております、アメヒルネです。
無事春休みを迎えられそうなので、こうしてまたこちらに顔を出すことができそうです。

さて、今回はDXライブラリを用いたゲーム開発の最中に発生したバグに関する質問です。
以下に簡潔に内容を示します。

[hr]
概要
・これは、クォータービューを表示・カメラの視点を移動させるプログラムである
・外部ファイル(CSV形式)から、MAP_W×MAP_Hサイズのマップデータを読み込む
 内容は、「0:移動不可能領域」「1:移動可能領域」で表す
・十字キーで縦横に視点を移動させる。Xキーを押している間は、視点を二倍速移動させる。

バグの内容
・計算上では通るべきif文が通らない(縦、横への移動が不可能。斜め移動のみ可能)
・printfDX関数をif文の中に挿入するとバグが改善される(何故?)
・時々、カメラの視点が急にワープする(頻発するが条件が不明。再現性なし?)

開発環境
・VC++2008EE
・DXライブラリ

ご教授いただきたいこと
・[メイン]バグの原因は何か?なぜprintfDXがif文に作用しているのか?
・[サブ]コーディング、変数の命名規則など、開発上のアドバイス

ソースコード
map.h
► スポイラーを表示
map.cpp
► スポイラーを表示
オフトピック
C言語歴は4年ほど。C++は勉強中で、その一環として本プログラムを開発しています
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

アバター
a5ua
記事: 199
登録日時: 13年前

Re: 【DXライブラリ】printfDX関数がif文に影響する?

#2

投稿記事 by a5ua » 6年前

void Map::calc()において何もボタンが押されていなかったら、
vx,vyが未初期化のまま
_x += vx;
_y += vy;
が実行される点が気になりました。

アバター
amehirune
記事: 181
登録日時: 10年前
住所: どっか
連絡を取る:

Re: 【DXライブラリ】printfDX関数がif文に影響する?

#3

投稿記事 by amehirune » 6年前

a5uaさん>Oh…うっかりミスしてました。修正したところ、確かに正常な動作を確認できました。ありがとうございます。
未定義動作…ということで間違いないのでしょうかね。てっきりメモリ関係がおかしいのかと思っていました。

しかし…なぜprintfDX関数がそのバグの有無に影響するのでしょうか。
たまたまってことで済ませてしまってもいいのでしょうかね。

バグは修正されたので、ひとまず解決とします。お恥ずかしい…
ほら、来いよ!! 誤字や矛盾を指摘したい奴から、前に出てこいよぉおおおおおおおッ!!!
※都合により、不定期でしか現れません。即返などはできませんのでご了承ください※

返信

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