我制作一个迷宫游戏,让人将光标移动到我创建的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;
}
答案 0 :(得分:1)
您认为这条线在做什么?
if((oldy+1,x)=='F')
表达式(oldy+1,x)
使用逗号运算符,该运算符计算副作用的第一个参数(oldy+1
),并在计算第二个参数(x
)之前丢弃结果。然后将结果(x
)与'F'
进行比较。
据说你打算在那里调用一个函数。 curses函数返回窗口中某个位置的字符mvwinch
。这可能就是你的意思:
if(mvwinch(win,oldy+1,x)=='F')