본문 바로가기

코딩 나도 할 수 있다!!

2024.05.02 (목) 코틀린 숫자야구게임 1

숫자야구게임을 하나 만들었다

사실 나 혼자 만든 게 아니라 여러 사람들의 도움으로 만들었다

fun main() {
    val num1 = (1..9)

    val rangeRandom1: MutableList<Int> = MutableList(3) { 10 }
    var idx: Int = 0
    var number: Int
    while (idx < 3) {
        number = num1.random()
        if (number in rangeRandom1)
            continue
        rangeRandom1[idx] = number
        idx++
    }

 

1~9까지 랜덤하게 3개의 숫자를 만들어내는 함수다

이 부분은 사실 내가 다 만든 코드가 아니라 완벽하게 이해를 잘 못하겠다

이 부분은 더 공부해 봐야겠다

 

그다음은

var q : Int
var w : Int
var e : Int
var strike : Int
var ball : Int

 

게임이 진행될 때 사용할 변수들을 만들어놓았다

 

while (true) {
    try {
        print("첫 번째 숫자 : ")
        q = readln().toInt()
        if (q !in 1..9) {
            println("다시입력")
            continue
        }

        print("두 번째 숫자 : ")
        w = readln().toInt()
        if (w !in 1..9) {
            println("다시입력")
            continue
        }

        print("세 번째 숫자 : ")
        e = readln().toInt()
        if (e !in 1..9) {
            println("다시입력")
            continue
        }
    } catch(e: NumberFormatException) {
        println("다시입력")
        continue
    }
    if (q == w || q == e || w == e) {
        println("중복")
        continue
    }

 

while 문을 사용하여 이 함수들이 반복할 수 있도록 하였다

첫 번째 숫자에서 1~9 이외의 숫자나 문자를 입력하면 다시 입력하게 해두었다

두 번째, 세 번째도 동일하게 해두었다

그리고  첫 번째와 두 번째, 세 번째 숫자가 동일하면 중복 입력으로 다시 입력하게 해두었다

try catch를 사용하여 예외 처리도 해두었다

 

strike = 0
ball = 0

val r = arrayOf(q, w, e)
for (i in r.indices) {
    for (j in rangeRandom1.indices) {
        if (r[i] == rangeRandom1[j]) {
            if (i == j) {
                strike++
            } else {
                ball++
            }
        }
    }
}
println("스트라이크: ${strike}")
println("볼: ${ball}")
if (strike == 3) {
    println("끝")
    break

 

여기에서는 위에서 받아온 숫자를 대조하여 같은 숫자인지 같은 위치인지 분별하는 작업이 진행된다
같은 숫자, 같은 위치에 있으면 strike
같은 숫자, 다른 위치에 있으면 ball
둘 다 아니면 아무것도 표시하지 않는다
3 스트라이크가 되면 게임이 끝난다

 

처음 이 과제를 직면했을 땐 막막하였다
어디서부터 시작해야 하는지
어떻게 시작해야 하는지
하지만 좋은 분들이 가르쳐 준 결과 해결할 수 있었다
나 혼자 해결하려 했으면 아마 하지 못했을 것이다
협업의 중요성을 간접적이게 알아가는 좋은 시간이었다