Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript I';I’我想做一个;侧面();一个奥赛罗游戏的方法。但我可以';i don’我不知道如何遍历每一块,当我找到我的一块时就停止_Javascript_Loops_Arraylist_Othello - Fatal编程技术网

Javascript I';I’我想做一个;侧面();一个奥赛罗游戏的方法。但我可以';i don’我不知道如何遍历每一块,当我找到我的一块时就停止

Javascript I';I’我想做一个;侧面();一个奥赛罗游戏的方法。但我可以';i don’我不知道如何遍历每一块,当我找到我的一块时就停止,javascript,loops,arraylist,othello,Javascript,Loops,Arraylist,Othello,以下是我一直在尝试的方法: private ArrayList<Location> countFlankCombo(Location start) { ArrayList<Location> opponentLocation = new ArrayList<>(); Player opponent = players().iterator().next(); for (GridDirection dir

以下是我一直在尝试的方法:

    private ArrayList<Location> countFlankCombo(Location start) {
        ArrayList<Location> opponentLocation = new ArrayList<>();
        Player opponent = players().iterator().next();

        for (GridDirection direction : getDirectionToEnemy(start)) {
            Location nextPosition = start.getNeighbor(direction);
            while (board.get(nextPosition) == opponent && !board.canPlace(nextPosition) && board.isOnGrid(nextPosition)) {
                ArrayList<Location> potentialFlankList = new ArrayList<>();
                potentialFlankList.add(nextPosition);
                nextPosition = nextPosition.getNeighbor(direction);
                if (board.get(nextPosition) == getCurrentPlayer()) {
                    opponentLocation.addAll(potentialFlankList);
                    break;
                }
            }
        }
        return opponentLocation;
    }
private ArrayList countflankombo(位置开始){
ArrayList opponentLocation=新的ArrayList();
玩家对手=玩家().iterator().next();
用于(GridDirection方向:GetDirectionToEnmy(开始)){
位置nextPosition=start.getNeighbor(方向);
while(board.get(nextPosition)=对手&&!board.canPlace(nextPosition)&&board.isOnGrid(nextPosition)){
ArrayList PotentialFlanchList=新的ArrayList();
添加(下一个位置);
nextPosition=nextPosition.getNeighbor(方向);
if(board.get(nextPosition)=getCurrentPlayer()){
addAll(潜在侧翼列表);
打破
}
}
}
返回对位;
}
我使用了我制作的第二种方法,在上面提到的方法中:

   private ArrayList<GridDirection> getDirectionToEnemy(Location loc) {
        ArrayList<GridDirection> enemyPieceDirection = new ArrayList<>();

        for (GridDirection dir : GridDirection.EIGHT_DIRECTIONS) {
            Location piece = loc.getNeighbor(dir);
                if (!board.canPlace(piece) && board.isOnGrid(piece) && !board.get(piece).equals(getCurrentPlayer())) {
                        enemyPieceDirection.add(loc.directionTo(piece));
                }
        }
        return enemyPieceDirection;
    }
private ArrayList getDirectionToEnemy(位置loc){
ArrayList-enemyPieceDirection=新的ArrayList();
for(GridDirection目录:GridDirection.八个方向){
位置块=位置getNeighbor(dir);
如果(!board.canPlace(piece)&&board.isOnGrid(piece)&&board.get(piece).equals(getCurrentPlayer()){
enemyPieceDirection.添加(定位方向至(件));
}
}
回肠方向;
}
Location类型的输入变量是放置他/她的工件的瓷砖

“GridDirection.EIGHTDIRECTION”是一个数组列表,它使我能够从位置loc检查网格上的每个方向。(它包含的值包括:北、东北、东、东南……等)

“board.get(nextPosition)”检查“nextPosition”位置上的内容

“board.isOnGrid(nextPosition)”检查位置是否在板上

现在我的问题是当我有一排我对手的棋子时 然后我仍然只得到第一块的位置,其他什么都没有。 我从打印“对手位置”列表中得到的信息

我不知道为什么它不迭代,抛出所有的位置,然后把它们全部加起来