2013-11-01 5 views
5

私はまだCとncursesを新しくしています。私はマルチスレッドのポンゲームを作ることに関わる課題を尋ねられました。ゲームは正常に実行され、適切なロス条件で終了しますが、終了時に端末がすべて台無しになります。私はエコーを取得しないので、それを取得するにはstty echoと入力しなければなりません。それでも端末は奇妙な動作をします。C cursesプログラムの終了後に画面を通常に戻す方法

私の最後の機能は次のとおりです。ここで

void wrap_up(){ 

    curs_set(1); 
    clear(); 
    endwin(); 
    refresh(); 
} 

はスクリーンショットです。どうすれば修正できますか?

enter image description here

+0

機能コードは何ですか? – LeeNeverGup

+0

最小限の作業(コンパイル可能)の例を提供してください。 –

答えて

5

endwinの後にリフレッシュを削除します。 endwinの後でrefreshを呼び出すと、プログラムはcursesモードに戻ります。

-1

これは、実装方法によって異なります。 これを移植可能にするには、作業中のOSに応じて画面をクリアするコンパイル指示を実装することができます。

例:あなたがそのようなものを使用することができ、コンパイル時間でそう

void Refresh(){ 
#ifdef WIN_32_OS 
    system("cls"); 
#elif LINUX_OS 
    system("clear"); 
#else // (DOS, for example) 
    system("Another command"); 
#endif 
} 

bash2.2 $ gccの-c -DLINUX_OS code.c -oコード

+0

は解決策ではなく回避策のように見えます。また、 'clear'コマンドはこのケースでは機能しません。リセットまたはtsetを調べています。 – CaseyJones

+0

@CaseyJones私はそれを得ましたが、なぜ私の答えが役に立たないのか分かりませんでした。 – rfermi

+1

あなたの答えは問題を解決しない、私は恐れている。 Clearは、OPによって記述された状況の間、端末を動作状態に戻さない。そのためには、 'reset'や 'tset'コマンドを使う必要があります。 – CaseyJones

関連する問題