我正在关注如何使用C ++制作一个非常简单的游戏的教程视频。我很早就在教程中,直到现在我都没有问题。当我运行该程序时,它应该显示任何按下的按键,“按下你按下的按钮:(按下按键进入此处)”。此外,当我按下Q键时它应退出程序。在视频上它工作正常,但遗憾的是在我的屏幕上它只是一个空白的DOS提示,不响应任何东西。任何人都可以看看到目前为止我得到了什么,看看是否有办法解决这个问题。再次,我是新的,所以任何帮助将不胜感激。也许有一个标题丢失或者什么......
game.cpp
#include <iostream> //Include this and namespace in all files.
using namespace std;
#include "game.h"
#include <conio.h>
bool Game::run(void)
{
char key = ' ';
while (key != 'q')
{
while (!getInput(&key))
{
}
cout << "Here's what you pressed: " << key << endl;
}
cout << "End of the game" << endl;
return true;
}
bool Game::getInput(char *c)
{
if (kbhit())
{
*c = getch();
}
return false;
}
game.h
#ifndef GAME_H //Make sure this accompanies #endif.
#define GAME_H
class Game
{
public:
bool run (void);
protected:
bool getInput (char *c);
void timerUpdate (void);
};
#endif //Make sure this accompanies #ifndef.
的main.cpp
#include "game.h"
int main ()
{
Game gameHeart;
gameHeart.run();
return 0;
//system("pause");
}
答案 0 :(得分:0)
我怀疑kbhit方法返回false并且永远不会提示您输入键输入。您可以通过注释掉该行来轻松测试这一点,以便保证调用getch()。
答案 1 :(得分:0)
Game.getInput
始终返回false
,因此Game.run
会无休止地要求键盘输入。这是修复。
bool Game::getInput(char *c)
{
if (kbhit())
{
*c = getch();
return true;
}
return false;
}