インベーダーモドキ(mainmenuのソースとヘッダー)

/*************************************************
*mainmenu.h
**************************************************/
//インクルードガード。
#ifndef MAINMENU_H
//インクルードガード用定数。
#define MAINMENU_H
//メインメニュー間の処理。
void MainmenuProcess();
//メインメニュー初期化処理。
void InitMainmenu();
#endif // !ENDING?H

/*************************************************
*mainmenu.cpp
**************************************************/

#include "Console_game_lib.h"
#include "global.h"

#define NORMALMODE_POS_X (WINDOW_W / 2)
#define NORMALMODE_POS_Y (WINDOW_H / 2)
#define IKEMENMODE_POS_X (WINDOW_W / 2)
#define IKEMENMODE_POS_Y (WINDOW_H / 2 + 1)
#define EXITMODE_POS_X (WINDOW_W / 2)
#define EXITMODE_POS_Y (WINDOW_H / 2 + 2)
#define DECISION__POS_X (WINDOW_W / 2)
#define DECISION__POS_Y (WINDOW_H / 2 + 5)

enum MAINMENU_CURSOR {
MAINMENU_CURSOR_NORMAL,
MAINMENU_CURSOR_IKEMEN,
MAINMENU_CURSOR_EXIT,
MAINMENU_CURSOR_CURSOR,
MAINMENU_CURSOR_MAX,
};
CHARACTER mainmenu_cursor[MAINMENU_CURSOR_MAX]
= { {NORMALMODE_POS_X,NORMALMODE_POS_Y},{IKEMENMODE_POS_X,IKEMENMODE_POS_Y},{EXITMODE_POS_X ,EXITMODE_POS_Y},{NORMALMODE_POS_X -2 ,NORMALMODE_POS_Y} };
int select = MAINMENU_CURSOR_NORMAL;
//メインメニュー初期化処理。
void InitMainmenu() {
select = MAINMENU_CURSOR_NORMAL;
mainmenu_cursor[MAINMENU_CURSOR_CURSOR].x = mainmenu_cursor[select].x;
mainmenu_cursor[MAINMENU_CURSOR_CURSOR].y = mainmenu_cursor[select].y;
}
//メインメニューでの処理。
void MainmenuProcess() {
if (CheckInputStateCHECK_INPUT_STATE_TRIGGER) {
select - 1 < MAINMENU_CURSOR_NORMAL ? select = MAINMENU_CURSOR_EXIT : select--;
mainmenu_cursor[MAINMENU_CURSOR_CURSOR].x = mainmenu_cursor[select].x;
mainmenu_cursor[MAINMENU_CURSOR_CURSOR].y = mainmenu_cursor[select].y;
}else if (CheckInputStateCHECK_INPUT_STATE_TRIGGER) {
MAINMENU_CURSOR_EXIT < select + 1 ? select = MAINMENU_CURSOR_NORMAL : select++;
mainmenu_cursor[MAINMENU_CURSOR_CURSOR].x = mainmenu_cursor[select].x;
mainmenu_cursor[MAINMENU_CURSOR_CURSOR].y = mainmenu_cursor[select].y;
}
//決定ボタンが押された。
if (CheckInputStateCHECK_INPUT_STATE_TRIGGER) {
//他の項目を追加した時にも対応できるようにswitchで管理しておく。二択なら参考演算子の方が短く済むゾ。
switch (select)
{
case MAINMENU_CURSOR_NORMAL:
InitAllCharacter(MAPDATA_0);
game_handle.game_state = GAME_STATE_INGAME;
break;
case MAINMENU_CURSOR_IKEMEN:
InitAllCharacter(MAPDATA_1);
game_handle.game_state = GAME_STATE_INGAME;
break;
case MAINMENU_CURSOR_EXIT:
//ゲームを終了する。
game_handle.game_state = GAME_STATE_EXIT;
break;
}
}
//セレクトメニュー表示。
Draw(NORMALMODE_POS_X - sizeof("通常モード") / 2 + 1, NORMALMODE_POS_Y, "通常モード");
Draw(IKEMENMODE_POS_X - sizeof("IKEMENモード(迫真)") / 2 + 1, IKEMENMODE_POS_Y, "IKEMENモード(迫真)");
Draw(EXITMODE_POS_X - sizeof("EXIT") / 2 + 1, EXITMODE_POS_Y, "EXIT");
Draw(mainmenu_cursor[MAINMENU_CURSOR_CURSOR].x - sizeof("IKEMENモード(迫真)") / 2 - 1, mainmenu_cursor[MAINMENU_CURSOR_CURSOR].y, "*");
if ((game_handle.mainmenu_flame % 10) / 5)
{
Draw(DECISION__POS_X - sizeof("↑OR↓で選択。SPACEで決定さ。") / 2 + 1, DECISION__POS_Y, "↑OR↓で選択。SPACEで決定さ。");
}

//時間を進める。 game_handle.mainmenu_flame++;

}

この記事が気に入ったらサポートをしてみませんか?