Arreglado error en yakus escalera para que solo permitan cartas del mismo valor.

master
Araozu 2020-10-21 11:57:28 -05:00
parent cfebb922c3
commit 1621df991f
3 changed files with 9 additions and 3 deletions

View File

@ -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 { companion object {
fun separarCartasRojo(valores: ArrayList<Int>): Pair<ArrayList<CartaNumeroRojo>, ArrayList<Int>> { fun separarCartasRojo(valores: ArrayList<Int>): Pair<ArrayList<CartaNumeroRojo>, ArrayList<Int>> {
@ -91,8 +91,8 @@ sealed class CartaNumero(valor: Int, val numero: Int = (valor shl 27) ushr 28) :
} }
class CartaNumeroNegro(valor: Int) : CartaNumero(valor) class CartaNumeroNegro(valor: Int) : CartaNumero(valor, "negro")
class CartaNumeroRojo(valor: Int) : CartaNumero(valor) class CartaNumeroRojo(valor: Int) : CartaNumero(valor, "rojo")
sealed class CartaDragon(valor: Int) : Carta(valor) sealed class CartaDragon(valor: Int) : Carta(valor)

View File

@ -101,11 +101,13 @@ internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
var primeraCarta = false var primeraCarta = false
var numeroActual = 0 var numeroActual = 0
var colorCarta = ""
for (carrl in contenedorGrupos.tris) { for (carrl in contenedorGrupos.tris) {
for (c in carrl) { for (c in carrl) {
if (c !is CartaNumero) return false if (c !is CartaNumero) return false
if (!primeraCarta) { if (!primeraCarta) {
colorCarta = c.color
numeroActual = when (c.numero) { numeroActual = when (c.numero) {
1 -> 2 1 -> 2
2 -> 3 2 -> 3
@ -115,6 +117,7 @@ internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
primeraCarta = true primeraCarta = true
} else { } else {
if (c.numero != numeroActual) return false if (c.numero != numeroActual) return false
if (c.color != colorCarta) return false
numeroActual += 1 numeroActual += 1
} }

View File

@ -30,10 +30,12 @@ internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
if (contenedorGrupos.seqs.size != 3) return false if (contenedorGrupos.seqs.size != 3) return false
var numeroInicialSemiEscalera = 0 var numeroInicialSemiEscalera = 0
var colorCarta = ""
for (carrl in contenedorGrupos.pares) { for (carrl in contenedorGrupos.pares) {
for (c in carrl) { for (c in carrl) {
if (c !is CartaNumero) return false if (c !is CartaNumero) return false
colorCarta = c.color
numeroInicialSemiEscalera = when (c.numero) { numeroInicialSemiEscalera = when (c.numero) {
1 -> 2 1 -> 2
10 -> 1 10 -> 1
@ -47,6 +49,7 @@ internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
if (c !is CartaNumero) return false if (c !is CartaNumero) return false
if (c.numero != numeroInicialSemiEscalera) return false if (c.numero != numeroInicialSemiEscalera) return false
if (c.color != colorCarta) return false
numeroInicialSemiEscalera += 1 numeroInicialSemiEscalera += 1
} }