忍者ブログ

神戸電子専門学校ゲームソフト学科の生徒が運営するGESのブログです。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

デバッグ画面の表示

ゲームのデバッグ情報(自機の座標など)を実際のゲームの画面に出していました。
常に変化し続けるものを確認するためにゲーム画面に描画するのは有効ですが、
例えば、弾を発射した、初期化がミスった、マウスがクリックされた、シーンの切り替えが発生したなどの
一瞬の情報はずっと描画しなくていいですね。
そこで、コンソール(コマンドプロンプトの画面)にログをprintfで出力していく方法を紹介します。

拍手[0回]


 
AllocConsole();
freopen( "CONOUT$", "w", stdout );
freopen( "CONIN$", "r", stdin );
printf("testです。 %d\n",893 );


ゲームループが始まる前に記述してください。
関数が呼ばれた後からprintfが使えるようになります。
printfをプログラム中のどこに記述しても大丈夫です。
scanfも使えます。(私はエディタで編集するファイル名などの入力で利用。
            改行がバッファに残ったりいろいろ面倒なので、
            ウインドウ付きのエディタが作れるならそっちを作ったほうが確実にいいです。)


補足1:
#ifndef _DEBUG
#define printf //
#endif
などでReleaseビルド時は通らないようにしておく(他に消し方あったらコメントよろしくです)

補足2:
freopen_sを使ってください。という警告が英語で出る。
対処法として、
1.無視
2.freopen_sを調べて使う
3.警告を出力しないようにする(
#pragma warning( disable : 4996 ) // freopen の警告を出力しない
を.cpp(.hは駄目)に記述する。)

C4996の警告は古い関数使ってるからこっちのが安全性が高いよと◯◯◯_s関数の使用を推してくる。
#pragma warning を決してintからfloatへの変換の警告を消すなどには使ってはいけない。

by リーダ和田
PR

COMMENT

NAME
TITLE
MAIL(非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS(コメント編集に必須です)
SECRET
管理人のみ閲覧できます

無題

  • by Yana#P
  • 2012/03/09(Fri)02:24
  • Edit
これは助かる

無題

  • by リーダ和田
  • 2012/03/09(Fri)02:39
  • Edit
これからも知っておけばお得情報をお届けします。
コメントありがとう!

無題

  • by とある2年
  • 2012/03/09(Fri)08:52
  • Edit
自分はOutputDebugString関数でデバッグウィンドウに出力してたけど、
なるほど、こういう方法もあるのか・・・参考になります。

無題

  • by リーダ和田
  • 2012/03/09(Fri)15:04
  • Edit
私も出力にデバッグ情報を流していました。


今回示したサンプルは、標準出力がコンソールになります。
printfやcoutなどが使えます。
このfreopenの関数を調べるとログを出力する矛先を
ファイルなどにも利用できるようです。

ゲーム配布時にログをファイルに出力させておいて、
不具合の報告があがったときにそのファイルを送ってもらうようにすれば
デバッグもしやすそうです。

コメントありがとう

ブログ内検索

最新コメント

[01/29 人面犬]
[10/01 8ch]
[09/12 uncle]
[09/10 某卒業生]
[06/07 uncle]

カレンダー

04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

テスト

Copyright ©  -- GESブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]