我正在制作一个简单的程序,让盒子在空旷的地方移动。现在已经完成了我想在屏幕周围制作一个方框(不像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进行编译)
答案 0 :(得分:0)
查看代码,它就在那里。该函数甚至称为create_box
。
提示:调用mvaddch
有3个参数:y位置,x位置和要放在该位置的字符。 p_win->border.XX
是每个定义边框字符的常量,如左上角的tl
。