diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2014-10-28 11:54:33 +0100 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2014-10-28 11:54:33 +0100 | 
| commit | 38243dfc19b9c3e5b1b7ae7f4f463eaac3ce57bc (patch) | |
| tree | c76355ce7ef9a66e1a35cc058036df566ebbedb4 | |
| parent | a195273b884f8560f4c7eef32a07824b5eeb9306 (diff) | |
| download | RustAndDust-38243dfc19b9c3e5b1b7ae7f4f463eaac3ce57bc.zip RustAndDust-38243dfc19b9c3e5b1b7ae7f4f463eaac3ce57bc.tar.gz | |
SearchBoard: moves is a Set
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/Board.java | 3 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/SearchBoard.java | 16 | ||||
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/TileList.java | 12 | 
3 files changed, 23 insertions, 8 deletions
| diff --git a/core/src/ch/asynk/tankontank/engine/Board.java b/core/src/ch/asynk/tankontank/engine/Board.java index b8ded2d..7b6a414 100644 --- a/core/src/ch/asynk/tankontank/engine/Board.java +++ b/core/src/ch/asynk/tankontank/engine/Board.java @@ -1,5 +1,6 @@  package ch.asynk.tankontank.engine; +import java.util.Set;  import java.util.List;  import java.util.ArrayList;  import java.util.Iterator; @@ -241,7 +242,7 @@ public abstract class Board implements Disposable      protected int buildPossibleMoves(Pawn pawn, TileList moves)      {          Tile from = pawn.getTile(); -        List<SearchBoard.Node> nodes = searchBoard.possibleMovesFrom(pawn, from.getCol(), from.getRow()); +        Set<SearchBoard.Node> nodes = searchBoard.possibleMovesFrom(pawn, from.getCol(), from.getRow());          return moves.fromNodes(nodes);      } diff --git a/core/src/ch/asynk/tankontank/engine/SearchBoard.java b/core/src/ch/asynk/tankontank/engine/SearchBoard.java index 46af16b..668899b 100644 --- a/core/src/ch/asynk/tankontank/engine/SearchBoard.java +++ b/core/src/ch/asynk/tankontank/engine/SearchBoard.java @@ -1,9 +1,11 @@  package ch.asynk.tankontank.engine;  import java.util.List; -import java.util.ArrayDeque; -import java.util.LinkedList;  import java.util.ArrayList; +import java.util.Set; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.ArrayDeque;  public class SearchBoard  { @@ -40,7 +42,7 @@ public class SearchBoard      private LinkedList<Node> queue;      private ArrayDeque<Node> roadMarch; -    private List<Node> moves; +    private Set<Node> moves;      private List<Node> targets;      private List<Node> los; @@ -74,7 +76,7 @@ public class SearchBoard          this.stack = new ArrayDeque<Node>(20);          this.roadMarch = new ArrayDeque<Node>(5); -        this.moves = new ArrayList<Node>(40); +        this.moves = new LinkedHashSet<Node>(40);          this.targets = new ArrayList<Node>(10);          this.los = new ArrayList<Node>(10); @@ -139,7 +141,7 @@ public class SearchBoard          a[5] = getNode((src.col - 1), (src.row - 1));      } -    public List<Node> possibleMovesFrom(Pawn pawn, int col, int row) +    public Set<Node> possibleMovesFrom(Pawn pawn, int col, int row)      {          searchCount += 1;          moves.clear(); @@ -190,7 +192,7 @@ public class SearchBoard                              dst.parent = src;                              dst.roadMarch = roadMarch;                              stack.push(dst); -                            if (!moves.contains(dst)) moves.add(dst); +                            moves.add(dst);                          }                      } else {                          dst.search = searchCount; @@ -232,7 +234,7 @@ public class SearchBoard                              dst.parent = src;                              dst.roadMarch = true;                              roadMarch.push(dst); -                            if (!moves.contains(dst)) moves.add(dst); +                            moves.add(dst);                          }                      } else {                          dst.search = searchCount; diff --git a/core/src/ch/asynk/tankontank/engine/TileList.java b/core/src/ch/asynk/tankontank/engine/TileList.java index 4f27057..8d9078d 100644 --- a/core/src/ch/asynk/tankontank/engine/TileList.java +++ b/core/src/ch/asynk/tankontank/engine/TileList.java @@ -1,5 +1,6 @@  package ch.asynk.tankontank.engine; +import java.util.Set;  import java.util.List;  import java.util.ArrayList; @@ -26,6 +27,17 @@ public class TileList extends ArrayList<Tile>          return size();      } +    public int fromNodes(Set<SearchBoard.Node> nodes) +    { +        clear(); +        for (SearchBoard.Node node : nodes) { +            Tile tile = board.getTile(node.col, node.row); +            add(tile); +        } + +        return size(); +    } +      public void show()      {          enable(overlay, true); | 
