【问题标题】:How Would I go about making a box around the screen using Ncurses我将如何使用 Ncurses 在屏幕周围制作一个框
【发布时间】:2015-01-30 09:28:08
【问题描述】:

我正在制作一个简单的程序,让盒子在空旷的区域移动。现在完成了,我想在屏幕周围制作一个框(不像 Ncurses 窗口,只是为了显示)。我只是不知道该怎么做。我搜索了谷歌和 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 编译)

【问题讨论】:

  • 不确定我是否理解问题所在。你已经画了小盒子,所以画大盒子对我来说似乎本质上是同样的问题。
  • 是的,我无法让它与我尝试过的代码一起工作。我是新手,我不知道如何处理
  • 所以我怀疑你也没有自己写剩下的。到目前为止你尝试过/学到了什么
  • 大部分确实来自网络

标签: c interface ncurses


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    相关资源
    最近更新 更多