Creadas funciones para verificar yakus

master
Araozu 2020-10-20 21:46:33 -05:00
parent b13be85116
commit 658cce263a
7 changed files with 235 additions and 4 deletions

View File

@ -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
View 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
View 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
View 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
View 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
View 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
View 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
}