diff --git a/src/juego/Carta.kt b/src/juego/Carta.kt index fa72c22..6ec6fb3 100644 --- a/src/juego/Carta.kt +++ b/src/juego/Carta.kt @@ -35,7 +35,7 @@ sealed class Carta(val valor: Int) { } -sealed class CartaNumero(valor: Int, val numero: Int = (valor shl 27) ushr 28) : Carta(valor) { +sealed class CartaNumero(valor: Int, val color: String, val numero: Int = (valor shl 27) ushr 28) : Carta(valor) { companion object { fun separarCartasRojo(valores: ArrayList): Pair, ArrayList> { @@ -91,8 +91,8 @@ sealed class CartaNumero(valor: Int, val numero: Int = (valor shl 27) ushr 28) : } -class CartaNumeroNegro(valor: Int) : CartaNumero(valor) -class CartaNumeroRojo(valor: Int) : CartaNumero(valor) +class CartaNumeroNegro(valor: Int) : CartaNumero(valor, "negro") +class CartaNumeroRojo(valor: Int) : CartaNumero(valor, "rojo") sealed class CartaDragon(valor: Int) : Carta(valor) diff --git a/src/juego/yaku/yaku4.kt b/src/juego/yaku/yaku4.kt index cb5f59b..f5058e4 100644 --- a/src/juego/yaku/yaku4.kt +++ b/src/juego/yaku/yaku4.kt @@ -101,11 +101,13 @@ internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean { var primeraCarta = false var numeroActual = 0 + var colorCarta = "" for (carrl in contenedorGrupos.tris) { for (c in carrl) { if (c !is CartaNumero) return false if (!primeraCarta) { + colorCarta = c.color numeroActual = when (c.numero) { 1 -> 2 2 -> 3 @@ -115,6 +117,7 @@ internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean { primeraCarta = true } else { if (c.numero != numeroActual) return false + if (c.color != colorCarta) return false numeroActual += 1 } diff --git a/src/juego/yaku/yaku5.kt b/src/juego/yaku/yaku5.kt index 14ebed1..f222837 100644 --- a/src/juego/yaku/yaku5.kt +++ b/src/juego/yaku/yaku5.kt @@ -30,10 +30,12 @@ internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean { if (contenedorGrupos.seqs.size != 3) return false var numeroInicialSemiEscalera = 0 + var colorCarta = "" for (carrl in contenedorGrupos.pares) { for (c in carrl) { if (c !is CartaNumero) return false + colorCarta = c.color numeroInicialSemiEscalera = when (c.numero) { 1 -> 2 10 -> 1 @@ -47,6 +49,7 @@ internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean { if (c !is CartaNumero) return false if (c.numero != numeroInicialSemiEscalera) return false + if (c.color != colorCarta) return false numeroInicialSemiEscalera += 1 }