无法_getch和切换案例以在C++工作 togeather
Can't get _getch and Switch Case to work togeather in C++
我对C++有点陌生,我很难做一个小"游戏"。
在这里,我尝试创建一种菜单,您可以使用箭头键作为输入来移动该菜单,并使用 Enter 键进行确认,但尽管编译器中没有出现任何错误,但当我到达第二个开关案例时,程序会自行关闭。
我做错了什么?谢谢
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <string>
#include <windows.h>
#include <conio.h>
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define ENTER 13
using namespace std;
int main()
{
struct Stats {
int Hp;
int Atk;
int Speed;
int Defense;
};
struct Defense {
bool IsWeakFire;
bool IsWeakIce;
bool IsWeakWind;
bool IsWeakElectric;
bool IsWeakLight;
bool IsWeakDark;
};
struct CharacterStats {
string Name;
string Desc;
string Persona;
Stats Stats;
Defense Defense;
}Characters[4];
//Program Start
cout << "You are now playng: ProjectPB n" << endl <<
"MC Name> ";
cin >> Characters[0].Name;
cout << "n n The game will now start.";
for (int i=0;i<4;i++)
{
Sleep(500);
cout << ".";
}
system("cls");
//Fight start
int i = 0;
int sel = 1;
int c = 0;
while (i == 0) {
switch (sel)
{
case 1:
system("cls");
cout << " |ATTACK| PERSONA DEFEND" << endl;
system("pause");
break;
case 2:
system("cls");
cout << " ATTACK |PERSONA| DEFEND" << endl;
system("pause");
break;
case 3:
system("cls");
cout << " ATTACK PERSONA |DEFEND|" << endl;
system("pause");
} break;
Sleep(100);
int i = 0;
int sel = 1;
while (i == 0){
switch (sel)
{
case 1:
system("cls");
cout << " |ATTACK| PERSONA DEFEND" << endl;
system("pause");
break;
case 2:
system("cls");
cout << " ATTACK |PERSONA| DEFEND" << endl;
system("pause");
break;
case 3:
system("cls");
cout << " ATTACK PERSONA |DEFEND|" << endl;
system("pause");
} break;
Sleep(100);
int c = _getch();
switch (c)
{
case KEY_LEFT :
sel--;
if (sel <= 0)
{
sel = 3;
}
break;
case KEY_RIGHT :
sel++;
if (sel > 3)
{
sel = 1;
}
break;
case ENTER:
i = 1;
break;
}
}
}
return 0;
}
这一定是因为在此语句期间输入缓冲区为非空
int c = _getch((;
要解决此问题,只需在 getch(( 之前清除缓冲区
while ((getchar((( != ''(;
相关文章:
- QSqlquery prepare()和bindvalue()不工作
- 导入库可以跨dll版本工作吗
- 以螺旋方式打印矩阵的程序.(工作不好)
- 对象指针在c++中是如何工作的
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- C++为线程工作动态地分割例程
- 为什么我的 std::ref 无法按预期工作?
- 布尔比较运算符是如何在C++中工作的
- SampleConsensusPrerejective(ext.RANSAC)是如何真正工作的
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- <<操作员在下面的行中工作
- 有人能解释一下为什么下界是这样工作的吗C++的
- ExtractIconEx:可以工作,但偶尔会崩溃
- C++中的memset函数工作不正常
- 当我在第一个循环中使用"auto"时,它工作正常,但是使用"int"它会给出错误,为什么?
- 链表c++插入,所有情况都已检查,但没有任何工作
- 为什么stream::忽略未按预期工作