-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSmallSquare.java
More file actions
100 lines (86 loc) · 2.67 KB
/
Copy pathSmallSquare.java
File metadata and controls
100 lines (86 loc) · 2.67 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
public class SmallSquare{
private char[] _sttt;
private char _winner;
private boolean _gameover;
private int state = 0;
public SmallSquare(){
_sttt = new char[9];
for(int i = 0; i < 9; i++)
_sttt[i] = ' ';
_gameover = false;
_winner = '-';
}
public char[] getBoard(){
return _sttt;
}
public char getIndex(int val){
return _sttt[val];
}
public char getWinner(){
return _winner = _sttt[0];
}
public boolean isOver(){
populate();
if((_sttt[0] == _sttt[1] && _sttt[1] == _sttt[2]) ||
(_sttt[0] == _sttt[3] && _sttt[3] == _sttt[6]) ||
(_sttt[0] == _sttt[4] && _sttt[4] == _sttt[8]))
return setWinner(_sttt[0]);
if((_sttt[3] == _sttt[4] && _sttt[4] == _sttt[5]) ||
(_sttt[1] == _sttt[4] && _sttt[4] == _sttt[7]) ||
(_sttt[2] == _sttt[4] && _sttt[4] == _sttt[6]))
return setWinner(_sttt[4]);
if((_sttt[6] == _sttt[7] && _sttt[7] == _sttt[8]) ||
(_sttt[2] == _sttt[5] && _sttt[5] == _sttt[8]))
return setWinner(_sttt[8]);
unpopulate();
for( char x : _sttt )
if( x == ' ')
return false;
setWinner('-');
return _gameover = true;
}
public boolean setWinner(char player){
if(_gameover)
_winner = player;
for (int i = 0; i < _sttt.length; i++)
_sttt[i] = player;
return _gameover = true;
}
public void setSquare(int index, char player){
_sttt[index] = player;
}
public void populate(){
for(int i = 0; i < 9; i++)
if(!(_sttt[i] == 'x' || _sttt[i] == 'o' || _sttt[i] == '-'))
_sttt[i] = (char)(i+'1');
}
public void unpopulate(){
for(int i = 0; i < 9; i++)
if(!(_sttt[i] == 'x' || _sttt[i] == 'o' || _sttt[i] == '-'))
_sttt[i] = ' ';
}
public String addColor (char z) {
String ANSI_RED = "\u001B[31m";
String ANSI_CYN = "\u001B[36m";
String ANSI_YLW = "\u001B[33m";
String ANSI_RST = "\u001B[0m";
if (z == 'x')
return ANSI_RED + z + ANSI_RST;
if (z == 'o')
return ANSI_CYN + z + ANSI_RST;
return ANSI_YLW + z + ANSI_RST;
}
public void printBoard(){
populate();
String s1 = " | | \n";
String s2 = " ------------+-------------+------------\n";
System.out.print(s1+s1);
System.out.printf(" %s | %s | %s \n",addColor(_sttt[0]),addColor(_sttt[1]),addColor(_sttt[2]));
System.out.print(s1+s1+s2+s1+s1);
System.out.printf(" %s | %s | %s \n",addColor(_sttt[3]),addColor(_sttt[4]),addColor(_sttt[5]));
System.out.print(s1+s1+s2+s1+s1);
System.out.printf(" %s | %s | %s \n",addColor(_sttt[6]),addColor(_sttt[7]),addColor(_sttt[8]));
System.out.print(s1+s1);
unpopulate();
}
}