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

코틀린 프로그래밍 기본 1

임시 이미지 황영덕
http://www.boostcourse.org/mo132/forum/115800
좋아요 647 수강생 4341
fun main() {
var cnt = 1 // 몇 번째 판인지
var player = "O" // 플레이어 1: O, 플레이어 2: X (말을 놓을 때 쉽게 놓기 위해 변수 선언)
var playerInt = 1 // 플레이어
var placeArr: Array<Array<String>> = arrayOf(arrayOf(" "," "," "), // 말을 놓는 판
arrayOf(" "," "," "),
arrayOf(" "," "," "))

while(true) {
println("$cnt 번째 턴")
printBoard(placeArr) // 판을 그리는 메서드
print("Player $playerInt 입력(줄,칸) : ")
val input: String? = readLine() // 입력
val inputArray: List<String>? = input?.split(",") // 입력 arr로 배치

placeArr[inputArray!!.get(1)!!.toInt()-1][inputArray!!.get(0)!!.toInt()-1] = player // 입력한 위치에 말을 놓은

cnt++

if (whoWin(placeArr)==true) { // 승리 판정 메서드
println("Player $playerInt 승리!")
break
}

if (cnt%2==1) { // 한 경기가 끝나면 플레이어 바꿈
player = "O"
playerInt = 1
} else {
player = "X"
playerInt = 2
}
}
}

fun printBoard(array: Array<Array<String>>){
for(i in 0..2){
print("$i ")
for(j in 0..2){
print(array[i][j])
if (j!=2)
print("|")
}
println()
if (i!=2)
println(" -+-+-")
}
}

fun whoWin(array: Array<Array<String>>):Boolean {
var win = false // false: lose, true: win

for(i in 0 .. 2){
// 열 일치
if(array[0][i]==array[1][i]&&array[0][i]==array[2][i]&&array[0][i]!=" ")
return true
// 행 일치
else if(array[i][0]==array[i][1]&&array[i][0]==array[i][2]&&array[i][0]!=" ")
return true
// 대각선 일치
}
if(array[0][0]==array[1][1]&&array[0][0]==array[2][2]&&array[0][0]!=" ")
return true
if(array[2][0]==array[1][1]&&array[2][0]==array[0][2]&&array[0][2]!=" ")
return true

return false
}