我正在为我的主题做一个简单的Frogger游戏,但我的代码有一个问题,我不知道如何解决它。我一直在函数中使用mvprintw以相同的方向在地图上移动“对象”,但是当它完成第一个完整的地图并再次开始向上滚动一行时,我怎么能避免滚动?
继承对象功能:
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);
}
在我的主要功能上使用的循环显示地图e重新设置坐标到对象步行throguh再次开始:
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++;
}
答案 0 :(得分:1)
在给定的示例中没有任何内容可以执行所描述的内容。
您的程序(部分 不 )可能正在使用printf
向终端写入消息,并且这些消息未被显示(或被视为帐户)由curses库。
例如,它可以在这个电话中:
lago(4,0,max_x,max_y*(0.48),1);
根据评论,lago
不是原因。运行sample program表明它使用了额外的一行(由于环绕),总共提供了23行。通常这不是问题,但假设您的终端是23行(可能发生),如果您还将环境变量LINES
设置为24(也可能),那么您将看到包装为如下图所示:
例如,如果您已将终端配置为以23行开头(或通过为您执行此操作的IDE运行它),并且发现一些问题然后设置环境变量以解决此问题,则可能出现不匹配。环境变量会覆盖curses'屏幕大小的概念(尽管可以使用use_env
更改)。