Ahora el yaku abierto inicia con 1 carta revelada.

master
Araozu 2020-10-23 07:01:22 -05:00
parent d24409721e
commit 110a8c14d6
6 changed files with 27 additions and 11 deletions

View File

@ -1,7 +1,5 @@
package dev.araozu package dev.araozu
import io.ktor.http.cio.websocket.*
object GestorUsuarios { object GestorUsuarios {
private val usuarios: HashMap<String, String> = HashMap() private val usuarios: HashMap<String, String> = HashMap()

View File

@ -45,6 +45,12 @@ fun Routing.juegows() {
datos.combinacion datos.combinacion
) )
} }
"llamar_ron" -> {
TODO()
}
"llamar_tsumo" -> {
TODO()
}
} }
} }
} }

View File

@ -3,8 +3,8 @@ package dev.araozu.juego
class GestorDora(private val cartas: ArrayList<Int>) { class GestorDora(private val cartas: ArrayList<Int>) {
private val doraCerrado = arrayListOf(cartas[0]) private val doraCerrado = arrayListOf(cartas[0])
private val doraAbierto = arrayListOf<Int>() private val doraAbierto = arrayListOf(cartas[5])
var turnosSigDora = 20 private var turnosSigDora = 20
var turnosRestantesDoraCerrado = turnosSigDora // 20 15 10 5 var turnosRestantesDoraCerrado = turnosSigDora // 20 15 10 5
private set private set
@ -30,7 +30,7 @@ class GestorDora(private val cartas: ArrayList<Int>) {
} }
fun actualizarDoraAbierto() { fun actualizarDoraAbierto() {
if (doraCerrado.size >= 5) return if (doraAbierto.size >= 5) return
doraAbierto.add(cartas[5 + doraAbierto.size]) doraAbierto.add(cartas[5 + doraAbierto.size])
} }

View File

@ -110,12 +110,20 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
} }
private fun cambiarTurnoSigJugadorConsecutivo() { private fun cambiarTurnoSigJugadorConsecutivo() {
// Extraer, dar sig carta al sig jugador, cambiar turno // Cambiar turno al sig jugador consecutivo
turnoActual = (turnoActual + 1) % 4 turnoActual = (turnoActual + 1) % 4
val idSigUsuario = ordenJugadores[turnoActual] val idSigUsuario = ordenJugadores[turnoActual]
// Extraer sig carta. TODO: Verificar que no quedan cartas y establecer empate
val sigCarta = cartas[posCartaActual] val sigCarta = cartas[posCartaActual]
posCartaActual++ posCartaActual++
// Asignar nueva carta
manos[idSigUsuario]!!.sigCarta = sigCarta manos[idSigUsuario]!!.sigCarta = sigCarta
// TODO: Verificar tsumo
} }
private fun esUsuarioIzq(idUsuarioIzq: String, idUsuario1: String): Boolean { private fun esUsuarioIzq(idUsuarioIzq: String, idUsuario1: String): Boolean {
@ -173,7 +181,7 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
mano.oportunidades.add(oportunidadTri) mano.oportunidades.add(oportunidadTri)
} }
// Oportunidades win // Oportunidades win (ron)
val oportunidadWin = OportunidadWin.verificar(carta, mano.cartas, mano.cartasReveladas) val oportunidadWin = OportunidadWin.verificar(carta, mano.cartas, mano.cartasReveladas)
if (oportunidadWin != null) { if (oportunidadWin != null) {
hayOportunidades = true hayOportunidades = true
@ -214,11 +222,14 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
// Si no quedan oportunidades cambiar el turno al sig jugador // Si no quedan oportunidades cambiar el turno al sig jugador
if (!aunHayOportunidades) { if (!aunHayOportunidades) {
cambiarTurnoSigJugadorConsecutivo() cambiarTurnoSigJugadorConsecutivo()
}
// Actualizar dora
gestorDora!!.actualizarDoraCerrado()
// Enviar los nuevos datos // Enviar los nuevos datos
enviarDatosATodos() enviarDatosATodos()
} }
}
private fun cambiarTurnoSegunIdUsuario(idUsuario: String) { private fun cambiarTurnoSegunIdUsuario(idUsuario: String) {
for ((posJugador, i) in ordenJugadores.withIndex()) { for ((posJugador, i) in ordenJugadores.withIndex()) {

View File

@ -95,6 +95,7 @@ internal fun yakuTripleCuadruples(contenedorGrupos: ContenedorGrupos): Boolean {
return true return true
} }
// TODO: Las secuencias pueden no estar en orden
internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean { internal fun yakuEscalera(contenedorGrupos: ContenedorGrupos): Boolean {
if (contenedorGrupos.seqs.size != 3) return false if (contenedorGrupos.seqs.size != 3) return false

View File

@ -3,7 +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
// TODO: Cambiar descripcion en la pagina web
internal fun yakuExterior(contenedorGrupos: ContenedorGrupos): Boolean { internal fun yakuExterior(contenedorGrupos: ContenedorGrupos): Boolean {
if (contenedorGrupos.tris.size != 3) return false if (contenedorGrupos.tris.size != 3) return false
@ -25,6 +24,7 @@ internal fun yakuExterior(contenedorGrupos: ContenedorGrupos): Boolean {
return true return true
} }
// TODO: Las secuencias pueden no estar en orden
internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean { internal fun yakuEscaleraFull(contenedorGrupos: ContenedorGrupos): Boolean {
if (contenedorGrupos.seqs.size != 3) return false if (contenedorGrupos.seqs.size != 3) return false