1

我正在关注如何使用 C++ 制作一个非常简单的游戏的教程视频。我在教程的早期阶段,直到现在我还没有遇到任何问题。根据我运行程序时的视频,它应该显示我按下的任何键“这是你按下的:(按下的键在这里)”。此外,当我按 Q 键时它应该退出程序。在视频上它工作正常,但遗憾的是在我的屏幕上它只是一个空白的 DOS 提示符,没有任何响应。任何人都可以看看我到目前为止得到了什么,看看是否有办法解决这个问题。同样,我是新来的,所以任何帮助都将不胜感激。也许缺少标题或其他什么...

游戏.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;
}

游戏.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.

主文件

#include "game.h"


int main ()
{
Game gameHeart;

gameHeart.run();

return 0;
//system("pause");
}
4

2 回答 2

0

我怀疑 kbhit 方法返回 false 并且永远不会提示您输入键。您可以通过注释掉该行来轻松测试这一点,以便保证调用 getch()。

于 2012-10-16T17:22:10.277 回答
0

Game.getInput总是返回,false所以Game.run会无休止地要求键盘输入。这是修复。

bool Game::getInput(char *c)
{
    if (kbhit())
    {
        *c = getch();
        return true;
    }
    return false;
}
于 2012-10-16T18:36:01.280 回答