メニューで選択している画像を変えようとサンプルに工夫を加えて
int i[5];
i[0] = 0, i[1] = 0, i[2] = 0, i[3] = 0, i[4] = 0;
// このように記述すると、EASY=0, NOMAL=1, HARD=2・・・GAME_END=4となっています
enum
{
EASY, NOMAL, HARD, OPTION, GAME_END
};
// ステータスの初期化
OPState = EASY;
// ループ処理
while(ProcessMessage() = 0)
{
ClearDrawScreen();
//タイトルのバック画面描画(省略)
graph_title();
// カーソル処理
if( CheckHitKey(KEY_INPUT_DOWN) && (OPState < GAME_END) )
{
OPState++;
}
if( CheckHitKey(KEY_INPUT_UP) && (OPState > EASY) )
{
OPState--;
}
//描画の分岐
switch(OPState)
{
case EASY:
i[0] = 1;
i[1] = 0;
i[2] = 0;
i[3] = 0;
i[4] = 0;
case NOMAL:
i[0] = 0;
i[1] = 1;
i[2] = 0;
i[3] = 0;
i[4] = 0;
case HARD:
i[0] = 0;
i[1] = 0;
i[2] = 1;
i[3] = 0;
i[4] = 0;
case OPTION:
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 1;
i[4] = 0;
case GAME_END:
i[0] = 0;
i[1] = 0;
i[2] = 0;
i[3] = 0;
i[4] = 1;
}
// カーソルの値で処理を分岐
if(CheckHitKey(KEY_INPUT_Z)
{
switch(OPState)
{
case EASY: GameEasy(); break;
case NOMAL: GameNomal(); break;
case HARD: GameHard(); break;
case OPTION: Option(); break;
case GAME_END: GameEnd(); break;
}
}
//描画処理
DrawGraph(x座標,y座標,img_easy[i[0]],TRUE);
DrawGraph(x座標,y座標,img_nomal[i[1]],TRUE);
DrawGraph(x座標,y座標,img_hard[i[2]],TRUE);
DrawGraph(x座標,y座標,img_option[i[3]],TRUE);
DrawGraph(x座標,y座標,img_game_end[i[4]],TRUE);
ScreenFlip();
}
注意で実際にはx座標,y座標には数値があります。
画像描画の[/url]の中が[0]なら非選択の画像、[1]なら選択している画像、です。
あとタイトル画像描画と画像の読み込みは文が長くなるので省きました。
こんな感じ(実際は少し違ったりしますが、だいたい同じです)にしてみたんですが、うまくできません。
変な感じに描画されます。
おかしい点がわからないのでアドバイスお願いします。