Java Reference
In-Depth Information
19 JPanel p =
new
JPanel(
new
GridLayout(
3
,
3
,
0
,
0
));
20
for
(
int
i =
0
; i <
3
; i++)
21
for
(
int
j =
0
; j <
3
; j++)
22 p.add(cells[i][j] =
new
Cell());
23
24
// Set line borders on the cells' panel and the status label
25 p.setBorder(
new
LineBorder(Color.red,
1
));
26 jlblStatus.setBorder(
new
LineBorder(Color.yellow,
1
));
27
28
// Place the panel and the label for the applet
29 add(p, BorderLayout.CENTER);
30 add(jlblStatus, BorderLayout.SOUTH);
31 }
32
33
/** Determine whether the cells are all occupied */
34
public boolean
isFull()
{
check
isFull
35
for
(
int
i =
0
; i <
3
; i++)
36
for
(
int
j =
0
; j <
3
; j++)
37
if
(cells[i][j].getToken() ==
' '
)
38
return false
;
39
40
return true
;
41 }
42
43
/** Determine whether the player with the specified token wins */
44
public boolean
isWon(
char
token)
{
45
for
(
int
i =
0
; i <
3
; i++)
46
if
((cells[i][
0
].getToken() == token)
47 && (cells[i][
1
].getToken() == token)
48 && (cells[i][
2
].getToken() == token)) {
49
check rows
return true
;
50 }
51
52
for
(
int
j =
0
; j <
3
; j++)
53
if
((cells[
0
][j].getToken() == token)
54 && (cells[
1
][j].getToken() == token)
55 && (cells[
2
][j].getToken() == token)) {
56
check columns
return true
;
57 }
58
59
if
((cells[
0
][
0
].getToken() == token)
60 && (cells[
1
][
1
].getToken() == token)
61 && (cells[
2
][
2
].getToken() == token)) {
62
check major diagonal
return true
;
63 }
64
65
if
((cells[
0
][
2
].getToken() == token)
66 && (cells[
1
][
1
].getToken() == token)
67 && (cells[
2
][
0
].getToken() == token)) {
68
check subdiagonal
return true
;
69 }
70
71
return false
;
72 }
73
74
// An inner class for a cell
75
public class
Cell
extends
JPanel
{
inner class
Cell
76
// Token used for this cell
77
private char
token =
' '
;
78