ページ 11

メニュー画面について

Posted: 2010年6月02日(水) 22:34
by まる
はじめまして。私はc++を最近学び始めた初心者です。

ゲームのメニュー画面についてですが、C言語-ゲームプログラミングの館33章の「選択画面の作り方」を見て、
NEW GAMEなどの文字を、文字ではなく画像を使ってみたいなと思っています。

具体的には、選択されているときは周りが光った画像、選択されてないときは薄暗い画像と使い分けるようにしたいです。

17章「画像を分割して読み込む」を読んで画像は作ってみましたが、肝心のプログラミングは何をすればいいか
分からず困っています。アドバイスをいただけないでしょうか

Re:メニュー画面について

Posted: 2010年6月03日(木) 08:10
by Dixq (管理人)
メニュー項目の文字の部分に画像を表示すればいいだけではないでしょうか?

まずは画像そのものを明るい、暗いで表現してみてはどうでしょう。
明るいか暗いかは
http://homepage2.nifty.com/natupaji/DxL ... html#R3N18

http://homepage2.nifty.com/natupaji/DxL ... html#R3N17
のαブレンド等で表現すると良いと思います。

Re:メニュー画面について

Posted: 2010年6月03日(木) 21:16
by まる
urlを参考にやってみたいと思います。
ありがとうございました。 画像

Re:メニュー画面について

Posted: 2010年6月03日(木) 22:09
by まる
urlを参考にint SetDrawBright()を使ってみたいと思います。

33章の「選択画面の作り方」では"■"という記号を動かして選択するようになっていますが、"■"を使わず、明るい画像・暗い画像を切り替えて選択しているところを示すには、どのようにしたらいいのでしょうか?

Re:メニュー画面について

Posted: 2010年6月03日(木) 22:19
by Dixq (管理人)
SetDrawBright関数の使い方は解りますか?

例えば半分の輝度で描画したければ

SetDrawBright(128,128,128);
DrawGraph( x, y, ImageHandle, TRUE );

です。これはMAX255に対して赤=128、緑=128、青=128を表しています。
通常描画は

SetDrawBright(255,255,255);
DrawGraph( x, y, ImageHandle, TRUE );

です。
詳細はリファレンスをご覧ください。
http://homepage2.nifty.com/natupaji/DxLib/dxfunc.html

赤っぽくしたいなら
SetDrawBright(255,128,128);

なんてこともできます。

Re:メニュー画面について

Posted: 2010年6月04日(金) 21:35
by まる
ありがとうございます。

SetDrawBrightの使い方は理解できました。

しかし、画像の切り替えのやり方が分かりません。 画像

Re:メニュー画面について

Posted: 2010年6月07日(月) 19:30
by ひよこ
画像の切り替え
>>これって画像を変えるということですか?
>>そうだったらLoadGraphの引数を変えるか、違う画像ハンドルでLoadGraphを使うかの方法があります。

スタートか終了を選ぶメニュー画面を作ってみます。注意!そのまま使えません。
int gra_start,gra_end;//スタート、終了の画像ハンドル
gra_start=LoadGraph("Start.png");
gra_end=LoadGraph("End.png");

int menu=0;//メニュー番号 0(スタート) 1(終了)

if(menu==0){
SetDrawBright(256,256,256); //明るく
DrawGraph(x,y,gra_start,TRUE); 

SetDrawBright(128,128,128); //暗く
DrawGraph(x,y,gra_end,TRUE); 
}

if(menu==1){
SetDrawBright(256,256,256); //明るく
DrawGraph(x,y,gra_end,TRUE); 

SetDrawBright(128,128,128); //暗く
DrawGraph(x,y,gra_start,TRUE); 
}

Re:メニュー画面について

Posted: 2010年6月07日(月) 22:11
by まる
回答ありがとうございます。

上を参考にやってみたいと思います。