ページ 1 / 1
無題
Posted: 2010年10月02日(土) 17:51
by N.M
はじめましてN.Mと申します。
今、自分は画面上に出た矢印の向きのキーを押していく簡単なゲームを作ろうとしています。
(プログラムコ-ドをメモ帳形式で添付しました。)
しかし、これだと画面の更新がうまくいかなかったり、キー入力に反応していなかったりします。
その原因と解決策を教えてください。
自分の使用OSはWindowsXPで、コンパイルにはVC++ 2008EEを使用しています。
C言語についてはC言語~プログラミングの館~で少し勉強したくらいです。
Re:無題
Posted: 2010年10月02日(土) 20:44
by ideyan
こんばんは。
画面の更新がうまくいかない、といった漠然な報告でなく
~~なるはずなのにこういう風になってしまう、といった形式の方が
回答者も見当がつきやすくなります。
次に質問するようなことがあれば気をつけてみてくださいね。
とりあえずソースを読んでみました。
おそらく、game()で矢印がうまく表示されないあたりで
困っていると思うのですが、
原因は矢印の描画後にScreenFlip()が呼ばれないままに
WaitKey()でキー入力待ちに入って、そこで処理が止まっていることです。
さらに、WaitKey()を抜けた後でKeyBufを使っていますが、
このKeyBufも更新されていないので挙動がおかしくなります。
今の構造を変えないままにまともに動くようにするには
4か所のWaitKey()を
ScreenFlip();
WaitKey();
GetHitKeyStateAll(KeyBuf);
のように書き換えれば、応急処置ですがとりあえず遊べるようになります。
【その他の問題点】
・DrawFormatString(10,100,aqua,"かかった時間%.3f秒",(st-ft)/1000);
キャストしてないので数値がおかしくなります。
DrawFormatString(10,100,aqua,"かかった時間%.3f秒",(st-ft)/1000.0f);
とでも適当に変えてみてください。
・ProcessMessage()がほとんどの場所で呼ばれていない。
WaitKey()で待機中は自動で呼ばれるらしいのでいいんですが、
title(),finish()を実行する状態の時は呼ばれてないっぽいです。
今の構造だとプロセスの動作が不安定になったり、
右上の×でプログラムを終了してもプロセスが生き残ったりするかもしれません。
Re:無題
Posted: 2010年10月05日(火) 00:27
by N.M
指摘してくださったようにプログラムを書き直したら画面が動くようになりました。
ありがとうございました。