blob: f7fba1cf293019dd969f41373cc7fb44eb41a0c7 (
plain) (
blame)
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
|
class Board(var layout: Array[Char]) {
if (!layout.mkString.matches("[xo ]{9}")) {
println("Invalid layout")
layout = " ".toArray
}
def this() {
this(" ".toArray)
}
def show {
println("\n --- ")
println("|" + layout.mkString.substring(0,3) + "|")
println("|" + layout.mkString.substring(3,6) + "|")
println("|" + layout.mkString.substring(6,9) + "|")
println(" --- ")
}
def status:Char = {
// Horizontal
if (layout(0) == layout(1) && layout(1) == layout(2))
return layout(0)
else if (layout(3) == layout(4) && layout(4) == layout(5))
return layout(3)
else if (layout(6) == layout(7) && layout(7) == layout(8))
return layout(7)
// Vertical
else if (layout(0) == layout(3) && layout(3) == layout(6))
return layout(0)
else if (layout(1) == layout(4) && layout(4) == layout(7))
return layout(1)
else if (layout(2) == layout(5) && layout(5) == layout(8))
return layout(2)
// Diagonal
else if (layout(0) == layout(4) && layout(4) == layout(8))
return layout(0)
else if (layout(2) == layout(4) && layout(4) == layout(6))
return layout(2)
return if (layout.contains(' ')) ' ' else 't'
}
def play {
var st = status
var player = 'x'
var input = ""
reset
show
while (st == ' ') {
print("Player " + player + "> ")
input = readLine
if (input.matches("[0-8]") && layout(input.toInt) == ' ') {
layout(input.toInt) = player
show
player = if (player == 'x') 'o' else 'x'
}
st = status
}
if (status == 't')
println("There is a tie!")
else
println("The winner is " + status + "!")
}
def reset {
layout = " ".toArray
}
}
var playBoard = new Board
playBoard.play
|