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