Algorithm 在迷宫边缘的一件物品的优雅验证 让我们考虑一个游戏,玩家在 x*y网格上有 n>代码>数量。玩家也可以在任何方向移动他的棋子(北,南,东北等)。让我们假设唯一的规则是玩家(当他决定移动时)必须尽可能多地移动一个棋子 ooooo ..... ..... ..... .....

Algorithm 在迷宫边缘的一件物品的优雅验证 让我们考虑一个游戏,玩家在 x*y网格上有 n>代码>数量。玩家也可以在任何方向移动他的棋子(北,南,东北等)。让我们假设唯一的规则是玩家(当他决定移动时)必须尽可能多地移动一个棋子 ooooo ..... ..... ..... .....,algorithm,Algorithm,玩家移动第一个棋子 .oooo ..... ..... ..... o.... 要实现此功能(暂时忽略玩家可以移动其棋子的其他方向),我们有: 但是,必须配置此a边缘,以根据行程方向检查工件是否位于边缘。例如: o..... ...... ...... 如果方向为北、西或西北则第一块位于边缘,但最好朝任何其他方向移动 我现在的想法是,我需要一个switch语句来检查工件是否是基于行进方向的AtEdge()。但是我还需要一个switch语句用于move函数 switch(direction){

玩家移动第一个棋子

.oooo
.....
.....
.....
o....
要实现此功能(暂时忽略玩家可以移动其棋子的其他方向),我们有:

但是,必须配置此
a边缘
,以根据行程方向检查工件是否位于边缘。例如:

o.....
......
......
如果方向为
西
西北
则第一块位于边缘,但最好朝任何其他方向移动

我现在的想法是,我需要一个switch语句来检查工件是否是基于行进方向的
AtEdge()
。但是我还需要一个switch语句用于
move
函数

switch(direction){
  case NORTH_EAST: //code to move north-east
}

这将导致16个
Switch
语句,但是如果游戏是3D的,那么数字将成倍增加。有没有更优雅的解决方案来实现我所描述的?是否有更好的方法检查工件是否可以根据移动方向进一步移动?

坐标
x*y
网格中的位置可以用坐标
0表示
x*y
网格中的位置可以用坐标
0表示
switch(direction){
  case NORTH_EAST: //code to move north-east
}
px_new = px + mx
py_new = py + my
inside = (0 <= px_new) and (px_new < x) and (0 <= py_new) and (py_new < y)