作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 ncurses 中制作一款类似于太空入侵者的游戏。
到目前为止,我已经开始移动并击落,但遇到了问题。
当玩家发射激光时,我使用 usleep 调用来延迟激光在屏幕上移动,这样它就不会只从屏幕的一端显示到另一端。
使用 usleep 延迟激光的问题意味着,当激光穿过屏幕时,玩家无法移动,直到循环退出。
我的问题是,是否有另一种方法可以打印在屏幕上移动的激光,同时通过用户输入移动播放器/光标?
当用户按下“f”键时,以下代码将在屏幕上移动线条(激光)。但是,在激光离开屏幕之前,用户无法再次移动:
void combat(int y, int x)
{
do
{
mvprintw(y -1, x, "|");
refresh();
y--;
usleep(50000);
mvprintw(y , x, " ");
}
while(y>0);
}
最佳答案
如果没有外部线程,这个问题就很难解决。通过将激光的运动绑定(bind)到输入(以便仅当屏幕应由外部输入刷新时更新位置)来删除 sleep 功能是行不通的,因为您需要激光独立于其他一切。
一个肮脏的黑客可能是:
int nodelay(WINDOW *win, bool bf) 实现非阻塞输入函数
,这样输入函数就不会阻塞任何内容关于c - 如何使用 ncurses 同时打印两件事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24666939/
我一起问这些问题是因为我觉得他们在一起。做一个的方式影响我必须如何做另一个。我是计算机科学/编程/python 新手。 我有一个很长、很复杂的脚本,它不包含任何用户定义的函数。它接受输入并对其进行操作
这是我用于测试目的的简单代码。 boolean isMoving(){ if (a == b) { return true; } else if (a != b) {
我是一名优秀的程序员,十分优秀!