ページ 1 / 1
メニュー選択後について
Posted: 2008年10月24日(金) 14:59
by ぐっちょん
はじめまして。初めて投稿させていただきます。
現在、私はDXライブラリでシュミレーションRPGを制作しております。
さて、本題なのですが、タイトル後のメニュー選択でつまずいております。
こちらのサイトにて選択のサンプルが合ったのでそれを元に制作しました。
Zキーが決定キーになっているのですが、Zキーを押してもうまく関数が反応してくれません。
何かアドバイスがあれば、ご返答のほど宜しくお願い致します。
添付したファイルは こんな感じかな という感覚で打ち込んだソースなので
詳しくはtxtファイルをご覧ください。
制作環境
制作ソフト : Microsoft Visual Studio Academic Edition 2005
OS : XP
Re:メニュー選択後について
Posted: 2008年10月24日(金) 15:26
by Mist
ソース解析間違えていたので回答削除
Re:メニュー選択後について
Posted: 2008年10月24日(金) 15:34
by GPGA
>シュミレーション
細かい突込みですが、正しくはシミュレーションです。
Re:メニュー選択後について
Posted: 2008年10月24日(金) 15:35
by 管理人
if( CheckHitKey( KEY_INPUT_Z ) != 0 && y == 360 ) { //メニュー(NEW GAME)を選択したとき
Method[ y ]() ;
ここおかしくないですか?
yは360ですよね。
配列要素360個目に・・はないですよね。つまり関数を360個も登録してないのでエラーになってます。
今関数1つしか登録していないのだから
Method[0]();
しか呼ぶ事はで来ません。
後、あちこちにScreenFlip() ;などを書くのは非効率ですので、
メインループはメイン関数の中に一つだけかいて、switch文などでどの関数を呼ぶか変更してあげて下さい。
http://dixq.net/g/#34
Re:メニュー選択後について
Posted: 2008年10月24日(金) 15:36
by kazuoni
ひとつ思ったんですが、なぜキー監査(GetHitKeyStateAll_2)があるのに
CheckHitKey()を使っているのでしょうか?
しっかりコード見てないので分かりませんが、ブレイクポイントを使ってみてはどうでしょうか?
Re:メニュー選択後について
Posted: 2008年10月24日(金) 15:46
by Mist
> else if( Key[KEY_INPUT_UP]==1 ||( Key[KEY_INPUT_UP]%5==0 && Key[KEY_INPUT_UP]>30)){
最初に押したときはいいとして、カウントが5の倍数のときかつ30以上のとき
押している処理しているのがまずいのかな。
↓をチョン押し(0.5秒以下ぐらい)しないと、後ろの条件が満たされてy-=20が実行されて
Zを押したときにyが440でなくなっていると思う。
違ってたらごめんなさい。
Re:メニュー選択後について
Posted: 2008年10月24日(金) 15:47
by Dixq (管理人)
CheckHitKey()もそうですが、
LoadGraphScreen
は使わない方がいいです。
LoadGraphで一度画像を最初に取り込んでから
DrawGraphなどで表示して下さい。
それから
else if( CheckHitKey( KEY_INPUT_Z ) != 0 && y == 440 ) { //メニュー(EXIT)を選択したとき
break ; // ループから抜ける
}
こういうメニュー項目の座標で判定するプログラムは、メニューをずらそうとしたら
機能しなくなるので、書かないほうがいいと思います。
メニューの項目番号識別変数でも作って
今上から何番が選択されているかを確認して判定した方がいいと思います。
Re:メニュー選択後について
Posted: 2008年10月24日(金) 16:02
by ぐっちょん
>>GPGA様
はい、間違えました。以後気をつけます。
>>管理人様
やっと Method の適切な使い方がわかりました。
ScreenFlip() ; については後々関数等にする予定です。
>>kazuoni様
CheckHitKey() を使わないといけないのかと思っていたのですが・・・
確認してみたいと思います。
アドバイスありがとうございました。
まだ、DXライブラリで制作して一カ月半の初心者なので
今度とも宜しくお願いします。
Re:メニュー選択後について
Posted: 2008年10月24日(金) 16:37
by Dixq (管理人)
いやScreenFlip();は既に関数ですよね・・。
Re:メニュー選択後について
Posted: 2008年10月26日(日) 15:42
by ぐっちょん
Dixq(管理人)様
ご指摘ありがとうございます。
今後はLoadGraph等で画像を読み込みしたいと思います。
皆様のおかげで問題を解決することが出来ました。
ありがとうございました。
今後、わからないことが出ると思いますが、
その時はまた宜しくお願いします。