Curses打印和更新bug

时间:2018-02-14 22:27:04

标签: c++ cmd server printf curses

所以我试图为我的游戏编写服务器。我希望服务器看起来很漂亮,有条理,也可以跨越平台,所以我决定你傻瓜..

我试图在顶部显示加载经典{ '-', '\\', '|', '/' }事物

但是当我尝试打印播放器连接或者在加载栏上写入的数据并且令人讨厌时,问题就出现了。

这里的一些图片将解释情况

我想要什么

What I want

它实际上在做什么

What it's actually doing

这是我的代码:

//INCLUDEs
int clients = 0;
char chars[] = { '-', '\\', '|', '/' };
unsigned int i;
void showStatus(char a)
{
    attron(COLOR_PAIR(1));
    mvprintw(2, 101 - 25, "%c\r", a);
    mvprintw(2, 59, "%d\r", clients);
    refresh();
}


    void caller()
    {   
        for (i = 0; ; ++i) {
            showStatus(chars[i % sizeof(chars)]);
            //fflush(stdout);
            std::this_thread::sleep_for(std::chrono::milliseconds(1000));
        }
    }

int main(int argc, char ** argv){
//init everything..
printw("-------------- ~~ BS SERVER PRE-ALPHA (v0.0.1) | Clients: (%d/32) | Running (%c) ~~ ---------------\n\r", 0, '|');
//more code....
std::thread thr(caller);
    while (1) {
//check for connections...
}
thr.join();

    endwin();
}

PS:我尝试删除用它重新填充它的线程,我想要线程,以便char可以旋转,服务器可以在同一时间继续接收数据。

由于

1 个答案:

答案 0 :(得分:0)

嗯,实际上,我的想法是绘制一个状态窗口并在需要时更新它,并在主窗口中输出日志并使其像魅力一样工作。