Creadas funciones para verificar yakus
This commit is contained in:
parent
b13be85116
commit
658cce263a
@ -1,10 +1,10 @@
|
||||
package dev.araozu.juego
|
||||
|
||||
class ContenedorGrupos(
|
||||
private val tris: ArrayList<ArrayList<Carta>>,
|
||||
private val seqs: ArrayList<ArrayList<Carta>>,
|
||||
private val pares: ArrayList<ArrayList<Carta>>,
|
||||
private val huerfanos: ArrayList<Carta>
|
||||
val tris: ArrayList<ArrayList<Carta>>,
|
||||
val seqs: ArrayList<ArrayList<Carta>>,
|
||||
val pares: ArrayList<ArrayList<Carta>>,
|
||||
val huerfanos: ArrayList<Carta>
|
||||
) {
|
||||
|
||||
constructor () : this(
|
||||
|
120
src/juego/yaku/Yaku.kt
Normal file
120
src/juego/yaku/Yaku.kt
Normal file
@ -0,0 +1,120 @@
|
||||
package dev.araozu.juego.yaku
|
||||
|
||||
import dev.araozu.juego.ContenedorGrupos
|
||||
|
||||
enum class Yaku {
|
||||
// 15
|
||||
DragonesFull,
|
||||
Verde,
|
||||
// 10
|
||||
RealezaDragones,
|
||||
RealezaFull,
|
||||
// 5
|
||||
TripleTriplesCerrados,
|
||||
EscaleraFull,
|
||||
Exterior,
|
||||
// 4
|
||||
Escalera,
|
||||
TripleCuadruples,
|
||||
Negro,
|
||||
Rojo,
|
||||
SemiExterior,
|
||||
// 3
|
||||
ParUnico,
|
||||
Dragones,
|
||||
Interior,
|
||||
TripleTriples,
|
||||
TripleSecuenciaCerrada,
|
||||
Realeza,
|
||||
DobleSecuenciaPura
|
||||
}
|
||||
|
||||
fun Yaku.obtenerListaYakus(contenedorGrupos: ContenedorGrupos): ArrayList<Yaku> {
|
||||
val listaYakus = ArrayList<Yaku>()
|
||||
|
||||
// Invariante: 3 sequencias/triples/cuadruples y 1 par
|
||||
if (contenedorGrupos.seqs.size + contenedorGrupos.tris.size != 3 || contenedorGrupos.pares.size != 1) {
|
||||
throw Error("Error de invariante: Se intento verificar los yakus de un contenedor invalido.")
|
||||
}
|
||||
|
||||
// 15 puntos
|
||||
if (yakuDragonesFull(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.DragonesFull)
|
||||
return listaYakus
|
||||
}
|
||||
if (yakuVerde(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Verde)
|
||||
return listaYakus
|
||||
}
|
||||
|
||||
// 10 puntos
|
||||
if (yakuRealezaDragones(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.RealezaDragones)
|
||||
return listaYakus
|
||||
}
|
||||
if (yakuRealezaFull(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.RealezaFull)
|
||||
return listaYakus
|
||||
}
|
||||
|
||||
// 5 puntos
|
||||
if (yakuExterior(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Exterior)
|
||||
}
|
||||
|
||||
var verificarEscalera = true
|
||||
if (yakuEscaleraFull(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.EscaleraFull)
|
||||
verificarEscalera = false
|
||||
}
|
||||
|
||||
var verificarTripleTriples = true
|
||||
if (yakuTripleTriplesCerrados(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.TripleTriplesCerrados)
|
||||
listaYakus.add(Yaku.TripleTriples)
|
||||
verificarTripleTriples = false
|
||||
}
|
||||
|
||||
// 4 puntos
|
||||
if (yakuSemiExterior(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.SemiExterior)
|
||||
}
|
||||
if (yakuRojo(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Rojo)
|
||||
}
|
||||
if (yakuNegro(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Negro)
|
||||
}
|
||||
if (yakuTripleCuadruples(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.TripleCuadruples)
|
||||
}
|
||||
if (verificarEscalera && yakuEscalera(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Escalera)
|
||||
}
|
||||
|
||||
// 3 puntos
|
||||
if (yakuDobleSecuenciaPura(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.DobleSecuenciaPura)
|
||||
}
|
||||
if (yakuRealeza(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Realeza)
|
||||
}
|
||||
if (yakuTripleSecuenciaCerrada(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.TripleSecuenciaCerrada)
|
||||
}
|
||||
if (verificarTripleTriples && yakuTripleTriples(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.TripleTriples)
|
||||
}
|
||||
if (yakuInterior(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Interior)
|
||||
}
|
||||
if (yakuDragones(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.Dragones)
|
||||
}
|
||||
if (yakuParUnico(contenedorGrupos)) {
|
||||
listaYakus.add(Yaku.ParUnico)
|
||||
}
|
||||
|
||||
return listaYakus
|
||||
}
|
||||
|
13
src/juego/yaku/yaku10.kt
Normal file
13
src/juego/yaku/yaku10.kt
Normal file
@ -0,0 +1,13 @@
|
||||
package dev.araozu.juego.yaku
|
||||
|
||||
import dev.araozu.juego.ContenedorGrupos
|
||||
|
||||
internal fun yakuRealezaDragones(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuRealezaFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
13
src/juego/yaku/yaku15.kt
Normal file
13
src/juego/yaku/yaku15.kt
Normal file
@ -0,0 +1,13 @@
|
||||
package dev.araozu.juego.yaku
|
||||
|
||||
import dev.araozu.juego.ContenedorGrupos
|
||||
|
||||
internal fun yakuDragonesFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuVerde(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
38
src/juego/yaku/yaku3.kt
Normal file
38
src/juego/yaku/yaku3.kt
Normal file
@ -0,0 +1,38 @@
|
||||
package dev.araozu.juego.yaku
|
||||
|
||||
import dev.araozu.juego.ContenedorGrupos
|
||||
|
||||
internal fun yakuDobleSecuenciaPura(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuRealeza(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuTripleSecuenciaCerrada(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuTripleTriples(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuInterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuDragones(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuParUnico(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
29
src/juego/yaku/yaku4.kt
Normal file
29
src/juego/yaku/yaku4.kt
Normal file
@ -0,0 +1,29 @@
|
||||
package dev.araozu.juego.yaku
|
||||
|
||||
import dev.araozu.juego.ContenedorGrupos
|
||||
|
||||
internal fun yakuSemiExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuRojo(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuNegro(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuTripleCuadruples(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
18
src/juego/yaku/yaku5.kt
Normal file
18
src/juego/yaku/yaku5.kt
Normal file
@ -0,0 +1,18 @@
|
||||
package dev.araozu.juego.yaku
|
||||
|
||||
import dev.araozu.juego.ContenedorGrupos
|
||||
|
||||
internal fun yakuExterior(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
internal fun yakuTripleTriplesCerrados(contenedorGrupos: ContenedorGrupos): Boolean {
|
||||
|
||||
return false
|
||||
}
|
Loading…
Reference in New Issue
Block a user