メニュー画面からゲーム画面への遷移がうまくいきません

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

メニュー画面からゲーム画面への遷移がうまくいきません

#1

投稿記事 by やまざき » 7年前

こちらのサイトのメニュー画面の作り方を参考にして作ったのですができませ。
解決お願いします。


Main.cpp
#include "DxLib.h"
#include "Menu.h"
#include "Keyboard.h"

int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更と初期化と裏画面設定

while (ScreenFlip() == 0 && ProcessMessage() == 0 && ClearDrawScreen() == 0) { //画面更新 & メッセージ処理 & 画面消去

MenuUpdate();
MenuSaid();
KeyUpdate(); //キーボード更新
}
DxLib_End(); //DXライブラリ終了処理
return 0;
}

Menu.cpp
#include "DxLib.h"
#include "Menu.h"
#include "Scene.h"
#include "Keyboard.h"

typedef enum {
start, //スタート
end, //終了
MenuNumber, //本項目の数
} Menu;

static int nselect = start; //初期選択


//更新
void MenuUpdate() {
if (KeyGet(KEY_INPUT_UP) == 1) { //上キーが押されると
nselect = (nselect + (MenuNumber- 1)) % MenuNumber; //一つ上げる
}
if (KeyGet(KEY_INPUT_DOWN) == 1) { //下キーが押されると
nselect = (nselect + 1) % MenuNumber; //一つ下げる
}
if (KeyGet(KEY_INPUT_RETURN) == 1) { //エンターキーが押されると

switch (nselect) { //選択分岐
case start: //スタート選択
SceneChange(Scenestart);//シーンをゲーム画面に変更
break;
case end: //終了選択
DxLib_End(); // DXライブラリ終了処理
break;
}
}
}

//表示
void MenuSaid() {
SetFontSize(50); //サイズ50
SetFontThickness(5); //太さ5
ChangeFont("MS ゴシック"); //MSゴシック

DrawString(150, 100,"BattleShooter",GetColor(0, 0, 255) );
DrawString(200, 250,"スタート",GetColor(255, 255, 255));
DrawString(250, 320,"終了",GetColor(255, 255, 255));

int zahyou = 0; //矢印座標

switch (nselect) { //選択分岐
case start: //スタート選択
zahyou = 250; //スタート座標
break;
case end: //終了選択
zahyou = 320; //終了座標
break;
}
DrawString(150, zahyou,"→", GetColor(255, 255, 255));
}

Scene.cpp
#include "DxLib.h"
#include "Menu.h"
#include "Scene.h"
#include "Game.h"

static Scene scene = Scenestart; //シーン変数

//更新
void SceneUpdate() {
switch (scene) { //シーン処理分岐
case Scenemenu: //メニュー選択
MenuUpdate(); //メニュー更新処理
break;
case Scenestart: //スタート選択
GameUpdate(); //ゲーム更新処理
break;
}
}

//表示
void SceneSaid() {
switch (scene) { //シーン処理分岐
case Scenemenu: //メニュー選択
MenuSaid(); //メニュー表示処理
break;
case Scenestart: //スタート選択
GameSaid(); //ゲーム表示処理
break;
}
}

//変更
void SceneChange(Scene NextScene) {
scene = NextScene;
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: メニュー画面からゲーム画面への遷移がうまくいきません

#2

投稿記事 by みけCAT » 7年前

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
やまざき さんが書きました:こちらのサイトのメニュー画面の作り方を参考にして作ったのですができませ。
解決お願いします。
WinMain関数から直接MenuUpdate関数やMenuSaid関数を読んでしまうとSceneChangeが効かないので、
代わりにSceneUpdate関数やSceneSaid関数を呼ぶようにすると改善するかもしれません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

返信

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