// EasyGame.kt(簡単なゲーム)

①:
var cardsList: MutableList<String> = mutableListOf(
    "ジョーカー", "♠1", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", "♠9",
            … 省略 …
    "♢3", "♢4", "♢5", "♢6", "♢7", "♢8", "♢9", "♢10", "♢11", "♢12", "♢13"
) :①
②:
// カードの点数
var cardPower: Int = 0
// コンピュータのカード点数
var comCardPower = 0
:②

fun main() {
    println("仕切られた、カードの上から何枚目を引きますか?")
    println("1~53 のうちどれかを、タイプしてください")

     val yourEnter: String? = readLine() 
    ③:
    // あなたのタイプ に、エラーがある場合は、0点 とします.
    var yourCardPower = 0

    val number: Int =
        when (yourEnter) {
            "1" -> 1
            "2" -> 2
            … 省略 …
            "52" -> 52
            "53" -> 53
            else -> 99
        }

    if (number == 99) {
        println("error")
    } else {
        val yourNum = chooseCard(number)
        println("あなたが選んだのは、$yourNum")
            // $yourNum は、${yourNum} と、同じです(この場合は、省略できるので.)。
            // IntelliJ の、細かいチェックまで、無くしたら、こうなりましたが、
            // 日本語を使う場合は、省略しない方がいいと思います。

        yourCardPower = getCardPower(yourNum)

        println("あなたのカード は、${yourCardPower}点 です")
    }
:③
④:
    val comCard = 1
    val comNum = chooseCard(comCard)
    println("コンピューターが選んだのは、$comNum")
    comCardPower = getCardPower(comNum)
    println("コンピューターのカード は、${comCardPower}点 です")
:④
⑤:
    val out: String =
        when {
            yourCardPower > comCardPower -> "You won"
            comCardPower > yourCardPower -> "Com won"
            else -> "Draw"
        }

    println(out)
:⑤
}

fun chooseCard(num: Int): String {
    // MutableList ⇒ List に、変更しないと、実行できない.
    val shuffledCard: List<String> = cardsList.shuffled()
    println(shuffledCard)
    // インデックスナンバー は、-1 になる.(0スタート)
    val selectedCard: String = shuffledCard[num - 1]
    // カードを1枚減らすためには、MutableList に、変更する.
    cardsList = shuffledCard.toMutableList()
    cardsList.remove(selectedCard)
    return selectedCard
}

fun getCardPower(whichCard: String): Int {
    cardPower =
        when (whichCard) {
            "ジョーカー" -> 14
            "♠1" -> 1
            … 省略 …
            "♢12" -> 12
            "♢13" -> 13
            else -> 0
            // 値を返す、when式 は、else が、必須なので.
        }
    return cardPower
}