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)
}
}
// Oportunidades tri
val oportunidadTri = OportunidadTri.verificar(carta, mano.cartas)
if (oportunidadTri != null) {
hayOportunidades = true
mano.oportunidades.add(oportunidadTri)
}
}
if (hayOportunidades) {

View File

@ -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<Int, Int>) :
Oportunidad {
override val nombreOportunidad: String = "Tri"
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
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++
}
return false
if (numCartasEncontradas == 2) return Pair(datos[0], datos[1])
}
return null
}
fun verificar(valorCarta: Int, cartasMano: ArrayList<Int>): OportunidadTri? =
if (arrlCartasContieneTri(valorCarta, cartasMano)) {
OportunidadTri(valorCarta)
fun verificar(valorCarta: Int, cartasMano: ArrayList<Int>): OportunidadTri? {
val r = arrlCartasContieneTri(valorCarta, cartasMano)
return if (r != null) {
OportunidadTri(valorCarta, r)
} else {
null
}
}
}
}