選択画面について

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

選択画面について

#1

投稿記事 by 胡椒 » 15年前

ゲームの選択メニューを作っているのですが、詰まってしまいました。
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という部分を別の場所で定義すれば正しく作動したのですが、なるべくグローバル変数は使いたくありません。
これはどのようにすれば解決できるのでしょうか?

Poco

Re:選択画面について

#2

投稿記事 by Poco » 15年前

場当たり的な解決法ですが、

int menu=0;

static int menu=0;

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

バグ

Re:選択画面について

#3

投稿記事 by バグ » 15年前

ループの外で定義しといて、引数で渡せばよいのでは?もし、変更した内容が必要になりそうであればポインタを使用すればよいですよ。

シエル

Re:選択画面について

#4

投稿記事 by シエル » 15年前

int menu=0が呼ばれてしまうというか、自動変数なので消滅してしまって値が保存されないためだと思います。
staticを使って静的変数にするか、グローバル変数にするしかないと思います。

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

胡椒

Re:選択画面について

#5

投稿記事 by 胡椒 » 15年前

ありがとうございます。
ループの外で定義しようとも考えたのですが、複雑になってしまいそうで・・・

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

閉鎖

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