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
import io.ktor.http.cio.websocket.*
object GestorUsuarios {
private val usuarios: HashMap<String, String> = HashMap()

View File

@ -45,6 +45,12 @@ fun Routing.juegows() {
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>) {
private val doraCerrado = arrayListOf(cartas[0])
private val doraAbierto = arrayListOf<Int>()
var turnosSigDora = 20
private val doraAbierto = arrayListOf(cartas[5])
private var turnosSigDora = 20
var turnosRestantesDoraCerrado = turnosSigDora // 20 15 10 5
private set
@ -30,7 +30,7 @@ class GestorDora(private val cartas: ArrayList<Int>) {
}
fun actualizarDoraAbierto() {
if (doraCerrado.size >= 5) return
if (doraAbierto.size >= 5) return
doraAbierto.add(cartas[5 + doraAbierto.size])
}

View File

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

View File

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