C - Ncurses编译错误

时间:2014-07-09 00:20:34

标签: c ncurses

我制作一个迷宫游戏,让人将光标移动到我创建的printf迷宫迷宫中。迷宫由许多' F'组成。充当墙壁的角色。有什么方法我可以告诉我程序,如果有一个' F'光标即将移动的位置中的字符执行以下操作,例如打印消息。我写了下面的程序,当光标移过字符时,它应该显示一条消息" F"。当我编译它时,它给出了错误说' ncurses.c:24:14:警告:逗号表达式的左手操作数没有效果[-Wunused-value]'。

这是可以在下面发现的整个计划的关注部分

                if(m == 's')
            {
                if((oldy+1,x)=='F')
                {
                mvwprintw(win, 0,0,"Sorry, you cant move there.");  
                wrefresh(win);
                }
            else
                {
                move((y= oldy+1),x);
                refresh();
                oldy = y;
                }
            }

这是完整的程序,如果你想看到它

#include <ncurses.h>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int y = 0;
    int x = 0;
    int oldy = 0;
    int oldx = 0;
    char m = 'l';
    initscr();
    WINDOW* win;
    win = newwin(1, 40, 40 ,0);
    refresh();
    mvwprintw(win, 0,0,"First line");
    wrefresh(win);

    while(m != 'q')
    {
            m=getch();
    if(m == 's')
        {
            if((oldy+1,x)=='F')
            {
            mvwprintw(win, 0,0,"Sorry, you cant move there.");  
            wrefresh(win);
            }
        else
            {
            move((y= oldy+1),x);
            refresh();
            oldy = y;
            }
        }
    else if(m == 'd')
        {
            move(y,(x=oldx+1));
            refresh();
            oldx = x;
        }
    else if(m == 'a')
        {
            move(y,(x=oldx-1));
            refresh();
            oldx = x;
        }
    else if(m == 'w')
        {
            move((y= oldy-1),x);
            refresh();
            oldy = y;
        }
    else 
        m = 'q';
    }

    delwin(win);
    endwin();

    return 0;
}

1 个答案:

答案 0 :(得分:1)

您认为这条线在做什么?

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

表达式(oldy+1,x)使用逗号运算符,该运算符计算副作用的第一个参数(oldy+1),并在计算第二个参数(x)之前丢弃结果。然后将结果(x)与'F'进行比较。

据说你打算在那里调用一个函数。 curses函数返回窗口中某个位置的字符mvwinch。这可能就是你的意思:

if(mvwinch(win,oldy+1,x)=='F')