诅咒打印和更新错误
Curses printing and updating bug
所以我正在尝试为我的游戏编写服务器程序。我希望服务器看起来漂亮、有条理和跨平台,所以我决定给你 ncurses..
我试图在顶部显示加载经典 { '-', '\', '|', '/' }
东西
但是当我尝试打印连接的播放器或它在加载栏上写入的数据时出现问题,这很烦人。
这里放几张图说明情况
我想要的
它实际上在做什么
这是我的代码:
//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: 我尝试删除用 for 重新调整它的线程,我想要线程以便 char 可以旋转并且服务器可以继续接收数据时间.
谢谢
好吧,它确实有效,我的想法是为状态绘制一个 window 并在我们需要时更新它,并在主 window 中输出日志并且它的工作就像魅力.
所以我正在尝试为我的游戏编写服务器程序。我希望服务器看起来漂亮、有条理和跨平台,所以我决定给你 ncurses..
我试图在顶部显示加载经典 { '-', '\', '|', '/' }
东西
但是当我尝试打印连接的播放器或它在加载栏上写入的数据时出现问题,这很烦人。
这里放几张图说明情况
我想要的
它实际上在做什么
这是我的代码:
//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: 我尝试删除用 for 重新调整它的线程,我想要线程以便 char 可以旋转并且服务器可以继续接收数据时间.
谢谢
好吧,它确实有效,我的想法是为状态绘制一个 window 并在我们需要时更新它,并在主 window 中输出日志并且它的工作就像魅力.