-
Notifications
You must be signed in to change notification settings - Fork 1
/
cell.js
61 lines (49 loc) · 1.14 KB
/
cell.js
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
MineSweeper.Cell = function(rowIndex, columnIndex) {
var exposed = false;
var hidesSomeBomb = false;
var blocked = false;
var exposeCell = function() {
if (!isThisCellBlocked()) exposed = true;
return this;
};
var hideCell = function() {
exposed = false;
return this;
};
var isCellExposed = function() {
return exposed;
};
var isCellHidden = function() {
return !exposed;
};
var hideBombInThisCell = function() {
hidesSomeBomb = true;
return this;
};
var removeBombFromThisCell = function() {
hidesSomeBomb = false;
return this;
};
var isBombHiddenHere = function() {
return hidesSomeBomb;
};
var toggleBlockingOnThisCell = function() {
blocked = !blocked;
}
var isThisCellBlocked = function() {
return blocked;
}
return {
x: rowIndex,
y: columnIndex,
expose: exposeCell,
hide: hideCell,
isExposed: isCellExposed,
isHidden: isCellHidden,
hasBomb: isBombHiddenHere,
putBomb: hideBombInThisCell,
removeBomb: removeBombFromThisCell,
toggleBlock: toggleBlockingOnThisCell,
isBlocked: isThisCellBlocked
};
};