我正在为我的主题做一个简单的 Frog 游戏,但我的代码有一个问题,我不知道如何解决它。我一直在函数中使用 mvprintw 以相同的方向在 map 上移动“对象”,但是当它完成第一个完整 map 并再次开始向上滚动一行时,我如何避免滚动? p>
这是对象函数:
void rand_obj1 (int y)
{
init_pair (3, COLOR_RED , COLOR_CYAN);
attron(COLOR_PAIR(3));
mvprintw (20,y, " _ _ _ _");
mvprintw (21,y, "() _ )");
mvprintw (22,y, "()_ _ _ _)");
mvprintw (10,y, " _ _ _ _");
mvprintw (11,y, "() _ )");
mvprintw (12,y, "()_ _ _ _)");
usleep(delay1);
}
在我的主要功能中使用的循环来显示 map ,并将坐标重置为对象,重新开始:
while (1)
{
if (y >= max_x) y=0;
//map
lago(4,0,max_x,max_y*(0.48),1);
//create obj
rand_obj1 (y);
refresh();
y++;
}
最佳答案
给定的示例中没有任何内容可以完成所描述的操作。
您的程序(在未显示的部分中)可能正在使用printf
向终端写入消息,并且这些消息不会被看到(或被curses库考虑在内。
例如,它可能在这个调用中:
lago(4,0,max_x,max_y*(0.48),1);
从评论来看,lago
不是原因。运行 sample program显示它使用了额外的行(由于环绕),总共 23 行。通常这不是问题,但假设您的终端有 23 行(这可能会发生),并且如果您还将环境变量 LINES
设置为 24(也可能),那么您会看到换行如图所示:
例如,如果您将终端配置为以 23 行开头(或者通过为您执行此操作的 IDE 运行它)并注意到一些问题,然后设置环境变量来解决此问题,则可能会出现不匹配。环境变量覆盖了 Curses 的屏幕尺寸概念(尽管可以使用 use_env
进行更改)。
关于c - Ncurses 滚动行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37602696/