Implementar Ron
This commit is contained in:
parent
8c58639a61
commit
b84531f66a
@ -89,9 +89,18 @@ object GestorJuegos {
|
||||
juego.ignorarOportunidades(idUsuario)
|
||||
}
|
||||
|
||||
suspend fun manejarLlamarSeq(idJuego: String, idUsuario: String, cartaDescartada: Int, combinacion: Pair<Int, Int>) {
|
||||
suspend fun manejarLlamarSeq(
|
||||
idJuego: String,
|
||||
idUsuario: String,
|
||||
cartaDescartada: Int,
|
||||
combinacion: Pair<Int, Int>
|
||||
) {
|
||||
val juego = juegos[idJuego]!!
|
||||
juego.manejarSeqTri(idUsuario, cartaDescartada, combinacion)
|
||||
}
|
||||
|
||||
suspend fun manejarRon(idJuego: String, idUsuario: String) {
|
||||
juegos[idJuego]!!.manejarRon(idUsuario)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -46,13 +46,17 @@ fun Routing.juegows() {
|
||||
)
|
||||
}
|
||||
"llamar_ron" -> {
|
||||
TODO("Ron no implementado")
|
||||
val datos = gson.fromJson(sol.datos, DatosIgnorarOportunidad::class.java)
|
||||
GestorJuegos.manejarRon(datos.idJuego, datos.idUsuario)
|
||||
}
|
||||
"llamar_tsumo" -> {
|
||||
TODO("Tsumo no implementado")
|
||||
}
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
System.err.println("Tipo de dato enviado al socket no admitido")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -208,15 +208,15 @@ class Juego(val idJuego: String) {
|
||||
enviarDatosATodos()
|
||||
}
|
||||
|
||||
suspend fun manejarRon(idUsuario: String, cartaDescartada: Int) {
|
||||
suspend fun manejarRon(idUsuario: String) {
|
||||
val jugadorRon = jugadores.find { it.idUsuario == idUsuario } ?: return
|
||||
val jugadorDescate = jugadores[posJugadorActual]
|
||||
|
||||
val ronExitoso = jugadorRon.manejarRon(cartaDescartada)
|
||||
val ronExitoso = jugadorRon.manejarRon()
|
||||
|
||||
if (!ronExitoso) return
|
||||
|
||||
estadoJuego = EstadoJuego.Terminado
|
||||
enviarDatosATodos()
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.isActive
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.sync.Mutex
|
||||
import kotlinx.coroutines.time.delay
|
||||
|
||||
sealed class Jugador(val juego: Juego, val idUsuario: String) {
|
||||
|
||||
@ -122,15 +121,14 @@ sealed class Jugador(val juego: Juego, val idUsuario: String) {
|
||||
return true
|
||||
}
|
||||
|
||||
fun manejarRon(cartaDescartada: Int): Boolean {
|
||||
fun manejarRon(): Boolean {
|
||||
mano.oportunidades.find { it is OportunidadRon } ?: return false
|
||||
|
||||
// Verificar que el jugador tenga la oportunidad
|
||||
// Limpiar oportunidades
|
||||
mano.oportunidades.clear()
|
||||
|
||||
// Verificar que la carta descartada sea correcta
|
||||
|
||||
// Verificar los yaku
|
||||
|
||||
return false
|
||||
mano.esGanador = true
|
||||
return true
|
||||
}
|
||||
|
||||
private fun ultimaCartaDescartadaEs(carta: Int): Boolean =
|
||||
|
@ -6,10 +6,13 @@ data class Mano(
|
||||
val descartes: ArrayList<Int> = arrayListOf(),
|
||||
var sigCarta: Int = -1,
|
||||
var oportunidades: ArrayList<Oportunidad> = arrayListOf(),
|
||||
var dragon: Dragon = Dragon.Negro
|
||||
var dragon: Dragon = Dragon.Negro,
|
||||
var esGanador: Boolean = false
|
||||
) {
|
||||
|
||||
fun obtenerManoPrivada(): Mano {
|
||||
if (esGanador) return this
|
||||
|
||||
val l = ArrayList<Int>()
|
||||
l.addAll(cartas.map { 0 })
|
||||
return this.copy(
|
||||
|
Loading…
Reference in New Issue
Block a user