-
Notifications
You must be signed in to change notification settings - Fork 566
Expand file tree
/
Copy pathCell.java
More file actions
50 lines (43 loc) · 1.25 KB
/
Cell.java
File metadata and controls
50 lines (43 loc) · 1.25 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
package cleancode.minesweeper.tobe;
public class Cell {
public static final String CLOSED_CELL_MARK = "□";
public static final String OPENED_CELL_MARK = "■";
public static final String LAND_MINE_MARK = "☼";
public static final String FLAG_MARK = "⚑";
private boolean isLandMine = false;
private boolean isFlag = false;
private boolean isOpen = false;
private Integer landMineCount = 0;
public void open() {
isOpen = true;
}
public void flag() {
if (isOpen) return;
isFlag = true;
}
public boolean isLandMine() {
return isLandMine;
}
public void applyLandMineCount(int count) {
landMineCount = count;
}
public boolean isChecked() {
return isOpen || isFlag;
}
@Override
public String toString() {
if (isOpen) {
if (isLandMine) return LAND_MINE_MARK;
if (landMineCount == 0) return OPENED_CELL_MARK;
return landMineCount.toString();
}
if (isFlag) return FLAG_MARK;
return CLOSED_CELL_MARK;
}
private Cell(boolean isLandMine) {
this.isLandMine = isLandMine;
}
public static Cell of(boolean isLandMine) {
return new Cell(isLandMine);
}
}