没有响应的程序,显示按下的键并使用“q”退出程序

时间:2012-10-16 17:15:27

标签: visual-c++

我正在关注如何使用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");
}

2 个答案:

答案 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;
}