タイトル画面の選択肢について

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

タイトル画面の選択肢について

#1

投稿記事 by shalot » 16年前

3点お聞きしたいことがあります。
タイトル画面で"GameStart","Option","quit"というコマンドを準備し
上下キーを押すことでコマンドを選択し、そのコマンドが明るくなるというコードを書きたいのですが
①負の数の剰余ができないようで上キーを押しても"GameStart"から"Quit"への移動ができない
②下キーを一度おしても移動ができない。押しっぱなしにすると動くのですが。
③いろいろいじっているうちに、いつの間にか音楽が再生されなくなりました。なぜでしょうか?

以上よろしくお願いいたします。本当に困っています。どうか助けてください。
while(ProcessMessage()==0){
		ClsDrawScreen();
		switch(game_state){
		case 0://タイトル
			LoadGraphScreen(0,0,"dat/title.png",FALSE);
			PlaySound("dat/closedover.mp3",DX_PLAYTYPE_BACK);
			SetDrawBright(256,256,256);
			LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
			SetDrawBright(128,128,128);
			LoadGraphScreen(360,315,"dat/option.png",TRUE);
			LoadGraphScreen(355,375,"dat/quit.png",TRUE);
			SetDrawBright(256,256,256);

			if(CheckHitKey(KEY_INPUT_DOWN)==1)i++;
			if(CheckHitKey(KEY_INPUT_UP)==1)i--;
			i=i%3;
			if(i==0){
				SetDrawBright(256,256,256);
				LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
				SetDrawBright(128,128,128);
				LoadGraphScreen(360,315,"dat/option.png",TRUE);
				LoadGraphScreen(360,375,"dat/quit.png",TRUE);
				SetDrawBright(256,256,256);
			}
			if(i==1){
				SetDrawBright(128,128,128);
				LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
				SetDrawBright(256,256,256);
				LoadGraphScreen(360,315,"dat/option.png",TRUE);
				SetDrawBright(128,128,128);
				LoadGraphScreen(360,375,"dat/quit.png",TRUE);
				SetDrawBright(256,256,256);
			}
			if(i==2){
				SetDrawBright(128,128,128);
				LoadGraphScreen(360,260,"dat/gamestart.png",TRUE);
				LoadGraphScreen(360,315,"dat/option.png",TRUE);
				SetDrawBright(256,256,256);
				LoadGraphScreen(360,375,"dat/quit.png",TRUE);
				SetDrawBright(256,256,256);
			}
			printfDx("i=%d",i);
			ScreenFlip();
			break;



		ScreenFlip();
	}
	
	DxLib_End();
	return 0;
}

pooka

Re:タイトル画面の選択肢について

#2

投稿記事 by pooka » 16年前

①に関して
if(CheckHitKey(KEY_INPUT_DOWN)==1)i++;
if(CheckHitKey(KEY_INPUT_UP)==1)i--;
i=i%3;
を
if(CheckHitKey(KEY_INPUT_UP)==1)
	i = (i + NUM-1) % NUM;
if(CheckHitKey(KEY_INPUT_DOWN)==1)
	i = (i + 1) % NUM;
にしてみてください。
(NUMは選択肢の個数なので今の場合は3)

実際に確認したわけではないので違っているかもしれません(^^;

hamanov

Re:タイトル画面の選択肢について

#3

投稿記事 by hamanov » 16年前

①に関しては、iの型を符号無し整数型にするだけでうまくいくともいます。
②、③に関しては情報が少なすぎて分かりません。

閉鎖

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