我将如何使用 Ncurses 在屏幕周围制作一个框

How Would I go about making a box around the screen using Ncurses

我正在制作一个简单的程序,让盒子在空旷的区域移动。现在完成了,我想在屏幕周围制作一个框(不像 Ncurses window,只是为了显示)。我只是不知道该怎么做。我搜索了 google 和 SO 来解决这个问题,但我找不到。有没有人知道如何在屏幕周围做一个这样的盒子。

碰撞已经存在,我只需要在它周围做一个盒子。我正在考虑在 Ncurses 中使用像普通框一样的字符,但这可能是不可能的,是否可以在框中制作一个框?

这里有一个我用 Ncurses 制作的盒子的例子(虽然我的格式很糟糕,真正的盒子里没有这些点)

+--------+
|........|
+--------+

此代码是移动的代码,也计算与场地外部的碰撞(所以盒子应该在哪里):

while((ch = getch()) != KEY_F(1))
{   switch(ch)
    {   case KEY_LEFT:
        if(win.startx>1){
            create_box(&win, FALSE);
            --win.startx;
            create_box(&win, TRUE);
        }
            break;
        case KEY_RIGHT:
        if(win.startx<122){
            create_box(&win, FALSE);
            ++win.startx;
            create_box(&win, TRUE);
        }
            break;
        case KEY_UP:
        if(win.starty>1){
            create_box(&win, FALSE);
            --win.starty;
            create_box(&win, TRUE);
        }
            break;
        case KEY_DOWN:
        if(win.starty<44){
            create_box(&win, FALSE);
            ++win.starty;
            create_box(&win, TRUE);
        }
            break;  
    }
}
endwin();
return 0;

如您所见,大框位于第一个 x 和第 y 行(因此终端中的第一列和终端中的第一行)以及第 44 行和第 122 列(最在终端的底部和最右边的行和列中)。碰撞已经存在,如果你想要完整的代码,你可以点击这个 link to pastebin 你可以看到它是如何工作的。 (记得编译命令后面加上-lncurses)

看看代码,它就在那里。该函数甚至被称为 create_box.

提示:mvaddch 调用有 3 个参数:y 位置、x 位置和您要放置在该位置的字符。 p_win->border.XX 是常量,每个常量定义一个边框字符,例如 tl 表示左上角。