C - Ncurses - 如何阻止光标越过墙壁(由一堆字符组成的墙壁)

标签 c ncurses

是否有可用的方法或功能可以阻止我检查字符。迷宫如下所示。我实际上不使用 printf,而是使用 mvprint。我只是在下面使用 printf 作为示例。

printf("xxxxxx x");
printf("xxxxxx x");
printf("xxxxxx x");
printf("x      x");
printf("x xxxxxx");
printf("x xxxxxx");

我试过下面这段代码,但它似乎不起作用。光标仍然越过 x 个字符。在代码的第三行,您可以看到我已经说过,如果那里有一个字符“f”,它是由上面看到的一堆 printf 语句创建的,则光标不应移动。这似乎不起作用。

if(m == 's')
{
    if((oldy+1,x)=='x') // This is the part of the code where i say that if the next spot is an 'x' dont move.
    {
        mvprint(win, 10,0,"Sorry, you cant move there.");   
        refresh(win);
    }
    else
    {
        move((y= oldy+1),x);
        refresh();
        oldy = y;
    }
}

最佳答案

经过一些研究,我认为您希望自己的内在状态是:

if(mvinch(oldy+1,x) == 'x')

mvinch(y,x) 函数移动并返回该位置的字符。

此外,正如其他人所提到的,混合使用标准 I/O 和 Curses 充其量是不可靠的。当我在我的机器上尝试类似的东西进行测试时,我的程序告诉我整个屏幕都是由空格组成的。

关于C - Ncurses - 如何阻止光标越过墙壁(由一堆字符组成的墙壁),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24654020/

相关文章:

c - 下面的代码创建了多少个子进程

c - 在curses窗口中执行bash命令

perl - 调色板和更多比例变化

c - 对 libncurses 中函数的 undefined reference

ncurses - native 调用接口(interface) : how to translate "wchar_t"?

c - 检测 scanf 读取的值的变化

c++ - 从 makefile 定义宏函数

c++ - 如何驯服 Windows header (有用的定义)?

c++ - 在 Windows 中使用 mingW-w64 编译 AEScrypt 时出错

C++ ncurses 编码 (UTF-8) 问题