Mac上的C ++ Ncurses - 终端中没有显示任何内容

时间:2014-12-03 00:01:44

标签: c++ eclipse macos terminal ncurses

我试图通过Eclipse运行此代码。编译时没有错误,并且在运行时打开终端(如我设置的那样),但终端中没有任何内容显示,即使(据说)我已将其编码为显示一个框。谁能让我知道我需要做什么才能正常显示?

由于

#include <iostream>
#include <stdlib.h>
#include <curses.h>
#include <unistd.h>

void set_difficulty(int level,int &v);
void SetMenuBox(WINDOW*&);

int main(){
    int speed = 0;
    chtype a=219;
    initscr();                                          //initialize screen
    WINDOW *win = newwin(20,40,15,20);                  //create new window (row,col,x,y) where (x,y) is top left corner
    wrefresh(stdscr);                                   //refresh standard screen
    start_color();                                      //enable color changes
    init_pair(1,COLOR_RED,COLOR_BLACK);                 //create color pair of red text with black outline
    init_pair(2,COLOR_GREEN,COLOR_BLACK);
    attron(COLOR_PAIR(1));                              //use the color pair
    wattron(win,COLOR_PAIR(1));
    wrefresh(win);
    wborder(stdscr,0,0,0,0,0,0,0,0);                    //create border around win using lines
    wborder(win,a,a,a,a,a,a,a,a);                       //create border around standard window
    wrefresh(stdscr);
    wrefresh(win);
    wmove(win,2,18);                                    //move cursor
    wprintw(win,"MENU");                                //print "MENU" at cursor
    wmove(win,5,2);
    wprintw(win,"Select Difficulty:");
    wmove(win,7,2);
    wprintw(win,"1==Easy");
    wmove(win,9,2);
    wprintw(win,"2==Medium");
    wmove(win,11,2);
    wprintw(win,"3==Hard");
    wmove(win,13,2);
    wprintw(win,"0==EXIT");
    wmove(win,18,19);
    wrefresh(win);                                      //the character typed will be green not blue
    int d=wgetch(win);                                  //get character from win, d is the ascii number
    sleep(500);                                         //pause for 1000 ms
    wmove(win,28,25);
    while(d<48||d>51){                                  //keeps getting character until an allowable
        wborder(win,32,32,32,32,32,32,32,32);           //character is selected
        mvwdelch(win,18,19);
        wborder(win,a,a,a,a,a,a,a,a);
        wmove(win,18,19);
        wrefresh(win);
        d = wgetch(win);
        sleep(500);
    }
    if(d==48)
        return 0;
    else if(d>48&&d<=51){
        set_difficulty(d,speed);
    }
    wrefresh(win);
    sleep(1000);
    wclear(win);
    SetMenuBox(win);
    wrefresh(win);
    wmove(win,15,18);
    wprintw(win,"%d",speed);
    wrefresh(win);
    sleep(1000);
    //endwin();                                         //close window
    return 0;
}

void set_difficulty(int level,int &v){
    switch (level){
    case 49:
        v = 2500;
        break;
    case 50:
        v = 1750;
        break;
    case 51:
        v = 1250;
        break;
    }
}

void SetMenuBox(WINDOW *&w){
    chtype a = 219;
    delwin(w);
    wrefresh(stdscr);
    w = newwin(30,40,15,20);
    wrefresh(stdscr);
    wrefresh(w);
    init_pair(1,COLOR_RED,COLOR_BLACK);                 //create color pair of red text with blue outline
    attron(COLOR_PAIR(1));                              //use the color pair
    wattron(w,COLOR_PAIR(1));
    wrefresh(w);
    wborder(w,a,a,a,a,a,a,a,a);
    wrefresh(w);
}

0 个答案:

没有答案