Poker.kt 3.36 KB
Newer Older
1

2
// Repositorio https://phoebe.roshka.com/gitlab/yalvarez/kotlin-e004-poker
3 4
const val CARAS = "23456789tjqka"
const val LETRAS = "shdc"
5

6 7 8 9 10
//clase carta que recibe el valor y el palo
class Carta(completo: String) {
    fun valorPalo(): String {
        return valor + palo
    }
11

12 13
    var valor: String
    var palo: String
14

15 16 17
    init {
        valor = completo[0].toString()
        palo = completo[1].toString()
18
    }
19 20 21 22 23
}
//clase que ordena las cartas
class OrdenarCartas {
    val valores = charArrayOf('A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K')
    val palos = charArrayOf('S', 'C', 'H', 'D')
24

25 26 27
    fun compararValor(valor1: Char, valor2: Char): Int {
        var numValor1 = 0
        var numValor2 = 0
28

29 30 31 32 33
        for (i in valores.indices) {
            if (valor1 == valores[i]) {
                numValor1 = i
                break
            }
34
        }
35

36 37 38 39 40
        for (i in valores.indices) {
            if (valor2 == valores[i]) {
                numValor2 = i
                break
            }
41
        }
42 43 44 45 46 47 48

        return if (numValor1 == numValor2) {
            0
        } else if (numValor1 > numValor2) {
            1
        } else {
            -1
49
        }
50 51 52 53 54 55 56 57 58 59 60
    }

    fun esAnterior(carta1: Carta, carta2: Carta): Boolean {
        var valor1 = 0
        var valor2 = 0
        //Buscamos la posicion del valor de la otra carta
        for (i in valores.indices) {
            if (carta1.valorPalo()[0] == valores[i]) {
                valor1 = i
                break
            }
61
        }
62 63 64 65 66
        //Buscamos la posicion del valor de esta carta
        for (i in valores.indices) {
            if (carta2.valorPalo()[0] == valores[i]) {
                valor2 = i
                break
67
            }
68
        }
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
        //averiguamos si es el siguiente
        return if (valor1 != valor2 + 1) {
            false
        } else true
    }
}

//completar para mostrar la mano ganadora de acuerdo a la clasificacion de jugadas del poker
fun ganador(jugadas: MutableList<Array<Carta?>>): String? {
    //Imprime la cantidad de jugadas
    println("Cantidad de jugadas: " + jugadas.size)

    val manos = IntArray(jugadas.size)
      var mejor = 8
    for (indice1 in manos.indices) {
        if (manos[indice1] < mejor) {
            mejor = manos[indice1]
        }
    }

    val mejoresManos = ArrayList<Int>()
    for (indice1 in manos.indices) {
        if (mejor == manos[indice1]) {
            mejoresManos.add(indice1)
        }
94
    }
95 96 97 98 99 100 101 102 103 104 105

    if (mejoresManos.size == 1) {
        return "Jugada " + (mejoresManos[0] + 1)

    } else {

        val variasManos = ArrayList<Array<Carta>>()


    }
    return "jugador 1"
106
}
107

108

109
fun main(args: Array<String>) {
110
    /*val manos = arrayOf(
111 112
        "ah ad th tc 6s",
        "as 2s 3s 4s 5s"
113 114 115
    )
    for (mano in manos) {
        println("Jugada:  ${jugada(mano)}")
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    }*/

    val jugadas: MutableList<Array<Carta?>> = ArrayList()

    val jugada1 = arrayOfNulls<Carta>(5)
    jugada1[0] = Carta("AH")
    jugada1[1] = Carta("AD")
    jugada1[2] = Carta("TH")
    jugada1[3] = Carta("TC")
    jugada1[4] = Carta("6S")
    val jugada2 = arrayOfNulls<Carta>(5)
    jugada2[0] = Carta("AH")
    jugada2[1] = Carta("KD")
    jugada2[2] = Carta("QH")
    jugada2[3] = Carta("3C")
    jugada2[4] = Carta("3S")


    jugadas.add(jugada1)
    jugadas.add(jugada2)

   // val ganadores: String = mc.ganadores(jugadas)
    println("Jugada:  ${ganador(jugadas)}")
}