import java.util.ArrayList;
import java.util.HashMap;
public class Board {
Board parent = null;
int fScore = Integer.MAX_VALUE;
int gScore = 0;
int[][] move;
static int redBlockKey;
HashMap blocks = new HashMap<>();
Board() {
}
Board(Board toCopy) {
for (Block block : toCopy.blocks.values()) {
blocks.put(block.id, block.clone());
}
}
boolean isSquareOccupied(int x, int y) {
for (Block block : blocks.values()) {
if (block.covers(x, y)) {
return true;
}
}
return false;
}
ArrayList getNeighbours() {
ArrayList neighbours = new ArrayList<>();
for (Block b : blocks.values()) {
neighbours.addAll(b.getNeighbours(this));
}
return neighbours;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof Board))
return false;
else {
Board other = (Board) obj;
for (int i = 0; i < blocks.size(); i++) {
if (!blocks.get(i).equals(other.blocks.get(i))) {
return false;
}
}
return true;
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 6; i++) {
sb.append("|");
for (int j = 0; j < 6; j++) {
if (isSquareOccupied(j, i)) {
for (Block b : blocks.values()) {
if (b.covers(j, i)) {
sb.append(b.id + "|");
break;
}
}
} else {
sb.append(" |");
}
}
sb.append("\n");
}
sb.append("\n");
return sb.toString();
}
}