Exemple #1
0
  public int toDOT(FileWriter fr, boolean redColored, int i) throws IOException {

    String red, format, val, blue;
    int me = i, aux;
    if (redColored) {
      red = "color=red, style=filled, ";
    } else {
      red = "";
    }
    if (value == Integer.MAX_VALUE || value == Integer.MIN_VALUE) {
      val = "";
      blue = "color=blue, style=filled, ";
    } else {
      val = "" + value;
      blue = "";
    }
    format = getDOTFormat();
    fr.append(me + " [" + red + blue + format + "label=\"" + pos.toString() + " " + val + "\"];\n");
    boolean redSon, selected = true;
    for (Node son : childs) {
      if (selected && son.value == value) {
        selected = false;
        redSon = true;
      } else {
        redSon = false;
      }
      aux = i + 1;
      i = son.toDOT(fr, redSon, ++i);
      fr.append(me + " -> " + aux + ";\n");
    }
    return i;
  }
  public void genMaze() {
    Node current =
        nodes[(int) (Math.random() * (MazeSize - 1))][(int) (Math.random() * (MazeSize - 1))];

    while (visited.size() < MazeSize * MazeSize) {

      if (!visited.contains(current)) {
        current.setVisited(true);
        visited.add(current);
        nodeStack.push(current);

        while (!nodeStack.isEmpty()) {
          traverse(nodes);
        }
      }
    }
  }
  public Node[][] traverse(Node[][] nodes) {

    if (!nodeStack.empty()) {

      Node current = nodeStack.pop();
      current = initiateNeighbors(current);
      current.setVisited(true);
      visited.add(current);

      double randProb = Math.random();

      if (randProb <= 0.2d) {
        current.setBlocked(true);
      }

      ArrayList<Node> neighbors = current.getNeighbors();
      for (Node nbr : neighbors) {
        if (!visited.contains(nbr)) {
          nodeStack.push(nbr);
        }
      }
    }
    return nodes;
  }
Exemple #4
0
 public Position nextMove(
     int maxLevel, long level, boolean prune, Integer parentVal, TimeInfo timeInfo) {
   if (timeInfo != null) {
     timeInfo.update();
   }
   if (maxLevel == level) {
     getHeuristicalValue();
     return pos;
   }
   Position nextPos = pos;
   setChilds();
   level++;
   for (Node child : childs) {
     if (prune && pruneBranch(parentVal)) {
       return null;
     }
     if (child.chooseMove(value)) {
       child.nextMove(maxLevel, level, prune, value, timeInfo);
       nextPos = child.pos;
       value = child.value;
     }
   }
   return nextPos;
 }
  public Node initiateNeighbors(Node n) {

    ArrayList<Node> nbrs = new ArrayList<Node>();
    ArrayList<Node> temp = new ArrayList<Node>();

    if (n.getY() < Maze.MazeSize - 1) nbrs.add(nodes[n.getX()][n.getY() + 1]);

    if (n.getY() > 0) nbrs.add(nodes[n.getX()][n.getY() - 1]);

    if (n.getX() > 0) nbrs.add(nodes[n.getX() - 1][n.getY()]);

    if (n.getX() < Maze.MazeSize - 1) nbrs.add(nodes[n.getX() + 1][n.getY()]);

    n.setNeighbors(nbrs);

    return n;
  }