やりたいこと:UNDERTALEのようにメニューの選択をできるようにしたい。
現状:選択肢が表示され、現在選択されているものの確認はできるもののほかの選択肢を選ぶことができない。
初歩的なところと存じますが、ご助力願えたら幸いです。
よろしくお願いします。
メインスクリプト
#include "DxLib.h"
#include "MainCode.h"
#include "GameSystem.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
ChangeWindowMode(TRUE); // ウインドウモードに変更
SetWindowText("ゲームを作ってみたよ"); // ウィンドウのタイトルを指定
SetGraphMode(Window::WIDTH, Window::HEIGHT, Window::COLOR_BIT); // 解像度とカラービット数を設定
if (DxLib_Init() == -1) { return EXIT_FAILURE; } // 初期化に失敗したらやめる (EXIT_FAILURE: -1)
/*
ここで変数の初期化, 画像のロードなど
*/
SetDrawScreen(DX_SCREEN_BACK);
/*******************GAME LOOP********************************/
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0) {
/*ここで, パラメータをいろいろいじる.*/
ChooseTime();
ClearDrawScreen(); //画面の内容を消去
/*ここで, いろいろ描画する.*/
ScreenCreate();
ScreenFlip();
}
/*******************GAME LOOP END***************************/
DxLib_End(); // DXライブラリ使用の終了処理
return EXIT_SUCCESS; // プログラムの終了 (EXIT_SUCCESS: 0)
}
#include "DxLib.h"
#include "GameSystem.h"
/*文字カラー指定*/
unsigned int WhiteColor = GetColor(255, 255, 255);
/*選択肢分岐*/
int Choose; //0=攻撃,1=防御,2=回復,3=観察
int ScreenCreate() {
/*テキストボックスの設置*/
DrawBox(250, 450, 1030, 650, WhiteColor, FALSE);
/*敵(みたいなの)の設置*/
DrawCircle(640, 300, 50, WhiteColor, TRUE);
DrawFormatString(620, 225, WhiteColor, "敵です"); //自己紹介
/*コマンドの配置*/
DrawFormatString(375, 500, WhiteColor, "攻撃"); //攻撃
DrawFormatString(875, 500, WhiteColor, "防御"); //防御
DrawFormatString(375, 585, WhiteColor, "回復"); //回復
DrawFormatString(875, 585, WhiteColor, "観察"); //観察
ChooseSystem();
return 0;
}
int ChooseTime() {
if (Choose == 0) {
if (CheckHitKey(KEY_INPUT_RIGHT)) {
Choose += 1;
}
else if (CheckHitKey(KEY_INPUT_DOWN)) {
Choose += 2;
}
else if (CheckHitKey(KEY_INPUT_UP)) {
Choose += 2;
}
else if (CheckHitKey(KEY_INPUT_LEFT)) {
Choose += 1;
}
}
if (Choose == 1) {
if (CheckHitKey(KEY_INPUT_LEFT)) {
Choose -= 1;
}
else if (CheckHitKey(KEY_INPUT_DOWN)) {
Choose += 2;
}
else if (CheckHitKey(KEY_INPUT_RIGHT)) {
Choose -= 1;
}
else if (CheckHitKey(KEY_INPUT_UP)) {
Choose += 2;
}
}
if (Choose == 2) {
if (CheckHitKey(KEY_INPUT_UP)) {
Choose -= 2;
}
else if (CheckHitKey(KEY_INPUT_RIGHT)) {
Choose += 1;
}
else if (CheckHitKey(KEY_INPUT_DOWN)) {
Choose -= 2;
}
else if (CheckHitKey(KEY_INPUT_LEFT)) {
Choose += 1;
}
}
if (Choose == 3) {
if (CheckHitKey(KEY_INPUT_UP)) {
Choose -= 2;
}
else if (CheckHitKey(KEY_INPUT_LEFT)) {
Choose -= 1;
}
else if (CheckHitKey(KEY_INPUT_DOWN)) {
Choose -= 2;
}
else if (CheckHitKey(KEY_INPUT_RIGHT)) {
Choose -= 1;
}
}
return Choose;
}
int ChooseSystem() {
switch (Choose) {
case 0:
DrawFormatString(350, 500, WhiteColor, "→");
break;
case 1:
DrawFormatString(850, 500, WhiteColor, "→");
break;
case 2:
DrawFormatString(350, 585, WhiteColor, "→");
break;
case 3:
DrawFormatString(850, 585, WhiteColor, "→");
break;
}
return 0;
}
#pragma once
struct Window {
const static int WIDTH = 1280; // 横幅[px]
const static int HEIGHT = 720; // 縦幅[px]
const static int COLOR_BIT = 32; // カラービット[bit]
};