我正在使用 Ncurses 库在 C++ 中制作 Pacman。我可以用我的代码移动 Pacman,但是在不同方向之间切换需要很多时间。例如,当 Pacman 向左移动并且我按下右箭头键时,它需要一些时间才能开始向右移动。
if (ch==KEY_LEFT)
{
int b,row,column;
getyx(stdscr,row,column);
for (b=column;b>=0;b-=1) //loop to move the pacman left until it hits the wall
{
mvprintw(row,b,">"); //print the ">" symbol
refresh();
waitf(0.2);
attron(COLOR_PAIR(1)); //this pauses the game for 1 second
mvprintw(row,b,">");
attroff(COLOR_PAIR(1));
refresh();
waitf(0.2);
mvprintw(row,(b),"O"); //showing the open mouth of pacman
refresh();
waitf(0.2);
attron(COLOR_PAIR(1));a
mvprintw(row,(b),"O");
attroff(COLOR_PAIR(1));
int h=0;
h=getch();
if (h!=KEY_LEFT)
{
break;
}
}
}
right=getch();
loop for right in an if condition
up=getch();
loop for up in an if condition
down=getch();
loop for moving down in an if condition
我对右、上和下做了同样的事情。此外,我在每个 if 语句之前都引入了新变量来存储 getch() 的值。