メニュー選択後について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ぐっちょん

メニュー選択後について

#1

投稿記事 by ぐっちょん » 17年前

はじめまして。初めて投稿させていただきます。
現在、私はDXライブラリでシュミレーションRPGを制作しております。

さて、本題なのですが、タイトル後のメニュー選択でつまずいております。
こちらのサイトにて選択のサンプルが合ったのでそれを元に制作しました。

Zキーが決定キーになっているのですが、Zキーを押してもうまく関数が反応してくれません。

何かアドバイスがあれば、ご返答のほど宜しくお願い致します。

添付したファイルは こんな感じかな という感覚で打ち込んだソースなので
詳しくはtxtファイルをご覧ください。


制作環境
制作ソフト : Microsoft Visual Studio Academic Edition 2005
OS : XP

Mist

Re:メニュー選択後について

#2

投稿記事 by Mist » 17年前

ソース解析間違えていたので回答削除

GPGA

Re:メニュー選択後について

#3

投稿記事 by GPGA » 17年前

>シュミレーション
細かい突込みですが、正しくはシミュレーションです。

管理人

Re:メニュー選択後について

#4

投稿記事 by 管理人 » 17年前

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

kazuoni

Re:メニュー選択後について

#5

投稿記事 by kazuoni » 17年前

ひとつ思ったんですが、なぜキー監査(GetHitKeyStateAll_2)があるのに
CheckHitKey()を使っているのでしょうか?

しっかりコード見てないので分かりませんが、ブレイクポイントを使ってみてはどうでしょうか?

Mist

Re:メニュー選択後について

#6

投稿記事 by Mist » 17年前

> 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でなくなっていると思う。

違ってたらごめんなさい。

Dixq (管理人)

Re:メニュー選択後について

#7

投稿記事 by Dixq (管理人) » 17年前

CheckHitKey()もそうですが、
LoadGraphScreen
は使わない方がいいです。
LoadGraphで一度画像を最初に取り込んでから
DrawGraphなどで表示して下さい。

それから

else if( CheckHitKey( KEY_INPUT_Z ) != 0 && y == 440 ) { //メニュー(EXIT)を選択したとき
break ; // ループから抜ける
}

こういうメニュー項目の座標で判定するプログラムは、メニューをずらそうとしたら
機能しなくなるので、書かないほうがいいと思います。
メニューの項目番号識別変数でも作って
今上から何番が選択されているかを確認して判定した方がいいと思います。

ぐっちょん

Re:メニュー選択後について

#8

投稿記事 by ぐっちょん » 17年前

>>GPGA様
はい、間違えました。以後気をつけます。

>>管理人様
やっと Method の適切な使い方がわかりました。
ScreenFlip() ; については後々関数等にする予定です。

>>kazuoni様
CheckHitKey() を使わないといけないのかと思っていたのですが・・・
確認してみたいと思います。

アドバイスありがとうございました。
まだ、DXライブラリで制作して一カ月半の初心者なので
今度とも宜しくお願いします。

Dixq (管理人)

Re:メニュー選択後について

#9

投稿記事 by Dixq (管理人) » 17年前

いやScreenFlip();は既に関数ですよね・・。

ぐっちょん

Re:メニュー選択後について

#10

投稿記事 by ぐっちょん » 17年前

Dixq(管理人)様
ご指摘ありがとうございます。
今後はLoadGraph等で画像を読み込みしたいと思います。

皆様のおかげで問題を解決することが出来ました。
ありがとうございました。
今後、わからないことが出ると思いますが、
その時はまた宜しくお願いします。

閉鎖

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