Arreglado error en yakus escalera para que solo permitan cartas del mismo valor.
This commit is contained in:
parent
cfebb922c3
commit
1621df991f
@ -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)
|
||||||
|
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user