我正在尝试制作一个c ++控制台游戏 - 有一个带有'#'作为边框的地图和一个可以通过键盘移动的'@'。但是当按下按钮时,没有任何反应......无法弄清楚可能导致此行为的原因。
#include <iostream>
#include <windows.h>
using namespace std;
char Map[10][10]={ "#########",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"# #",
"#@ #",
"#########"};
int Gamespeed=100;
int lvl=0;
bool stopgame=false;
int main()
{
while (stopgame==false)
{
system("cls");
for (int y=0; y<10; y++)
{
cout<<Map[y]<<endl; //rows
}
for (int y=0; y<10; y++) //rows
for (int x=0; x<10; x++) //columns
{
switch (Map[y][x])
{
case '@':
{ cout<<"@ here";
if (GetAsyncKeyState(VK_UP)!=0)
{ cout<<"Key up";
int y2=y-1;
switch (Map[y2][x])
{
case ' ':
{
Map[y][x]=' ';
y--;
Map[y][x]='@';
}
break;
}
}
if (GetAsyncKeyState(VK_DOWN)!=0)
{
switch (Map[y+1][x])
{
case ' ':
{
Map[y][x]=' ';
y++;
Map[y][x]='@';
}
break;
}
}
if (GetAsyncKeyState(VK_RIGHT)!=0)
{
switch (Map[y][x+1])
{
case ' ':
{
Map[y][x]=' ';
x++;
Map[y][x]='@';
}
break;
}
}
if (GetAsyncKeyState(VK_LEFT)!=0)
{
switch (Map[y][x-1])
{
case ' ':
{
Map[y][x]=' ';
x--;
Map[y][x]='@';
}
break;
}
}
}
}
}
return 0;
}
答案 0 :(得分:1)
哦,糟糕的格式和代码风格,但对我来说,如果你为while
周期添加紧密支撑它是有效的:
int main()
{
while (stopgame == false)
{
// your code here
} // <- you don't have this brace
return 0;
}