2013-11-01 16 views
5

Hala yeni C ve ncurses'lardayım. Çok iş parçacıklı bir pong oyunu yapmayı içeren bir ödev yapmam istendi. Oyun iyi çalışıyor ve doğru kayıp koşullarıyla bitiyor ama sonlandırıldığında terminalim tamamen dağınık. Echo almam, bu yüzden geri almak için stty echo yazmam gerekiyor, hatta terminal garip davranıyor.C Curses programından sonra ekran normale nasıl dönülür

İşte
void wrap_up(){ 

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

bir ekran görüntüsü:

Benim uç işlevi şudur. Nasıl düzeltebilirim? endwin sonra

enter image description here

+0

İşlevler kodu nedir? – LeeNeverGup

+0

Lütfen en az çalışan (derleme) bir örnek verin. Çözüm yerine geçici çözüm gibi görünen –

cevap

5

Kaldır yenileme. Endwin'den sonra yenileme çağrısı, programın lanet moduna geri dönmesine neden olur.

-1

Peki, onu nasıl uygulamak istediğinize bağlıdır. Taşınabilir hale getirmek için, üzerinde çalıştığınız işletim sistemine bağlı olarak ekranı temizlemek için derleme yönergeleri uygulamak isteyebilirsiniz.

Örn:

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

Yani derleme zamanında böyle bir şey kullanabilirsiniz:

bash2.2 $ gcc -c -DLINUX_OS code.c -o kod

+0

. Ayrıca, 'clear' komutu bu durum için çalışmaz, reset veya tset'e bakarsınız. – CaseyJones

+0

@CaseyJones Anladım, ama cevabımın neden kullanışlı olmadığını anlamıştım. – rfermi

+1

Cevabınız problemi çözmüyor, korkarım. Clear, OP tarafından açıklanan durum sırasında terminali çalışma durumuna geri yüklemez. Bunun için 'reset' veya 'tset' komutlarını kullanmanız gerekir. – CaseyJones

İlgili konular