Cambiado codigo para que el jugador que descarta no tenga oportunidades, y los jugadores no puedan ver las oportunidades de otros

master
Araozu 2020-10-06 10:02:00 -05:00
parent 019f1a7b85
commit 91e4f02409
4 changed files with 20 additions and 20 deletions

View File

@ -1,8 +1,8 @@
package dev.araozu.juego package dev.araozu.juego
data class DatosJuego( data class DatosJuego(
val dora: Array<Int>, val dora: ArrayList<Int>,
val doraOculto: Array<Int>, val doraOculto: ArrayList<Int>,
val manos: HashMap<String, Mano>, val manos: HashMap<String, Mano>,
val cartasRestantes: Int, val cartasRestantes: Int,
val ordenJugadores: Array<String>, val ordenJugadores: Array<String>,
@ -16,21 +16,25 @@ data class DatosJuego(
other as DatosJuego other as DatosJuego
if (!dora.contentEquals(other.dora)) return false if (dora != other.dora) return false
if (!doraOculto.contentEquals(other.doraOculto)) return false if (doraOculto != other.doraOculto) return false
if (manos != other.manos) return false if (manos != other.manos) return false
if (cartasRestantes != other.cartasRestantes) return false if (cartasRestantes != other.cartasRestantes) return false
if (!ordenJugadores.contentEquals(other.ordenJugadores)) return false if (!ordenJugadores.contentEquals(other.ordenJugadores)) return false
if (turnoActual != other.turnoActual) return false
if (turnosHastaDora != other.turnosHastaDora) return false
return true return true
} }
override fun hashCode(): Int { override fun hashCode(): Int {
var result = dora.contentHashCode() var result = dora.hashCode()
result = 31 * result + doraOculto.contentHashCode() result = 31 * result + doraOculto.hashCode()
result = 31 * result + manos.hashCode() result = 31 * result + manos.hashCode()
result = 31 * result + cartasRestantes result = 31 * result + cartasRestantes
result = 31 * result + ordenJugadores.contentHashCode() result = 31 * result + ordenJugadores.contentHashCode()
result = 31 * result + turnoActual.hashCode()
result = 31 * result + turnosHastaDora
return result return result
} }

View File

@ -8,20 +8,12 @@ class GestorDora(private val cartas: ArrayList<Int>) {
var turnosRestantesDoraCerrado = turnosSigDora // 32 16 8 4 var turnosRestantesDoraCerrado = turnosSigDora // 32 16 8 4
private set private set
operator fun component1(): Array<Int> { operator fun component1(): ArrayList<Int> {
val numDora = doraCerrado.size return doraCerrado
return Array(5) {
if (it < numDora) doraCerrado[it]
else 0
}
} }
operator fun component2(): Array<Int> { operator fun component2(): ArrayList<Int> {
val numDora = doraCerrado.size return doraAbierto
return Array(5) {
if (it < numDora) doraAbierto[it]
else 0
}
} }
fun actualizarDoraCerrado() { fun actualizarDoraCerrado() {

View File

@ -139,7 +139,10 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
// Verificar seq/tri/quad/win // Verificar seq/tri/quad/win
var hayOportunidades = false var hayOportunidades = false
for ((_, mano) in manos) { for ((idUsuarioActual, mano) in manos) {
// No buscar oportunidades en el usuario que acaba de descartar.
if (idUsuarioActual == idUsuario) continue
val oportunidadSeq = OportunidadSeq.verificar(carta, mano.cartas) val oportunidadSeq = OportunidadSeq.verificar(carta, mano.cartas)
if (oportunidadSeq != null) { if (oportunidadSeq != null) {
hayOportunidades = true hayOportunidades = true

View File

@ -13,7 +13,8 @@ data class Mano(
l.addAll(cartas.map { 0 }) l.addAll(cartas.map { 0 })
return this.copy( return this.copy(
cartas = l, cartas = l,
sigCarta = if (sigCarta != -1) 0 else sigCarta sigCarta = if (sigCarta != -1) 0 else sigCarta,
oportunidades = arrayListOf()
) )
} }