// EasyGameUsingArgs0.kt(args[0] を、使った、簡単なゲーム)

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(args: Array<String>) {
    println("仕切られた、カードの上から何枚目を引きますか?")
    println("1~53 が、arg[0] に、設定されます.")

    /*
    val yourEnter: String? = readLine()
    */
    try {
        // IntelliJ: Run → Edit Configurations... → Program arguments に、設定する.
        val yourEnter = args[0]

        // あなたのタイプ に、エラーがある場合は、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)
    } catch (aE: ArrayIndexOutOfBoundsException) {
        println("入力されていません")
    }
}

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
}