2017-04-14 8 views
-2

私はコンソールアプリケーションでスネークプログラムを作成したいと思っていました。 でも、私は混乱しています。 このように私の問題:**で変数からインクリメントまたはデクリメントする方法まで

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
#include <conio.h> 
using namespace std; 
int main() { 
    int a=2000; 
    while (1) { 
     cout << time(0)<<endl; 
     a -= 100; 
     _sleep(a); 
     **if (getch())break; 
     else continue; 
    } 
} 

私の問題は、私は一つのキーを押すまで、そのwhileループを行うには、そこから欲しいです。 たとえば、次のように実行します。 印刷時間()。 a = 1900。 1.9秒待つ。 印刷時間()。 a = 1800。 待ち1.8秒 //これでキーが押されました。 break.//endプログラム

私はconio.hライブラリでkbhit()を使用していました。

+0

プラットフォーム固有のAPIを使用して、キーが押されたか解放されたかを判断する必要があります。標準のC++言語には、キーを押す機能はありません。 C++の入力関数*ブロック*または少なくとも文字が到着するまで待つ; (Enterキーを押すなどして)多くの文字が入力されるのを待つことがあります。 –

+0

また、インターネットで "StackOverflow C++ snake game console"を検索して、同様の質問がたくさんあることを確認してください。 –

答えて

0

これを試すことができます。もちろん、親プロセスで何かをして、getchar()が_getchar()の使用など、待たずにキーを押すことを返すようにする必要があります。

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
#include <signal.h> 
#include <conio.h> 
using namespace std; 
int main() { 
    pid_t id; 
    id = fork(); 
    if(id) 
    { 
     getchar(); 
     kill(id, SIGTERM); 
    } 
    else 
    { 
     int a=2000; 
     while (1) { 
      cout << time(0)<<endl; 
      a -= 100; 
      _sleep(a); 
      /*if (getch())break; 
      else continue; 
      */ 
     } 
    } 
} 
関連する問題