エンターキーでゲーム終了

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

エンターキーでゲーム終了

#1

投稿記事 by horohuki » 7年前

初めのメニュー画面を作っています。
選択してエンターキーを押すことでほかの画面に切り替えるまでは成功しましたが、今設定の項目をゲーム終了ボタンに変え、選択するとゲームが終了するようなボタンを作りたいと思っています。でもswitch文で分岐しているのでどのようにやればいいかがいまいちよくわかりません。どなたかおしえてください。

コード:

#include "Menu.h"
#include "SceneMgr.h"
#include "DxLib.h"
#include "Keyboard.h"

static int mImageHandle;    //画像ハンドル格納用変数

							//初期化
void Menu_Initialize() {
	mImageHandle = LoadGraph("images/Scene_Menu.png");    //画像のロード
}

//終了処理
void Menu_Finalize() {
	DeleteGraph(mImageHandle);    //画像の解放
}

const static int GAME_Y = 240;    //「ゲーム」文字のy位置
const static int CONFIG_Y = 270;    //「設定」文字のy位置

typedef enum {
	eMenu_Game,        //ゲーム
	eMenu_Config,    //設定

	eMenu_Num,        //本項目の数
} eMenu;

static int NowSelect = eMenu_Game;    //現在の選択状態(初期はゲーム選択中)

//更新
void Menu_Update() {
	if (Keyboard_Get(KEY_INPUT_DOWN) == 1) {//下キーが押されていたら
		NowSelect = (NowSelect + 1) % eMenu_Num;//選択状態を一つ下げる
	}
	if (Keyboard_Get(KEY_INPUT_UP) == 1) {//上キーが押されていたら
		NowSelect = (NowSelect + (eMenu_Num - 1)) % eMenu_Num;//選択状態を一つ上げる
	}
	if (Keyboard_Get(KEY_INPUT_RETURN) == 1) {//エンターキーが押されたら
		switch (NowSelect) {//現在選択中の状態によって処理を分岐
		case eMenu_Game://ゲーム選択中なら
			SceneMgr_ChangeScene(eScene_Game);//シーンをゲーム画面に変更
			break;
		case eMenu_Config://設定選択中なら
			SceneMgr_ChangeScene(eScene_Config);//シーンを設定画面に変更
		}
	}

}

//描画
void Menu_Draw() {
	DrawGraph(0, 0, mImageHandle, FALSE);
	DrawString(200, 150, "メニュー画面です。", GetColor(255, 255, 255));
	DrawString(200, 170, "上下キーを押し、エンターを押して下さい。", GetColor(255, 255, 255));
	DrawString(280, GAME_Y, "ゲーム", GetColor(255, 255, 255));
	DrawString(280, CONFIG_Y, "設定", GetColor(255, 255, 255));
	int y = 0;
	switch (NowSelect) {//現在の選択状態に従って処理を分岐
	case eMenu_Game://ゲーム選択中なら
		y = GAME_Y;    //ゲームの座標を格納
		break;
	case eMenu_Config://設定選択中なら
		y = CONFIG_Y;    //設定の座標を格納
		break;
	}
	DrawString(250, y, "⇒", GetColor(255, 255, 255));
}

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: エンターキーでゲーム終了

#2

投稿記事 by Dixq (管理人) » 7年前

シーン管理の方法は
http://dixq.net/rp2/
で少し紹介しているので参考にしてみてください。

今の作りのまま設計するなら SceneMgr_ChangeScene で渡している引数にゲーム終了のパラメータを渡し、それを受け取ったらメインループをbreakするようにすればいいかと思います。
eScene

eScene_End
とでも名付けた識別子を追加して、それを使ってみてましょう。

返信

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