Agregados varios yaku3. Arreglado error en yaku escalera

This commit is contained in:
Araozu 2020-10-21 19:02:56 -05:00
parent 1621df991f
commit d24409721e
4 changed files with 51 additions and 15 deletions

View File

@ -30,8 +30,10 @@ sealed class Carta(val valor: Int) {
fun esCartaNegra() = fun esCartaNegra() =
(valor in 2..21) || valor == 64 (valor in 2..21) || valor == 64
fun esRey() = valor == 192 || valor == 224 || valor == 256
fun esDragonORey() = fun esDragonORey() =
valor == 64 || valor == 96 || valor == 128 || valor == 160 || valor == 192 || valor == 224 || valor == 256 valor == 64 || valor == 96 || valor == 128 || valor == 160 || esRey()
} }

View File

@ -104,10 +104,11 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
if (yakuDobleSecuenciaPura(contenedorGrupos)) { if (yakuDobleSecuenciaPura(contenedorGrupos)) {
listaYakus.add(Yaku.DobleSecuenciaPura) listaYakus.add(Yaku.DobleSecuenciaPura)
} }
if (yakuRealeza(contenedorGrupos)) { val cantidad = yakuRealeza(contenedorGrupos)
if (cantidad > 0) {
listaYakus.add(Yaku.Realeza) listaYakus.add(Yaku.Realeza)
} }
if (yakuTripleSecuenciaCerrada(contenedorGrupos)) { if (!esManoAbierta && yakuTripleSecuenciaCerrada(contenedorGrupos)) {
listaYakus.add(Yaku.TripleSecuenciaCerrada) listaYakus.add(Yaku.TripleSecuenciaCerrada)
} }
if (verificarTripleTriples && yakuTripleTriples(contenedorGrupos)) { if (verificarTripleTriples && yakuTripleTriples(contenedorGrupos)) {
@ -116,7 +117,8 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
if (yakuInterior(contenedorGrupos)) { if (yakuInterior(contenedorGrupos)) {
listaYakus.add(Yaku.Interior) listaYakus.add(Yaku.Interior)
} }
if (yakuDragones(contenedorGrupos)) { val cantidadDragon = yakuDragones(contenedorGrupos)
if (cantidadDragon > 0) {
listaYakus.add(Yaku.Dragones) listaYakus.add(Yaku.Dragones)
} }
if (yakuParUnico(contenedorGrupos)) { if (yakuParUnico(contenedorGrupos)) {

View File

@ -1,36 +1,68 @@
package dev.araozu.juego.yaku package dev.araozu.juego.yaku
import dev.araozu.juego.CartaNumero
import dev.araozu.juego.ContenedorGrupos import dev.araozu.juego.ContenedorGrupos
// TODO
internal fun yakuDobleSecuenciaPura(contenedorGrupos: ContenedorGrupos): Boolean { internal fun yakuDobleSecuenciaPura(contenedorGrupos: ContenedorGrupos): Boolean {
return false return false
} }
internal fun yakuRealeza(contenedorGrupos: ContenedorGrupos): Boolean { internal fun yakuRealeza(contenedorGrupos: ContenedorGrupos): Int {
var cantidadRealeza = 0
return false for (carrl in contenedorGrupos.tris) {
val cartaTri = carrl[0]
if (cartaTri.esRey()) cantidadRealeza++
} }
internal fun yakuTripleSecuenciaCerrada(contenedorGrupos: ContenedorGrupos): Boolean { return cantidadRealeza
return false
} }
internal fun yakuTripleSecuenciaCerrada(contenedorGrupos: ContenedorGrupos) =
contenedorGrupos.tris.size == 3
internal fun yakuTripleTriples(contenedorGrupos: ContenedorGrupos) = internal fun yakuTripleTriples(contenedorGrupos: ContenedorGrupos) =
contenedorGrupos.tris.size == 3 contenedorGrupos.tris.size == 3
internal fun yakuInterior(contenedorGrupos: ContenedorGrupos): Boolean { internal fun yakuInterior(contenedorGrupos: ContenedorGrupos): Boolean {
return false for (carrl in contenedorGrupos.seqs) {
for (c in carrl) {
if (c !is CartaNumero) return false
if (c.esExterior()) return false
}
} }
internal fun yakuDragones(contenedorGrupos: ContenedorGrupos): Boolean { for (carrl in contenedorGrupos.tris) {
for (c in carrl) {
if (c !is CartaNumero) return false
if (c.esExterior()) return false
}
}
return false for (carrl in contenedorGrupos.pares) {
for (c in carrl) {
if (c !is CartaNumero) return false
if (c.esExterior()) return false
}
}
return true
}
// TODO
internal fun yakuDragones(contenedorGrupos: ContenedorGrupos): Int {
return 0
} }
internal fun yakuParUnico(contenedorGrupos: ContenedorGrupos): Boolean { internal fun yakuParUnico(contenedorGrupos: ContenedorGrupos): Boolean {
val par = contenedorGrupos.pares[0]
val c1 = par[0]
val c2 = par[1]
return false if (c1 !is CartaNumero || c2 !is CartaNumero) return false
return c1.valor == c2.valor
} }

View File

@ -102,7 +102,7 @@ internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
var primeraCarta = false var primeraCarta = false
var numeroActual = 0 var numeroActual = 0
var colorCarta = "" var colorCarta = ""
for (carrl in contenedorGrupos.tris) { for (carrl in contenedorGrupos.seqs) {
for (c in carrl) { for (c in carrl) {
if (c !is CartaNumero) return false if (c !is CartaNumero) return false