c - Ncurses 滚动行

标签 c ncurses

我正在为我的主题做一个简单的 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(也可能),那么您会看到换行如图所示:

enter image description here

例如,如果您将终端配置为以 23 行开头(或者通过为您执行此操作的 IDE 运行它)并注意到一些问题,然后设置环境变量来解决此问题,则可能会出现不匹配。环境变量覆盖了 Curses 的屏幕尺寸概念(尽管可以使用 use_env 进行更改)。

关于c - Ncurses 滚动行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37602696/

相关文章:

c 中的客户端和服务器套接字

在共享内存 POSIX 中创建队列

c - 打印、ncurses 问题

c++ - 如何将 Ncurses 添加到 Visual Studio 2017 中的项目?

c - 我的 Vigenere 加密程序中出现段错误

c - 用一个循环画一个三角形(修订版)

c - "fork"ing一个进程时,为什么Linux内核会为每个新创建的进程复制内核页表的内容?

c++ - NCURSES:创建没有循环的标题栏

c++ - 如何为标准输出设置控制台光标位置

c - 如何将 mvprintw 与指向字符串的指针数组一起使用