로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
입문

코틀린 프로그래밍 기본 1

임시 이미지 황영덕
http://www.boostcourse.org/mo132/forum/71793
좋아요 647 수강생 4341

처음 배워서 그런지 자바보다 훨씬 시간이 걸렸어요. 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} 승리!")
}