Code Sketch


purva chavan
By: Mhalsakant School
Category: Art
import scala.io.StdIn

object TicTacToe {
  val board = Array.fill(9)(' ')
  val wins = Array(
    Array(0, 1, 2), Array(3, 4, 5), Array(6, 7, 8),
    Array(0, 3, 6), Array(1, 4, 7), Array(2, 5, 8),
    Array(0, 4, 8), Array(2, 4, 6)
  )

  def showBoard(): Unit = {
    println()
    for (i <- 0 until 9 by 3) {
      println(s" ${board(i)} | ${board(i + 1)} | ${board(i + 2)} ")
      if (i < 6) println("---+---+---")
    }
    println()
  }

  def checkWinner(): Boolean = {
    wins.exists(line =>
      board(line(0)) != ' ' &&
      board(line(0)) == board(line(1)) &&
      board(line(1)) == board(line(2))
    )
  }

  def main(args: Array[String]): Unit = {
    var player = 'X'
    var moves = 0
    var gameOver = false

    println("=== Tic-Tac-Toe Game ===")
    println("Player X vs Player O")

    while (!gameOver && moves < 9) {
      showBoard()
      println(s"Player $player, enter position (1-9): ")

      val input = StdIn.readLine()

      try {
        val pos = input.toInt - 1

        if (pos >= 0 && pos < 9 && board(pos) == ' ') {
          board(pos) = player
          moves += 1

          if (checkWinner()) {
            showBoard()
            println(s"Player $player wins! Congratulations!")
            gameOver = true
          } else {
            player = if (player == 'X') 'O' else 'X'
          }
        } else {
          println("Invalid position! Try again.")
        }
      } catch {
        case _: NumberFormatException =>
          println("Please enter a number from 1 to 9.")
      }
    }

    if (!gameOver) {
      showBoard()
      println("Game Draw!")
    }
  }
}