57 lines
1.4 KiB
Scala
57 lines
1.4 KiB
Scala
object TicTacToe {
|
|
val board = new Array[Char](9)
|
|
var mark = 'X'
|
|
|
|
def tick(horizontal: String, vertical: String) {
|
|
val x = horizontal match {
|
|
case "left" => 0
|
|
case "middle" => 1
|
|
case "right" => 2
|
|
case _ => 0
|
|
}
|
|
|
|
val y = vertical match {
|
|
case "up" => 0
|
|
case "middle" => 3
|
|
case "down" => 6
|
|
case _ => 0
|
|
}
|
|
|
|
val index = x + y
|
|
if (board(index) == 'X' || board(index) == 'O') {
|
|
println("Spot is already taken!")
|
|
return
|
|
}
|
|
|
|
board(index) = mark
|
|
|
|
isWinner('X')
|
|
isWinner('O')
|
|
|
|
mark = mark match {
|
|
case 'X' => 'O'
|
|
case 'O' => 'X'
|
|
case _ => 'c'
|
|
}
|
|
}
|
|
|
|
def isWinner(mark: Char) {
|
|
if ((board(0) == mark && board(1) == mark && board(2) == mark) ||
|
|
(board(3) == mark && board(4) == mark && board(5) == mark) ||
|
|
(board(6) == mark && board(7) == mark && board(8) == mark) ||
|
|
(board(0) == mark && board(3) == mark && board(6) == mark) ||
|
|
(board(1) == mark && board(4) == mark && board(7) == mark) ||
|
|
(board(2) == mark && board(5) == mark && board(8) == mark) ||
|
|
(board(0) == mark && board(4) == mark && board(8) == mark) ||
|
|
(board(2) == mark && board(4) == mark && board(6) == mark)) {
|
|
println("Gewinner: " + mark)
|
|
}
|
|
}
|
|
}
|
|
|
|
TicTacToe.tick("left", "up")
|
|
TicTacToe.tick("right", "up")
|
|
TicTacToe.tick("left", "middle")
|
|
TicTacToe.tick("middle", "middle")
|
|
TicTacToe.tick("left", "down")
|