繁体   English   中英

我将如何使用Ncurses在屏幕周围制作盒子

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

我正在为盒子在开放区域中移动编写一个简单的程序。 现在完成了,我想在屏幕周围制作一个框(不像Ncurses窗口,而只是进行显示)。 我只是不知道该怎么做。 我搜索了谷歌,也搜索了此问题的解决方法,但我找不到它。 有人知道如何在屏幕上制作一个类似的盒子吗?

你去

碰撞已经存在,我只需要在其周围打一个盒子即可。 我当时正在考虑使用像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(最底端和最顶端的一个)终端中的右行和列)。 冲突已经存在,如果您需要完整的代码,则可以单击此链接到pastebin,然后查看它的工作方式。 (请记住在编译命令后加上-incurses进行编译)

看一下代码,就在这里。 该功能甚至称为create_box

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM