Modificar y corregir yaku
This commit is contained in:
parent
1ddb05a55d
commit
64c802ad85
@ -40,4 +40,5 @@ dependencies {
|
|||||||
implementation "io.ktor:ktor-gson:$ktor_version"
|
implementation "io.ktor:ktor-gson:$ktor_version"
|
||||||
implementation 'com.google.code.gson:gson:2.8.5'
|
implementation 'com.google.code.gson:gson:2.8.5'
|
||||||
testImplementation "io.ktor:ktor-server-tests:$ktor_version"
|
testImplementation "io.ktor:ktor-server-tests:$ktor_version"
|
||||||
|
testImplementation 'io.kotest:kotest-runner-junit5:$version'
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,7 @@ class ContenedorGrupos(
|
|||||||
arrayListOf<ArrayList<Carta>>(),
|
arrayListOf<ArrayList<Carta>>(),
|
||||||
arrayListOf<ArrayList<Carta>>(),
|
arrayListOf<ArrayList<Carta>>(),
|
||||||
arrayListOf<Carta>()
|
arrayListOf<Carta>()
|
||||||
) {
|
)
|
||||||
}
|
|
||||||
|
|
||||||
fun agregarDesdeContenedor(c: ContenedorGrupos) {
|
fun agregarDesdeContenedor(c: ContenedorGrupos) {
|
||||||
tris.addAll(c.tris)
|
tris.addAll(c.tris)
|
||||||
|
@ -3,7 +3,7 @@ package dev.araozu.juego
|
|||||||
import dev.araozu.juego.yaku.Yaku
|
import dev.araozu.juego.yaku.Yaku
|
||||||
import dev.araozu.juego.yaku.obtenerListaYakus
|
import dev.araozu.juego.yaku.obtenerListaYakus
|
||||||
|
|
||||||
class OportunidadWin(override val cartaDescartada: Int, val yaku: ArrayList<Yaku>) : Oportunidad {
|
class OportunidadRon(override val cartaDescartada: Int, val yaku: ArrayList<Yaku>) : Oportunidad {
|
||||||
|
|
||||||
override val nombreOportunidad = "Win"
|
override val nombreOportunidad = "Win"
|
||||||
|
|
||||||
@ -148,7 +148,11 @@ class OportunidadWin(override val cartaDescartada: Int, val yaku: ArrayList<Yaku
|
|||||||
return if (valorCont1 > valorCont2) contenedor1 else contenedor2
|
return if (valorCont1 > valorCont2) contenedor1 else contenedor2
|
||||||
}
|
}
|
||||||
|
|
||||||
fun verificar(valorCarta: Int, cartasMano: ArrayList<Int>, gruposAbiertos: ArrayList<ArrayList<Int>>): OportunidadWin? {
|
fun verificar(
|
||||||
|
valorCarta: Int,
|
||||||
|
cartasMano: ArrayList<Int>,
|
||||||
|
gruposAbiertos: ArrayList<ArrayList<Int>> = arrayListOf()
|
||||||
|
): OportunidadRon? {
|
||||||
val narrl = ArrayList<Int>(cartasMano.size + 1)
|
val narrl = ArrayList<Int>(cartasMano.size + 1)
|
||||||
narrl.addAll(cartasMano)
|
narrl.addAll(cartasMano)
|
||||||
narrl.add(valorCarta)
|
narrl.add(valorCarta)
|
||||||
@ -191,7 +195,7 @@ class OportunidadWin(override val cartaDescartada: Int, val yaku: ArrayList<Yaku
|
|||||||
// Obtener yaku
|
// Obtener yaku
|
||||||
val yaku = obtenerListaYakus(contenedorGrupos, esManoAbierta)
|
val yaku = obtenerListaYakus(contenedorGrupos, esManoAbierta)
|
||||||
|
|
||||||
return if (yaku.isNotEmpty()) OportunidadWin(valorCarta, yaku) else null
|
return if (yaku.isNotEmpty()) OportunidadRon(valorCarta, yaku) else null
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -3,34 +3,38 @@ package dev.araozu.juego.yaku
|
|||||||
import dev.araozu.juego.ContenedorGrupos
|
import dev.araozu.juego.ContenedorGrupos
|
||||||
|
|
||||||
enum class Yaku {
|
enum class Yaku {
|
||||||
// 15
|
// 10
|
||||||
DragonesFull,
|
DragonesFull,
|
||||||
Verde,
|
Verde,
|
||||||
|
|
||||||
// 10
|
// 7
|
||||||
RealezaDragones,
|
RealezaDragones,
|
||||||
RealezaFull,
|
RealezaFull,
|
||||||
|
EscaleraPerfecta,
|
||||||
|
A10,
|
||||||
|
|
||||||
// 5
|
// 5
|
||||||
TripleTriplesCerrados,
|
|
||||||
EscaleraFull,
|
EscaleraFull,
|
||||||
|
|
||||||
|
// 3
|
||||||
|
TripleTriplesCerrados,
|
||||||
Exterior,
|
Exterior,
|
||||||
|
|
||||||
// 4
|
// 2
|
||||||
Escalera,
|
Escalera,
|
||||||
TripleCuadruples,
|
|
||||||
Negro,
|
Negro,
|
||||||
Rojo,
|
Rojo,
|
||||||
SemiExterior,
|
SemiExterior,
|
||||||
|
DobleSecuenciaPura,
|
||||||
|
|
||||||
// 3
|
// 1
|
||||||
ParUnico,
|
|
||||||
Dragones,
|
Dragones,
|
||||||
Interior,
|
Interior,
|
||||||
TripleTriples,
|
TripleTriples,
|
||||||
TripleSecuenciaCerrada,
|
|
||||||
Realeza,
|
Realeza,
|
||||||
DobleSecuenciaPura
|
Variedad,
|
||||||
|
DobleSecuencia,
|
||||||
|
ManoCompletamenteCerrada
|
||||||
}
|
}
|
||||||
|
|
||||||
fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean): ArrayList<Yaku> {
|
fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean): ArrayList<Yaku> {
|
||||||
@ -45,7 +49,7 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
|
|||||||
return arrayListOf()
|
return arrayListOf()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 15 puntos
|
// 10 puntos
|
||||||
if (yakuDragonesFull(contenedorGrupos)) {
|
if (yakuDragonesFull(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.DragonesFull)
|
listaYakus.add(Yaku.DragonesFull)
|
||||||
return listaYakus
|
return listaYakus
|
||||||
@ -55,7 +59,7 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
|
|||||||
return listaYakus
|
return listaYakus
|
||||||
}
|
}
|
||||||
|
|
||||||
// 10 puntos
|
// 7 puntos
|
||||||
if (yakuRealezaDragones(contenedorGrupos)) {
|
if (yakuRealezaDragones(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.RealezaDragones)
|
listaYakus.add(Yaku.RealezaDragones)
|
||||||
return listaYakus
|
return listaYakus
|
||||||
@ -66,6 +70,9 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 5 puntos
|
// 5 puntos
|
||||||
|
// TODO
|
||||||
|
|
||||||
|
// 3 puntos
|
||||||
if (yakuExterior(contenedorGrupos)) {
|
if (yakuExterior(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.Exterior)
|
listaYakus.add(Yaku.Exterior)
|
||||||
}
|
}
|
||||||
@ -84,7 +91,7 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
|
|||||||
verificarTripleTriples = false
|
verificarTripleTriples = false
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4 puntos
|
// 2 puntos
|
||||||
if (yakuSemiExterior(contenedorGrupos)) {
|
if (yakuSemiExterior(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.SemiExterior)
|
listaYakus.add(Yaku.SemiExterior)
|
||||||
}
|
}
|
||||||
@ -94,24 +101,18 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
|
|||||||
if (yakuNegro(contenedorGrupos)) {
|
if (yakuNegro(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.Negro)
|
listaYakus.add(Yaku.Negro)
|
||||||
}
|
}
|
||||||
if (yakuTripleCuadruples(contenedorGrupos)) {
|
|
||||||
listaYakus.add(Yaku.TripleCuadruples)
|
|
||||||
}
|
|
||||||
if (verificarEscalera && yakuEscalera(contenedorGrupos)) {
|
if (verificarEscalera && yakuEscalera(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.Escalera)
|
listaYakus.add(Yaku.Escalera)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3 puntos
|
// 1 punto
|
||||||
if (yakuDobleSecuenciaPura(contenedorGrupos)) {
|
if (yakuDobleSecuencia(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.DobleSecuenciaPura)
|
listaYakus.add(Yaku.DobleSecuencia)
|
||||||
}
|
}
|
||||||
val cantidad = yakuRealeza(contenedorGrupos)
|
val cantidad = yakuRealeza(contenedorGrupos)
|
||||||
if (cantidad > 0) {
|
if (cantidad > 0) {
|
||||||
listaYakus.add(Yaku.Realeza)
|
listaYakus.add(Yaku.Realeza)
|
||||||
}
|
}
|
||||||
if (!esManoAbierta && yakuTripleSecuenciaCerrada(contenedorGrupos)) {
|
|
||||||
listaYakus.add(Yaku.TripleSecuenciaCerrada)
|
|
||||||
}
|
|
||||||
if (verificarTripleTriples && yakuTripleTriples(contenedorGrupos)) {
|
if (verificarTripleTriples && yakuTripleTriples(contenedorGrupos)) {
|
||||||
listaYakus.add(Yaku.TripleTriples)
|
listaYakus.add(Yaku.TripleTriples)
|
||||||
}
|
}
|
||||||
@ -122,9 +123,6 @@ fun obtenerListaYakus(contenedorGrupos: ContenedorGrupos, esManoAbierta: Boolean
|
|||||||
if (cantidadDragon > 0) {
|
if (cantidadDragon > 0) {
|
||||||
listaYakus.add(Yaku.Dragones)
|
listaYakus.add(Yaku.Dragones)
|
||||||
}
|
}
|
||||||
if (yakuParUnico(contenedorGrupos)) {
|
|
||||||
listaYakus.add(Yaku.ParUnico)
|
|
||||||
}
|
|
||||||
|
|
||||||
return listaYakus
|
return listaYakus
|
||||||
}
|
}
|
||||||
|
61
src/juego/yaku/yaku1.kt
Normal file
61
src/juego/yaku/yaku1.kt
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
package dev.araozu.juego.yaku
|
||||||
|
|
||||||
|
import dev.araozu.juego.CartaNumero
|
||||||
|
import dev.araozu.juego.ContenedorGrupos
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
internal fun yakuDobleSecuencia(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun yakuVariedad(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun yakuRealeza(contenedorGrupos: ContenedorGrupos): Int {
|
||||||
|
var cantidadRealeza = 0
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
val cartaTri = carrl[0]
|
||||||
|
if (cartaTri.esRey()) cantidadRealeza++
|
||||||
|
}
|
||||||
|
|
||||||
|
return cantidadRealeza
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun yakuTripleTriples(contenedorGrupos: ContenedorGrupos) =
|
||||||
|
contenedorGrupos.tris.size == 3
|
||||||
|
|
||||||
|
internal fun yakuInterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.seqs) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (c !is CartaNumero) return false
|
||||||
|
if (c.esExterior()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (c !is CartaNumero) return false
|
||||||
|
if (c.esExterior()) 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
|
||||||
|
}
|
||||||
|
|
@ -1,36 +1,42 @@
|
|||||||
package dev.araozu.juego.yaku
|
package dev.araozu.juego.yaku
|
||||||
|
|
||||||
import dev.araozu.juego.CartaRealeza
|
import dev.araozu.juego.CartaDragon
|
||||||
import dev.araozu.juego.ContenedorGrupos
|
import dev.araozu.juego.ContenedorGrupos
|
||||||
|
|
||||||
internal fun yakuRealezaDragones(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuDragonesFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
if (contenedorGrupos.tris.size != 3) return false
|
if (contenedorGrupos.tris.size != 3) return false
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.tris) {
|
for (carrl in contenedorGrupos.tris) {
|
||||||
for (c in carrl) {
|
for (c in carrl) {
|
||||||
if (!c.esDragonORey()) return false
|
if (c !is CartaDragon) return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.pares) {
|
for (carrl in contenedorGrupos.pares) {
|
||||||
for (c in carrl) {
|
for (c in carrl) {
|
||||||
if (!c.esDragonORey()) return false
|
if (c !is CartaDragon) return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuRealezaFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuVerde(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
if (contenedorGrupos.tris.size != 3) return false
|
if (contenedorGrupos.tris.size != 3) return false
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.tris) {
|
for (carrl in contenedorGrupos.tris) {
|
||||||
for (c in carrl) {
|
for (c in carrl) {
|
||||||
if (c !is CartaRealeza) return false
|
if (!c.esCartaVerde()) return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
for (carrl in contenedorGrupos.pares) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esCartaVerde()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
package dev.araozu.juego.yaku
|
|
||||||
|
|
||||||
import dev.araozu.juego.CartaDragon
|
|
||||||
import dev.araozu.juego.ContenedorGrupos
|
|
||||||
|
|
||||||
internal fun yakuDragonesFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
|
||||||
|
|
||||||
if (contenedorGrupos.tris.size != 3) return false
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.tris) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (c !is CartaDragon) return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.pares) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (c !is CartaDragon) return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun yakuVerde(contenedorGrupos: ContenedorGrupos): Boolean {
|
|
||||||
|
|
||||||
if (contenedorGrupos.tris.size != 3) return false
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.tris) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (!c.esCartaVerde()) return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.pares) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (!c.esCartaVerde()) return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
@ -3,6 +3,11 @@ package dev.araozu.juego.yaku
|
|||||||
import dev.araozu.juego.CartaNumero
|
import dev.araozu.juego.CartaNumero
|
||||||
import dev.araozu.juego.ContenedorGrupos
|
import dev.araozu.juego.ContenedorGrupos
|
||||||
|
|
||||||
|
internal fun yakuDobleSecuenciaPura(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
internal fun yakuSemiExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuSemiExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.seqs) {
|
for (carrl in contenedorGrupos.seqs) {
|
||||||
@ -84,17 +89,6 @@ internal fun yakuNegro(contenedorGrupos: ContenedorGrupos): Boolean {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuTripleCuadruples(contenedorGrupos: ContenedorGrupos): Boolean {
|
|
||||||
|
|
||||||
if (contenedorGrupos.tris.size != 3) return false
|
|
||||||
|
|
||||||
for (triple in contenedorGrupos.tris) {
|
|
||||||
if (triple.size != 4) return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Las secuencias pueden no estar en orden
|
// TODO: Las secuencias pueden no estar en orden
|
||||||
internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
@ -3,66 +3,29 @@ package dev.araozu.juego.yaku
|
|||||||
import dev.araozu.juego.CartaNumero
|
import dev.araozu.juego.CartaNumero
|
||||||
import dev.araozu.juego.ContenedorGrupos
|
import dev.araozu.juego.ContenedorGrupos
|
||||||
|
|
||||||
// TODO
|
internal fun yakuExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
internal fun yakuDobleSecuenciaPura(contenedorGrupos: ContenedorGrupos): Boolean {
|
|
||||||
|
|
||||||
|
if (contenedorGrupos.tris.size != 3) return false
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esDragonORey() || c !is CartaNumero || !c.esExterior())
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuRealeza(contenedorGrupos: ContenedorGrupos): Int {
|
|
||||||
var cantidadRealeza = 0
|
|
||||||
for (carrl in contenedorGrupos.tris) {
|
|
||||||
val cartaTri = carrl[0]
|
|
||||||
if (cartaTri.esRey()) cantidadRealeza++
|
|
||||||
}
|
|
||||||
|
|
||||||
return cantidadRealeza
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun yakuTripleSecuenciaCerrada(contenedorGrupos: ContenedorGrupos) =
|
|
||||||
contenedorGrupos.tris.size == 3
|
|
||||||
|
|
||||||
internal fun yakuTripleTriples(contenedorGrupos: ContenedorGrupos) =
|
|
||||||
contenedorGrupos.tris.size == 3
|
|
||||||
|
|
||||||
internal fun yakuInterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.seqs) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (c !is CartaNumero) return false
|
|
||||||
if (c.esExterior()) return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.tris) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (c !is CartaNumero) return false
|
|
||||||
if (c.esExterior()) return false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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.esDragonORey() || c !is CartaNumero || !c.esExterior())
|
||||||
if (c.esExterior()) return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO
|
internal fun yakuTripleTriplesCerrados(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
internal fun yakuDragones(contenedorGrupos: ContenedorGrupos): Int {
|
|
||||||
|
|
||||||
return 0
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun yakuParUnico(contenedorGrupos: ContenedorGrupos): Boolean {
|
|
||||||
val par = contenedorGrupos.pares[0]
|
|
||||||
val c1 = par[0]
|
|
||||||
val c2 = par[1]
|
|
||||||
|
|
||||||
if (c1 !is CartaNumero || c2 !is CartaNumero) return false
|
|
||||||
|
|
||||||
return c1.valor == c2.valor
|
|
||||||
}
|
|
||||||
|
@ -3,26 +3,6 @@ package dev.araozu.juego.yaku
|
|||||||
import dev.araozu.juego.CartaNumero
|
import dev.araozu.juego.CartaNumero
|
||||||
import dev.araozu.juego.ContenedorGrupos
|
import dev.araozu.juego.ContenedorGrupos
|
||||||
|
|
||||||
internal fun yakuExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
|
||||||
|
|
||||||
if (contenedorGrupos.tris.size != 3) return false
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.tris) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (!c.esDragonORey() || c !is CartaNumero || !c.esExterior())
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (carrl in contenedorGrupos.pares) {
|
|
||||||
for (c in carrl) {
|
|
||||||
if (!c.esDragonORey() || c !is CartaNumero || !c.esExterior())
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Las secuencias pueden no estar en orden
|
// TODO: Las secuencias pueden no estar en orden
|
||||||
internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
@ -57,4 +37,3 @@ internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
|||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
46
src/juego/yaku/yaku7.kt
Normal file
46
src/juego/yaku/yaku7.kt
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package dev.araozu.juego.yaku
|
||||||
|
|
||||||
|
import dev.araozu.juego.CartaRealeza
|
||||||
|
import dev.araozu.juego.ContenedorGrupos
|
||||||
|
|
||||||
|
internal fun yakuA10(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun yakuEscaleraPerfecta(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun yakuRealezaDragones(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
if (contenedorGrupos.tris.size != 3) return false
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esDragonORey()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.pares) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (!c.esDragonORey()) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
internal fun yakuRealezaFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||||
|
|
||||||
|
if (contenedorGrupos.tris.size != 3) return false
|
||||||
|
|
||||||
|
for (carrl in contenedorGrupos.tris) {
|
||||||
|
for (c in carrl) {
|
||||||
|
if (c !is CartaRealeza) return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user