ページ 11

選択画面について

Posted: 2010年6月09日(水) 01:00
by 胡椒
ゲームの選択メニューを作っているのですが、詰まってしまいました。
http://dixq.net/g/36.html
ここを参考にして
void game_start(){
int f;
    int num=4;//選択できる数
int menu=0;
if( CheckStatePad(configpad.up) == 1 && menu > 0 )
--menu;
else if( CheckStatePad(configpad.up) == 1 )
menu = num-1;
if( CheckStatePad(configpad.down) == 1 && menu < num-1 )
++menu;
else if( CheckStatePad(configpad.down) == 1 )
menu = 0;

というようにしたのですが、これを龍神録のプログラムの中に組み込むと、ループしているせいで常に
int menu=0;が出てきてしまいます。
これではupやdownのキーを押してもすぐに元に戻ってしまいます。

グローバル変数を使ってmenu=0という部分を別の場所で定義すれば正しく作動したのですが、なるべくグローバル変数は使いたくありません。
これはどのようにすれば解決できるのでしょうか?

Re:選択画面について

Posted: 2010年6月09日(水) 01:11
by Poco
場当たり的な解決法ですが、

int menu=0;

static int menu=0;

としてみてはどうですか?

Re:選択画面について

Posted: 2010年6月09日(水) 08:07
by バグ
ループの外で定義しといて、引数で渡せばよいのでは?もし、変更した内容が必要になりそうであればポインタを使用すればよいですよ。

Re:選択画面について

Posted: 2010年6月09日(水) 08:12
by シエル
int menu=0が呼ばれてしまうというか、自動変数なので消滅してしまって値が保存されないためだと思います。
staticを使って静的変数にするか、グローバル変数にするしかないと思います。

追記:
プログラム終了時まで消滅しないメインループの外で自動変数にしてもいいかも。 画像

Re:選択画面について

Posted: 2010年6月09日(水) 12:36
by 胡椒
ありがとうございます。
ループの外で定義しようとも考えたのですが、複雑になってしまいそうで・・・

無事static int menu;にしたら出来ました。
ありがとうございました!