diff options
| author | Jérémy Zurcher <jeremy@asynk.ch> | 2014-09-25 22:44:54 +0200 | 
|---|---|---|
| committer | Jérémy Zurcher <jeremy@asynk.ch> | 2014-09-25 22:44:54 +0200 | 
| commit | 819e9b740d7420838067a23383c6252df3024b92 (patch) | |
| tree | 4a9a95eaf0a07e2f39a4f977c30293bff54770d6 | |
| parent | 56fe1b1603713db50413a08201b8dc587c631d7a (diff) | |
| download | RustAndDust-819e9b740d7420838067a23383c6252df3024b92.zip RustAndDust-819e9b740d7420838067a23383c6252df3024b92.tar.gz | |
SearchBoard: clean up
| -rw-r--r-- | core/src/ch/asynk/tankontank/engine/SearchBoard.java | 42 | 
1 files changed, 23 insertions, 19 deletions
| diff --git a/core/src/ch/asynk/tankontank/engine/SearchBoard.java b/core/src/ch/asynk/tankontank/engine/SearchBoard.java index cfe5b24..fa84e5b 100644 --- a/core/src/ch/asynk/tankontank/engine/SearchBoard.java +++ b/core/src/ch/asynk/tankontank/engine/SearchBoard.java @@ -11,7 +11,7 @@ public class SearchBoard          public int col;          public int row;          public int search; -        public int mvtLeft; +        public int remaining;          public Node parent;          public boolean roadMarch; @@ -62,8 +62,9 @@ public class SearchBoard          return nodes[col + (row * cols)];      } -    public void adjacents(Node src) +    public void adjacentMoves(Node src)      { +        // move to enter dst by          adjacents[0] = getNode((src.col - 1), src.row);          adjacents[3] = getNode((src.col + 1), src.row);          if ((src.row % 2) == 0) { @@ -87,26 +88,29 @@ public class SearchBoard          Node start = getNode(col, row);          start.parent = null;          start.search = searchCount; -        start.mvtLeft = pawn.getMovementPoints(); +        start.remaining = pawn.getMovementPoints();          start.roadMarch = true; -        stack.push(start); -        int roadMarchBonus = pawn.getRoadMarchBonus(); +        if (start.remaining <= 0) +            return result; +        int roadMarchBonus = pawn.getRoadMarchBonus();          boolean first = true; +        stack.push(start); +          while (stack.size() != 0) {              Node src = stack.pop(); -            if (src.mvtLeft <= 0) { +            if (src.remaining <= 0) {                  if (src.roadMarch) { -                    src.mvtLeft = roadMarchBonus; +                    src.remaining = roadMarchBonus;                      roadMarch.push(src);                  }                  continue;              } -            adjacents(src); +            adjacentMoves(src);              for(int i = 0; i < 6; i++) {                  Node dst = adjacents[i]; @@ -116,12 +120,12 @@ public class SearchBoard                      boolean road = t.road(directions[i]);                      int cost = t.costFrom(pawn, directions[i], road);                      boolean mayMoveOne = first && t.atLeastOneMove(pawn); -                    int r = src.mvtLeft - cost; +                    int r = src.remaining - cost;                      boolean roadMarch = road && src.roadMarch;                      if (dst.search == searchCount) { -                        if ((r >= 0) && ((r > dst.mvtLeft) || (roadMarch && ((r + roadMarchBonus) >= dst.mvtLeft)))) { -                            dst.mvtLeft = r; +                        if ((r >= 0) && ((r > dst.remaining) || (roadMarch && ((r + roadMarchBonus) >= dst.remaining)))) { +                            dst.remaining = r;                              dst.parent = src;                              dst.roadMarch = roadMarch;                          } @@ -129,13 +133,13 @@ public class SearchBoard                          dst.search = searchCount;                          if ((r >= 0) || mayMoveOne) {                              dst.parent = src; -                            dst.mvtLeft = r; +                            dst.remaining = r;                              dst.roadMarch = roadMarch;                              stack.push(dst);                              result.add(dst);                          } else {                              dst.parent = null; -                            dst.mvtLeft = Integer.MAX_VALUE; +                            dst.remaining = Integer.MAX_VALUE;                          }                      }                  } @@ -146,7 +150,7 @@ public class SearchBoard          while(roadMarch.size() != 0) {              Node src = roadMarch.pop(); -            adjacents(src); +            adjacentMoves(src);              for(int i = 0; i < 6; i++) {                  Node dst = adjacents[i]; @@ -156,11 +160,11 @@ public class SearchBoard                      if (!t.road(directions[i]))                          continue;                      int cost = t.costFrom(pawn, directions[i], true); -                    int r = src.mvtLeft - cost; +                    int r = src.remaining - cost;                      if (dst.search == searchCount) { -                        if ((r >= 0) && (r > dst.mvtLeft)) { -                            dst.mvtLeft = r; +                        if ((r >= 0) && (r > dst.remaining)) { +                            dst.remaining = r;                              dst.parent = src;                              dst.roadMarch = true;                          } @@ -168,13 +172,13 @@ public class SearchBoard                          dst.search = searchCount;                          if (r >= 0) {                              dst.parent = src; -                            dst.mvtLeft = r; +                            dst.remaining = r;                              dst.roadMarch = true;                              roadMarch.push(dst);                              result.add(dst);                          } else {                              dst.parent = null; -                            dst.mvtLeft = Integer.MAX_VALUE; +                            dst.remaining = Integer.MAX_VALUE;                          }                      }                  } | 
