Terminadas funciones en yaku4.kt
This commit is contained in:
parent
65a792015b
commit
c1a3286e1a
@ -24,6 +24,12 @@ sealed class Carta(val valor: Int) {
|
|||||||
fun esCartaVerde() =
|
fun esCartaVerde() =
|
||||||
valor == 128 || valor == 192 || valor == 224 || valor == 256
|
valor == 128 || valor == 192 || valor == 224 || valor == 256
|
||||||
|
|
||||||
|
fun esCartaRoja() =
|
||||||
|
(valor in 34..53) || valor == 96
|
||||||
|
|
||||||
|
fun esCartaNegra() =
|
||||||
|
(valor in 2..21) || valor == 64
|
||||||
|
|
||||||
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 || valor == 192 || valor == 224 || valor == 256
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ enum class Yaku {
|
|||||||
DobleSecuenciaPura
|
DobleSecuenciaPura
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Recibir como parametro si la mano esta abierta o cerrada y verificar los yakus aqui segun eso
|
||||||
fun Yaku.obtenerListaYakus(contenedorGrupos: ContenedorGrupos): ArrayList<Yaku> {
|
fun Yaku.obtenerListaYakus(contenedorGrupos: ContenedorGrupos): ArrayList<Yaku> {
|
||||||
val listaYakus = ArrayList<Yaku>()
|
val listaYakus = ArrayList<Yaku>()
|
||||||
|
|
||||||
@ -71,8 +72,9 @@ fun Yaku.obtenerListaYakus(contenedorGrupos: ContenedorGrupos): ArrayList<Yaku>
|
|||||||
verificarEscalera = false
|
verificarEscalera = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: Verificar la mano abierta
|
||||||
var verificarTripleTriples = true
|
var verificarTripleTriples = true
|
||||||
if (yakuTripleTriplesCerrados(contenedorGrupos)) {
|
if (yakuTripleTriples(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.TripleTriplesCerrados)
|
listaYakus.add(Yaku.TripleTriplesCerrados)
|
||||||
listaYakus.add(Yaku.TripleTriples)
|
listaYakus.add(Yaku.TripleTriples)
|
||||||
verificarTripleTriples = false
|
verificarTripleTriples = false
|
||||||
|
@ -17,10 +17,8 @@ internal fun yakuTripleSecuenciaCerrada(contenedorGrupos: ContenedorGrupos): Boo
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuTripleTriples(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuTripleTriples(contenedorGrupos: ContenedorGrupos) =
|
||||||
|
contenedorGrupos.tris.size == 3
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun yakuInterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuInterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
@ -1,29 +1,127 @@
|
|||||||
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
|
||||||
|
|
||||||
internal fun yakuSemiExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuSemiExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
return false
|
for (carrl in contenedorGrupos.seqs) {
|
||||||
|
var terminales = 0
|
||||||
|
for (c in carrl) {
|
||||||
|
if (c.esDragonORey() || (c is CartaNumero && c.esExterior())) {
|
||||||
|
terminales += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (terminales == 0) return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
var terminales = 0
|
||||||
|
for (c in carrl) {
|
||||||
|
if (c.esDragonORey() || (c is CartaNumero && c.esExterior())) {
|
||||||
|
terminales += 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (terminales == 0) return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.pares) {
|
||||||
|
for (c in carrl) {
|
||||||
|
var terminales = 0
|
||||||
|
if (c.esDragonORey() || (c is CartaNumero && c.esExterior())) {
|
||||||
|
terminales += 1
|
||||||
|
}
|
||||||
|
if (terminales == 0) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuRojo(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuRojo(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
return false
|
for (carrl in contenedorGrupos.seqs) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esCartaRoja()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esCartaRoja()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.pares) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esCartaRoja()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuNegro(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuNegro(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
return false
|
for (carrl in contenedorGrupos.seqs) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esCartaNegra()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esCartaNegra()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.pares) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esCartaNegra()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuTripleCuadruples(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuTripleCuadruples(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
return false
|
if (contenedorGrupos.tris.size != 3) return false
|
||||||
|
|
||||||
|
for (triple in contenedorGrupos.tris) {
|
||||||
|
if (triple.size != 4) return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
return false
|
if (contenedorGrupos.seqs.size != 3) return false
|
||||||
|
|
||||||
|
var primeraCarta = false
|
||||||
|
var numeroActual = 0
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (c !is CartaNumero) return false
|
||||||
|
|
||||||
|
if (!primeraCarta) {
|
||||||
|
numeroActual = when (c.numero) {
|
||||||
|
1 -> 2
|
||||||
|
2 -> 3
|
||||||
|
else -> return false
|
||||||
|
}
|
||||||
|
|
||||||
|
primeraCarta = true
|
||||||
|
} else {
|
||||||
|
if (c.numero != numeroActual) return false
|
||||||
|
|
||||||
|
numeroActual += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,8 +52,6 @@ internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuTripleTriplesCerrados(contenedorGrupos: ContenedorGrupos) =
|
|
||||||
contenedorGrupos.tris.size == 3
|
|
||||||
|
Loading…
Reference in New Issue
Block a user