ページ 11

項目選択時に画像を表示するには

Posted: 2009年10月06日(火) 12:32
by マウ
タイトル通り、矢印キーで項目を選ぶと画像が切り替わって表示させるにはどうすればいいのでしょうか。

Re:項目選択時に画像を表示するには

Posted: 2009年10月06日(火) 13:01
by ちゃお
項目を切り替えたときにフラグも切り替えることでできると思います。

矢印がy=200の位置にあるとき(項目1のところ)フラグ=1を代入
矢印がy=300の位置にあるとき(項目2のところ)フラグ=2を代入ってして、

if(フラグ=1なら)
この画像を描画
else if(フラグ=2なら)
 この画像を描画

ってすればできます。
他にも方法は色々あると思います。

Re:項目選択時に画像を表示するには

Posted: 2009年10月07日(水) 10:36
by マウ
if(y==60){
		LoadGraphScreen( 410 , 50 , "丸1.bmp" , TRUE );
		y+=30;
	}else if(y==90){
		LoadGraphScreen( 410 , 50 , "丸2.bmp" , TRUE );
	}
よくわからないのですが、最初の画像は表示できてるのですが切り替えされません。
プログラム自体が変なのはわかっているのですがどうすればいいのでしょうか。

Re:項目選択時に画像を表示するには

Posted: 2009年10月07日(水) 11:06
by Ma
どこを修正したらいいかと聞かれたら、つっこみどころ満載ですが、

一番指摘するべきところは、ループを使っているのか分からないところです。
while 等を使ってループしないといけないでしょう。

次に、LoadGraphScreen 自体使わない方がいいです。

LoadGraph と、 DrawGraph を使うべきですよ。

これについての詳細は、ゲームプログラミングの館に書かれてあります。
>14. メモリに画像を読み込んで表示する。
http://dixq.net/g/#14

まずはこの館をすべて読破したほうがいいですよ。

*質問に具体的に答えると…

1. 現在の選択中の項目は何番目か記録するint型変数を作っておく。
2. キーが押されるたびに、その変数を1づつ上昇や減少させる。
3. 変数の値に応じて、画像を表示する。

擬似コードです。
int max = 選択項目数-1;
int selection = 0;//選択中の項目
while(~~~){
	if(上キーが押されて1フレーム){
		selection++;
		if(selection > max)
			selection = 0;
	}
	else if(下キーが押されて1フレーム){
		selection--;
		if(selection < 0)
			selection = max;
	}
	if(selection == 0){
		選択項目0 描画
	}
	else if(selection == 1){
		選択項目1 描画
	}
	……
	…
}

Re:項目選択時に画像を表示するには

Posted: 2009年10月09日(金) 10:56
by マウ
上キーが押されて1フレームとはどういうのでしょうか。

key[~~]みたいなのではないのですか?

Re:項目選択時に画像を表示するには

Posted: 2009年10月10日(土) 00:35
by Ma
>上キーが押されて1フレームとはどういうのでしょうか。
>key[~~]みたいなのではないのですか?

そういうことです。
上キーが押されてから、1フレーム(GetHitKeyStateAll系の関数を)経過した。
言い方を変えれば、今その瞬間に押された。という意味です。

もし、
40a. 「キーがどれ位押されたか」を判定する関数
http://dixq.net/g/#40
このページの方法で、計算しているならば、

上キーが押されて1フレーム


Key[KEY_INPUT_UP]==1

になります。

Re:項目選択時に画像を表示するには

Posted: 2009年10月15日(木) 11:52
by マウ
返事遅くなりましたが上のプログラムをint WINAPI WinMain()のなかじゃなく、

void()のなかに入れる場合はwhile(~~~)をどうすればいいのでしょうか。