-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathUI.java
More file actions
128 lines (98 loc) · 3.17 KB
/
Copy pathUI.java
File metadata and controls
128 lines (98 loc) · 3.17 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package application;
import enums.RoundGamer;
public class UI {
// USER INTERFACE
// STATIC VARIABLES
protected static boolean drawGame = false;
//Table of game
public static String[][] table = {
{"{ }", "{ }", "{ }"},
{"{ }", "{ }", "{ }"},
{"{ }", "{ }", "{ }"}
};
// STATIC METHODS
// This method set the symbol of RoundGamer on position on the table
public static boolean setCoordenatesOnTable(int[] position, RoundGamer gamer) {
boolean win = true;
String gamerSimbol = gamer.equals(RoundGamer.PLAYER) ? "{X}" : "{O}";
table[position[0]] [position[1]] = gamerSimbol;
win = validateWin(gamerSimbol);
return win;
}
// This method verify if the position in table is empty
public static boolean isEmptyOnTable(int[] position) {
return table[position[0]][position[1]].equals("{ }");
}
// This method checks if the game is a draw
public static boolean checkDrawGame() {
int cont = 0;
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table[i].length; j++) {
if (!table[i][j].equals("{ }")) {
cont++;
}
}
}
if (cont == 9) {
// Draw game
drawGame = true;
}
return drawGame;
}
// This method validate the Win of one RoundGamer
private static boolean validateWin(String gamerSimbol) {
int simbols = 0;
// Search on rows
for (int i = 0; i < table.length; i++) {
simbols = 0;
for (int j = 0; j < table[i].length; j++) {
if (table[i][j].equals(gamerSimbol)) {
simbols++;
}
}
if (simbols == 3) {
// The RoundGamer wins
return true;
}
}
// Search on rows
simbols = 0;
for (int i = 0; i < table.length; i++) {
simbols = 0;
for (int j = 0; j < table[i].length; j++) {
if (table[j][i].equals(gamerSimbol)) {
simbols++;
}
}
if (simbols == 3) {
// The RoundGamer wins
return true;
}
}
// Search on diagonals
simbols = 0;
for (int i = 0; i < table.length; i++) {
if (table[i][i].equals(gamerSimbol)) {
simbols++;
}
}
if (simbols == 3) {
// The RoundGamer wins
return true;
}
simbols = 0;
int di = 2; // Inversor (decrescent i)
for (int i = 0; i < table.length; i++) {
if (table[i][di].equals(gamerSimbol)) {
simbols++;
}
di--;
}
if (simbols == 3) {
// The RoundGamer wins
return true;
}
// The game continue
return false;
}
}