diff --git a/src/juego/Juego.kt b/src/juego/Juego.kt index a606fa6..88bf824 100644 --- a/src/juego/Juego.kt +++ b/src/juego/Juego.kt @@ -164,6 +164,13 @@ class Juego(val usuarios: ArrayList>) { mano.oportunidades.add(oportunidadSeq) } } + + // Oportunidades tri + val oportunidadTri = OportunidadTri.verificar(carta, mano.cartas) + if (oportunidadTri != null) { + hayOportunidades = true + mano.oportunidades.add(oportunidadTri) + } } if (hayOportunidades) { diff --git a/src/juego/OportunidadTri.kt b/src/juego/OportunidadTri.kt index e484ad7..1b8a01b 100644 --- a/src/juego/OportunidadTri.kt +++ b/src/juego/OportunidadTri.kt @@ -1,31 +1,37 @@ package dev.araozu.juego -data class OportunidadTri(override val cartaDescartada: Int) : +data class OportunidadTri(override val cartaDescartada: Int, val cartas: Pair) : Oportunidad { override val nombreOportunidad: String = "Tri" companion object { - private fun arrlCartasContieneTri(carta: Int, arrl: ArrayList): Boolean { + private fun arrlCartasContieneTri(carta: Int, arrl: ArrayList): Pair? { var numCartasEncontradas = 0 + + val datos = Array(2) { 0 } // Elimina el Ășltimo bit para que no se distinga entre cartas de corazon/trebol/etc val valorCarta = (carta ushr 1) shl 1 for (c in arrl) { val valorCartaN = (c ushr 1) shl 1 - if (valorCarta == valorCartaN) numCartasEncontradas++ - if (numCartasEncontradas == 2) return true + if (valorCarta == valorCartaN) { + datos[numCartasEncontradas] = c + numCartasEncontradas++ + } + if (numCartasEncontradas == 2) return Pair(datos[0], datos[1]) } - return false + return null } - fun verificar(valorCarta: Int, cartasMano: ArrayList): OportunidadTri? = - if (arrlCartasContieneTri(valorCarta, cartasMano)) { - OportunidadTri(valorCarta) + fun verificar(valorCarta: Int, cartasMano: ArrayList): OportunidadTri? { + val r = arrlCartasContieneTri(valorCarta, cartasMano) + return if (r != null) { + OportunidadTri(valorCarta, r) } else { null } - + } } }