やりたいことは、移動できるようになったものWhileで1秒間に60回も移動してしまうためまずそれを直したいのと、今は一定の速度だと思うので(早くてわからない)先程言ったとおり一瞬押したら一つ下・上、長押しなら早く移動できるようにしたいです。
現状のコード
#include "../DxLib/DxLib.h"
typedef struct {
int x, y;
char name[128];
}MENU;
unsigned int Write;
unsigned int Black;
unsigned int Green;
unsigned int Red;
unsigned int Yellow;
unsigned int Blue;
int nowSelect = 0; // 現在選択されている項目(の初期化)
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
SetGraphMode(800, 600, 32); // ウィンドウサイズの変更、カラービットの設定
ChangeWindowMode(TRUE); // ウィンドウモードに
SetMainWindowText("東方風アクションゲーム"); // ウィンドウのタイトル
if (DxLib_Init() == -1) return -1; // DxLibの初期化
SetDrawScreen(DX_SCREEN_BACK); // 描画先を裏画面に
ChangeFontType(DX_FONTTYPE_ANTIALIASING_EDGE); // フォントタイプをアンチエイリアス付き・エッジ付きにする
Write = GetColor(255, 255, 255);
Black = GetColor(0, 0, 0);
Green = GetColor(0, 128, 0);
Red = GetColor(255, 0, 0);
Yellow = GetColor(255, 255, 0);
Blue = GetColor(0, 0, 255);
enum {
TITLE, // タイトル画面
GAME, // ゲーム画面
RESULT // リザルト画面
}scene = TITLE;
MENU menu[4] {
{100, 150, "ゲームスタート"},
{100, 190, "操作方法"},
{100, 230, "設定"},
{100, 270, "ゲーム終了"}
};
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClearDrawScreen();
if (scene == TITLE)
{
for (int i = 0; i < 4; i++) {
DrawFormatString(menu[i].x, menu[i].y, Write, menu[i].name);
}
if (CheckHitKey(KEY_INPUT_UP) == 1) nowSelect--;
if (CheckHitKey(KEY_INPUT_DOWN) == 1) nowSelect++;
if (nowSelect < 0) nowSelect = 0;
else if (nowSelect > 3) nowSelect = 3;
DrawFormatString(80, menu[nowSelect].y, Write, "■");
}
ScreenFlip();
}
WaitKey();
DxLib_End(); // DxLibの終了
return 0; // プログラムの終了
}
どこを改良すればそのようにできるでしょうか?
お願いいたします。