【发布时间】:2021-04-18 09:40:45
【问题描述】:
我正在用 Java 创建一个算法来玩隔离游戏 (1vs1) 棋盘游戏:https://en.wikipedia.org/wiki/Isolation_(board_game) 基本上我的问题涉及遵循几个规则(稍后指定)移动棋子。我创建了这个解决方案(它有效)获取棋子的移动(仅可能的移动)并迭代它们以创建问题的新闻状态和我想知道是否有更有效的方法来解决这个问题。基本上,动作的作用是:
- 棋子可以在 8 个可能的方向上移动(上、下、左、右、对角线)。
- 棋子每步只能走1步。
- 如果有其他 pawn,或者该图块已降价,则该 pawn 无法移动到该图块。
- 每次移动后,玩家可以在棋盘上标记一块棋子(一个没有棋子,一个还没有标记)。
这是我的解决方案:
获取可能的动作
public List<Integer> moves(int f, int c) {
List<Integer> moves= new ArrayList<Integer>();
int nuevaX,nuevaY;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
if (!(i == 1 && j == 1)) {
nuevaX = f + (i - 1);
nuevaY = c + (j - 1);
if (disponible(nuevaX,nuevaY) && !ocupada(nuevaX, nuevaY)) {
moves.add(nuevaX);
moves.add(nuevaY);
}
}
}
}
return moves;
迭代
List<Integer> moves = moves(f, c);
for (int i = 0; i < moves.size(); i+=2) {
x = moves.get(i);
y = moves.get(i+1);
//Do some stuff
}
【问题讨论】:
标签: java