Ajustada clase OportunidadTri

master
Araozu 2020-10-16 13:59:32 -05:00
parent 06a2319d5e
commit af38681e2f
2 changed files with 22 additions and 9 deletions

View File

@ -164,6 +164,13 @@ class Juego(val usuarios: ArrayList<Pair<String, Boolean>>) {
mano.oportunidades.add(oportunidadSeq) mano.oportunidades.add(oportunidadSeq)
} }
} }
// Oportunidades tri
val oportunidadTri = OportunidadTri.verificar(carta, mano.cartas)
if (oportunidadTri != null) {
hayOportunidades = true
mano.oportunidades.add(oportunidadTri)
}
} }
if (hayOportunidades) { if (hayOportunidades) {

View File

@ -1,31 +1,37 @@
package dev.araozu.juego package dev.araozu.juego
data class OportunidadTri(override val cartaDescartada: Int) : data class OportunidadTri(override val cartaDescartada: Int, val cartas: Pair<Int, Int>) :
Oportunidad { Oportunidad {
override val nombreOportunidad: String = "Tri" override val nombreOportunidad: String = "Tri"
companion object { companion object {
private fun arrlCartasContieneTri(carta: Int, arrl: ArrayList<Int>): Boolean { private fun arrlCartasContieneTri(carta: Int, arrl: ArrayList<Int>): Pair<Int, Int>? {
var numCartasEncontradas = 0 var numCartasEncontradas = 0
val datos = Array(2) { 0 }
// Elimina el último bit para que no se distinga entre cartas de corazon/trebol/etc // Elimina el último bit para que no se distinga entre cartas de corazon/trebol/etc
val valorCarta = (carta ushr 1) shl 1 val valorCarta = (carta ushr 1) shl 1
for (c in arrl) { for (c in arrl) {
val valorCartaN = (c ushr 1) shl 1 val valorCartaN = (c ushr 1) shl 1
if (valorCarta == valorCartaN) numCartasEncontradas++ if (valorCarta == valorCartaN) {
if (numCartasEncontradas == 2) return true datos[numCartasEncontradas] = c
numCartasEncontradas++
}
if (numCartasEncontradas == 2) return Pair(datos[0], datos[1])
} }
return false return null
} }
fun verificar(valorCarta: Int, cartasMano: ArrayList<Int>): OportunidadTri? = fun verificar(valorCarta: Int, cartasMano: ArrayList<Int>): OportunidadTri? {
if (arrlCartasContieneTri(valorCarta, cartasMano)) { val r = arrlCartasContieneTri(valorCarta, cartasMano)
OportunidadTri(valorCarta) return if (r != null) {
OportunidadTri(valorCarta, r)
} else { } else {
null null
} }
}
} }
} }