처음 배워서 그런지 자바보다 훨씬 시간이 걸렸어요. checkGrid 함수 부분을 더 간단하게 고칠 수 있는 방법을 찾아봐야 겠습니다.
fun main() {
var grid = Array(3, { Array(3, { " " }) })
fun makeGrid() {
println(" 0 1 2")
for (i in 0..2) {
println("$i ${grid[i][0]}|${grid[i][1]}|${grid[i][2]}")
if (i != 2) {
println(" -+-+-")
}
}
}
fun checkGrid(): Boolean {
var b: Boolean = false
for (i in 0..2) {
b = b || (grid[i][0] != " " && grid[i][0] == grid[i][1] && grid[i][0] == grid[i][2])
b = b || (grid[0][i] != " " && grid[0][i] == grid[1][i] && grid[0][i] == grid[2][i])
}
b = b || (grid[0][0] != " " && grid[0][0] == grid[1][1] && grid[0][0] == grid[2][2])
b = b || (grid[0][2] != " " && grid[0][2] == grid[1][1] && grid[0][2] == grid[2][0])
return b
}
var turn: Int = 0
var player: Int
var pattern: String
do {
player = turn % 2 + 1
pattern = if (player == 1) "O" else "X"
println("\n${turn + 1}번째 턴")
makeGrid()
print("Player ${player} 입력(줄, 칸): ")
val (x, y) = readLine()!!.split(",").map(String::toInt)
if (grid[x][y] != " ") {
println("이 자리에는 놓을 수 없습니다.")
continue
} else grid[x][y] = pattern
++turn
} while (!checkGrid())
makeGrid()
println("Plater ${player} 승리!")
}
comment