-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBoard.java
More file actions
75 lines (68 loc) · 1.9 KB
/
Copy pathBoard.java
File metadata and controls
75 lines (68 loc) · 1.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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<Integer, Block> 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<Board> getNeighbours() {
ArrayList<Board> 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();
}
}