2016-06-18 7 views
2

最近私のプロジェクトにncursesを使用しています。 私は宇宙船(3文字列)をウィンドウに印刷するコードを書いていますが、新しいウィンドウで船を印刷したり、窓を削除するために使用しているものを表示していません(ここは私のコードです):私のウィンドウでncursesは何も表示しません

あなたは space_shipにテキストを書きたい一方で、

while((ch = getch()) != 'q') 

stdscrから読んでいる:

#include<stdio.h> 
#include<ncurses.h> 
#include <string.h> 
#include<stdlib.h> 


WINDOW * create_newwin(int height, int width, int starty, int startx); 

void destroy_win(WINDOW *local_win); 

int main(int argc, char *argv[]){ 

    WINDOW* space_ship; 
    int max_y , max_x , startx , starty; 
    char ch; 

    initscr(); 
    cbreak(); 
    noecho(); 

    getmaxyx(stdscr,max_y,max_x); 
    startx=(LINES - 3)/2; 
    starty=(COLS - 5)/2; 
    space_ship=create_newwin(3,5,starty,starty); 
    refresh(); 

    while((ch = getch()) != 'q') 
    { switch(ch) 
     { case KEY_LEFT: 
       destroy_win(space_ship); 
       space_ship = create_newwin(3,5, starty,--startx); 
       break; 
      case KEY_RIGHT: 
       destroy_win(space_ship); 
       space_ship = create_newwin(3, 5, starty,++startx); 
       break; 
      case KEY_UP: 
       destroy_win(space_ship); 
       space_ship = create_newwin(3, 5,--starty,startx); 
       break; 
      case KEY_DOWN: 
       destroy_win(space_ship); 
       space_ship = create_newwin(3, 5, ++starty,startx); 
       break; 
     } 
    } 

    endwin(); 

    return 0; 
    } 

WINDOW *create_newwin(int height, int width, int starty, int startx){ 
    WINDOW* temp; 
    temp=newwin(height,width,starty,startx); 
    refresh(); 
    wprintw(temp," ^\n"); 
    wprintw(temp," (0)\n"); 
    wprintw(temp,"[] []\n"); 
    wrefresh(stdscr); 
    wrefresh(temp); 

return temp; 

} 

void destroy_win(WINDOW *local_win){ 

    wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' '); 
    wrefresh(local_win); 
    delwin(local_win); 
} 
+0

レースする前に、1つのチャーを表示する1つのウィンドウから始めて、小さなものを作成しましたか? –

+0

tnxあなたのコマンドが表示されませんでした –

答えて

0

問題は、このラインです。あなたは

while((ch = wgetch(space_ship)) != 'q') 

にあることを変更する場合は、space_shipのリフレッシュがwgetchコールの副作用として行われます。

+0

tnx正しいですがまだ何も表示していません:( –

+0

'ch'の型は' int'(コンパイラの警告に書かれています)ですが、チェックすると、私はあなたの宇宙船が画面の下部に表示されます - デバッグに戻ります。 –

関連する問題