目前我正在制作一个控制台游戏(类似胭脂),我需要一些关于碰撞事件的建议。我需要告诉玩家(@)旁边是否有一个墙(▒),如果是这样,则不允许玩家朝那个方向移动。 有没有人对我如何用C#中的控制台做这个呢?
如果需要,我可以提供一些代码。
答案 0 :(得分:0)
两种方式:
我不明白为什么这么难,也许你可以解释一下;)
答案 1 :(得分:0)
首先 - 我没有使用控制台游戏的经验,但在我看来,你应该有一个包含用户所在的“地图”的数据模型,并在更新UI(控制台)之前在数据模型中检查它
答案 2 :(得分:0)
有多种方法可以解决这个问题。我希望你有一个代表游戏地图的二维数组。一种简单的方法是添加一个方法CheckMove
,用于验证尝试的移动。如果无效,则不执行移动。这是一种伪代码示例。
public bool CheckMove(int newY, int newX) {
if (grid[newY][newX] == WALL)
return false;
if (newY < 0 || newY > Y_MAX || newX < 0 || newX > X_MAX)
return false;
return true;
}
public void Move(int dir) {
// calc new x & y
if (!CheckMove(newY, newX)) return;
// else do the move
}
答案 3 :(得分:0)
我认为你是否编写控制台应用程序并不重要。因为View的目的不是检测碰撞。这是你的游戏模型的目的。模型刚刚显示在视图上。内部壁结构甚至可以描述为二维阵列。当前玩家坐标也存储在模型中。因此,检测移动某些地方的可能性如下:
public void IsPossibleMoveTo(int x, int y)
{
return mazeArray[x, y] == null;
}