YSHUSH

가위바위보 게임 본문

Coding/Kotlin

가위바위보 게임

코딩; 2022. 1. 26. 09:01

 

컴퓨터와 가위바위보 게임을 해보도록 하자
컴퓨터는 랜덤으로 내고 유저는 숫자를 입력하여 게임한다.
몇승 몇패 몇무인지 결과값도 출력해보자.

 

변수 정의

fun main(args: Array<String>) {

    var userNum: Int
    var comNum: Int

    var win: Int
    var lose: Int
    var draw: Int
    var result: Int

    win = 0.also{ draw = it }.also { lose = it }
    /*
    win = 0
    lose = 0
    draw = 0
    */
    println("가위 바위 보 게임입니다.")
}

win = 0.also{ draw = it }.also { lose = it } → 0으로 초기화 하는 부분

 

랜덤값 얻기

// random
comNum = (Math.random() * 3).toInt()    // 0 ~ 2

Math.random()은 0과 1사이를 반환하므로 * 3을 할 경우 0과 2.xxx사이값을 반환한다.

여기에 toInt()를 해주면 정수 0, 1, 2를 반환하게 할 수 있다.

 

가위바위보 공식

COMPUTER USER WIN
(보)     2 - 0 + 2 = 4 % 3 = 1
(가위) 0 - 1 + 2 = 1 % 3 = 1
(바위) 1 - 2 + 2 = 1 % 3 = 1

 

COMPUTER USER LOSE
(가위) 0 - 2 + 2 = 0 % 3 = 0
(바위) 1 - 0 + 2 = 3 % 3 = 0
(보)     2 - 1 + 2 = 3 % 3 = 0

 

COMPUTER USER DRAW
(가위) 0 - 0 + 2 = 2  % 3 = 2
(바위) 1 - 1 + 2 = 2  % 3 = 2
(보)     2 - 2 + 2 = 2  % 3 = 2

 

 

결과 얻기

result = (comNum - userNum + 2) % 3

var resultMsg = ""
when (result) {
    1 -> {
        resultMsg = "You Win"
        win++
    }
    0 -> {
        resultMsg = "You Lose"
        lose++
    }
    2 -> {
        resultMsg = "Draw"
        draw++
    }
}

var userChar = if (userNum == 0) "가위" else if (userNum == 1) "바위" else "보"
var comChar = if (comNum == 0) "가위" else if (comNum == 1) "바위" else "보"

println("$resultMsg 으로 당신은 $userChar 이고 com은 $comChar 입니다.")
println("$win 승 $lose 패 $draw 무 입니다")

 

완성 코드 + 재시작

fun main(args: Array<String>) {

    var userNum: Int
    var comNum: Int

    var win: Int
    var lose: Int
    var draw: Int
    var result: Int

    win = 0.also{ draw = it }.also { lose = it }
    /*
    win = 0
    lose = 0
    draw = 0
    */
    println("가위 바위 보 게임입니다.")

    while(true) {

        println("start game >>>")

        // random
        comNum = (Math.random() * 3).toInt()    // 0 ~ 2

        // user input
        print("가위(0) 바위(1) 보(2) = ")
        userNum = readLine()!!.toInt()      // 0 ~ 2
        
        result = (comNum - userNum + 2) % 3

        var resultMsg = ""
        when (result) {
            1 -> {
                resultMsg = "You Win"
                win++
            }
            0 -> {
                resultMsg = "You Lose"
                lose++
            }
            2 -> {
                resultMsg = "Draw"
                draw++
            }
        }

        var userChar = if (userNum == 0) "가위" else if (userNum == 1) "바위" else "보"
        var comChar = if (comNum == 0) "가위" else if (comNum == 1) "바위" else "보"

        println("$resultMsg 으로 당신은 $userChar 이고 com은 $comChar 입니다.")
        println("$win 승 $lose 패 $draw 무 입니다")

        print("한판 더?(y/n) = ")
        val msg = readLine()
        if (msg == "n" || msg == "N") {
            println("안녕히 가십시오")
            break
        }
        println("게임을 다시 시작합니다")
    }
}

'Coding > Kotlin' 카테고리의 다른 글

추상클래스(abstract class)  (0) 2022.01.27
상속  (0) 2022.01.27
Lazy  (0) 2022.01.26
Getter & Setter  (0) 2022.01.26
보조 생성자  (0) 2022.01.26