seven_languages_in_seven_weeks/scala/day1.scala
2023-04-24 09:10:53 +02:00

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")