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

var cardsList: MutableList<String> = mutableListOf(
    "ジョーカー", "♠1", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7", "♠8", "♠9", "♠10", "♠11", "♠12", "♠13",
    "💛1", "💛2", "💛3", "💛4", "💛5", "💛6", "💛7", "💛8", "💛9", "💛10", "💛11", "💛12", "💛13",
    "♧1", "♧2", "♧3", "♧4", "♧5", "♧6", "♧7", "♧8", "♧9", "♧10", "♧11", "♧12", "♧13",
    "♢1", "♢2", "♢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
            "3" -> 3
            "4" -> 4
            "5" -> 5
            "6" -> 6
            "7" -> 7
            "8" -> 8
            "9" -> 9
            "10" -> 10
            "11" -> 11
            "12" -> 12
            "13" -> 13
            "14" -> 14
            "15" -> 15
            "16" -> 16
            "17" -> 17
            "18" -> 18
            "19" -> 19
            "20" -> 20
            "21" -> 21
            "22" -> 22
            "23" -> 23
            "24" -> 24
            "25" -> 25
            "26" -> 26
            "27" -> 27
            "28" -> 28
            "29" -> 29
            "30" -> 30
            "31" -> 31
            "32" -> 32
            "33" -> 33
            "34" -> 34
            "35" -> 35
            "36" -> 36
            "37" -> 37
            "38" -> 38
            "39" -> 39
            "40" -> 40
            "41" -> 41
            "42" -> 42
            "43" -> 43
            "44" -> 44
            "45" -> 45
            "46" -> 46
            "47" -> 47
            "48" -> 48
            "49" -> 49
            "50" -> 50
            "51" -> 51
            "52" -> 52
            "53" -> 53
            else -> 99
        }

    if (number == 99) {
        println("error")
    } else {
        val yourNum = chooseCard(number)
        println("あなたが選んだのは、$yourNum")

        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
            "♠2" -> 2
            "♠3" -> 3
            "♠4" -> 4
            "♠5" -> 5
            "♠6" -> 6
            "♠7" -> 7
            "♠8" -> 8
            "♠9" -> 9
            "♠10" -> 10
            "♠11" -> 11
            "♠12" -> 12
            "♠13" -> 13
            "💛1" -> 1
            "💛2" -> 2
            "💛3" -> 3
            "💛4" -> 4
            "💛5" -> 5
            "💛6" -> 6
            "💛7" -> 7
            "💛8" -> 8
            "💛9" -> 9
            "💛10" -> 10
            "💛11" -> 11
            "💛12" -> 12
            "💛13" -> 13
            "♧1" -> 1
            "♧2" -> 2
            "♧3" -> 3
            "♧4" -> 4
            "♧5" -> 5
            "♧6" -> 6
            "♧7" -> 7
            "♧8" -> 8
            "♧9" -> 9
            "♧10" -> 10
            "♧11" -> 11
            "♧12" -> 12
            "♧13" -> 13
            "♢1" -> 1
            "♢2" -> 2
            "♢3" -> 3
            "♢4" -> 4
            "♢5" -> 5
            "♢6" -> 6
            "♢7" -> 7
            "♢8" -> 8
            "♢9" -> 9
            "♢10" -> 10
            "♢11" -> 11
            "♢12" -> 12
            "♢13" -> 13
            else -> 0
            // 値を返す、when式 は、else が、必須なので.
        }
    return cardPower
}