我正在做一个pacman游戏,当我按下向右,向左,向上或向下箭头键时,我的pacman正在允许的地图坐标内移动。只有握住钥匙才会移动。我想知道如何做到这一点,以便他在按键上自动移动,直到他撞到地图上的墙壁,这样我就不需要按住箭头了。
这是
if (e.KeyCode == Keys.Down)
{
if (coordinates[(pac.xPosition + 16) / 20, (pac.yPosition + 20) / 20].CellType == 'o'
|| coordinates[(pac.xPosition + 16) / 20, (pac.yPosition + 20) / 20].CellType == 'd'
|| coordinates[(pac.xPosition + 16) / 20, (pac.yPosition + 20) / 20].CellType == 'p')
{
pac.setPacmanImage();
pac.setPacmanImageDown(currentMouthPosition);
checkBounds();
}
单元格类型o,p和d是允许他在地图中移动的唯一单元格。这些单元格正在文本文件中绘制。
很抱歉,如果我很难理解我的要求,但我相信这是一个相当简单的解释。
提前谢谢。
答案 0 :(得分:1)
而不是在按键期间移动吃豆人,使用按键设置方向,并将吃豆人移到按键逻辑之外。
enum Direction {Stopped, Left, Right, Up, Down};
Direction current_dir = Direction.Stopped;
// Check keypress for direction change.
if (e.KeyCode == Keys.Down) {
current_dir = Direction.Down;
} else if (e.KeyCode == Keys.Up) {
current_dir = Direction.Up;
} else if (e.KeyCode == Keys.Left) {
current_dir = Direction.Left;
} else if (e.KeyCode == Keys.Right) {
current_dir = Direction.Right;
}
// Depending on direction, move Pac-Man.
if (current_dir == Direction.Up) {
// Move Pac-Man up
} else if (current_dir == Direction.Down) {
// Move Pac-Man down
} else if (current_dir == Direction.Left) {
// Move Pac-Man left
} else if (current_dir == Direction.Right) {
// You get the picture..
}
正如BartoszKP的评论所建议的那样,你需要设置Pac-Man私有变量的方向。