【发布时间】: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 编译)
【问题讨论】:
-
不确定我是否理解问题所在。你已经画了小盒子,所以画大盒子对我来说似乎本质上是同样的问题。
-
是的,我无法让它与我尝试过的代码一起工作。我是新手,我不知道如何处理
-
所以我怀疑你也没有自己写剩下的。到目前为止你尝试过/学到了什么
-
大部分确实来自网络