2015-08-25 15 views
6

Ben de bir GUI'yi ascci ile yapıyorum, kullanıcı girişini beklemek istiyorum ama son sınır çizgisini yazdırmak istiyorum. Şu andan itibaren kullanıcı girişi için bekleyecek ve son ascci sınır çizgisini basacaktır. Bunu düzeltmek için zaten var mı? İstediğim şeyinC++ - Kullanıcı girişi için bekleyin, ancak bir sonraki satırı yazdırın

Örnek:

Giriş Ekranı alıyorum ne

====================================================== 

     Welcome to Bank Beta 0.1 
     ------------------------ 

     (1)Login 
     (2)Create Account 


     USER INPUT HERE 

====================================================== 

Örnek: Senden beri

void login() 
{ 
    cout << "======================================================" << endl 
     << "\t\tWelcome to Bank Beta 0.1" << endl 
     << "\t\t------------------------" << endl << endl 
     << "\t\t (1)Login" << endl 
     << "\t\t (2)Create Account" << endl << endl; 
} 
int main() 
{ 
    int loginChoice; 
    login(); 
    cin >> loginChoice; 
    cout << "======================================================" << endl; 
    _getch(); 
} 
+0

kod eklendiğinde, girdiden sonra yatılı uçtan önce gösterilecek girişi almak için yatılı sonuncu bloğum var. –

+0

giriş fonksiyonuna "cin >> loginChoice" den sonra satırı ekleyin ve bunu yapardı. Ayrıca, akışınızı temizleyeceği için endl'e dikkat edin. Yıkama işlemini gerçekleştirebileceğiniz son satıra kadar "\ n" yi kullanmayı deneyin. –

+3

Bence ncurses istediğini yapabilir – sweerpotato

cevap

7

:

İşte
====================================================== 

     Welcome to Bank Beta 0.1 
     ------------------------ 

     (1)Login 
     (2)Create Account 


     USER INPUT HERE 

kod bu çalışıyor konsol tabanlı GUI üzerinde g, ben imleç hareket işlevselliği bir çeşit kullanmanızı öneririz. Bu da "nesneler" in hizalanmasında çok fazla zaman kazandıracaktır. İşte

sen de kazanmak için imleci hareket gerekecektir koddur ve unix

#ifdef _WIN32 

    #include <windows.h> 

    void gotoxy(int x, int y) 
    { 
     COORD p = { x, y }; 
     SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), p); 
    } 

    #else 

    #include <unistd.h> 
    #include <term.h> 

    void gotoxy(int x, int y) 
    { 
     int err; 
     if (!cur_term) 
     if (setupterm(NULL, STDOUT_FILENO, &err) == ERR) 
      return; 
     putp(tparm(tigetstr("cup"), y, x, 0, 0, 0, 0, 0, 0, 0)); 
    } 

#endif 

Eğer platform bağımsızlığı gerekmiyorsa Sen bunlardan birini kaldırabilirsiniz, ancak her ikisini de sahip bir zarar yok. Şimdi ilginç kısmı:

void login() 
{ 
    cout << "======================================================" << "\n" 
    << "\t\tWelcome to Bank Beta 0.1" << "\n" 
    << "\t\t------------------------" << "\n\n" 
    << "\t\t (1)Login" << "\n" 
    << "\t\t (2)Create Account" << "\n\n"; 
    gotoxy(0, 7); 
    cout << "======================================================" << "\n"; 
    gotoxy(0, 6); 
    cout << "\t\t"; 
} 
int main() 
{ 
    int loginChoice; 
    login(); 
    gotoxy(0,8); 
    cin >> loginChoice; 
    _getch(); 
} 

yazma ve okuma artık birbirinden bağımsızdır ve tüm pozisyonlarda çok daha fazla easyer etrafında karışıklık da yapabilirsiniz.

+1

ncurses ayrıca bu işi bir platformda bağımsız bir şekilde yapıyor gibi görünüyor: http://invisible-island.net/ncurses/man/tput.1.html – James

+1

ana notta, "gotoksi" olmamalı (0,8); 'yerine goto (0,8);'? – Aserre

+0

evet, Ploutox haklı, benim hatam 'gotoxy (0,8)' ana –

İlgili konular