1

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");
}
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 に答える