From ae1f5b77a8aed7fe7530749793dba88f39a75123 Mon Sep 17 00:00:00 2001 From: diegval <diego.valladolid@estudiantes.uva.es> Date: Tue, 19 Nov 2024 20:39:37 +0100 Subject: [PATCH] Feature: Hay distintas probabilidades para cada evento --- .idea/deploymentTargetSelector.xml | 10 -------- .../model/GeneradorDeEventos.kt | 3 +-- .../model/eventoFactory/EventoCombate.kt | 2 +- .../eventoFactory/EventoFactorySelector.kt | 23 ++++++++++++++++++- .../model/eventoFactory/RiesgoFactory.kt | 2 +- 5 files changed, 25 insertions(+), 15 deletions(-) delete mode 100644 .idea/deploymentTargetSelector.xml diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml deleted file mode 100644 index 2159e85..0000000 --- a/.idea/deploymentTargetSelector.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="deploymentTargetSelector"> - <selectionStates> - <SelectionState runConfigName="MainActivity"> - <option name="selectionMode" value="DROPDOWN" /> - </SelectionState> - </selectionStates> - </component> -</project> \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt index f0b47f6..eff38d9 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt @@ -15,8 +15,7 @@ object GeneradorDeEventos { private var eventos = ArrayList<Evento>() private fun crearEvento(): Evento { - val tipo = TipoEvento.entries.random() - val factory = EventoFactorySelector.obtenerFactory(tipo) + val factory = EventoFactorySelector.obtenerFactory() return factory.generarEvento() } diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt index 7c886a4..5c42d31 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt @@ -11,5 +11,5 @@ class EventoCombate( override var finalizado: Boolean, var ataque: Int, val imagenAtaque : Int, - val acciones: MutableList<Efecto> + val acciones: MutableList<Efecto>, ) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado) \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt index 6054dee..74217d6 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt @@ -4,7 +4,9 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.TipoEvento object EventoFactorySelector { - fun obtenerFactory(tipo: TipoEvento): EventoFactory { + fun obtenerFactory(): EventoFactory { + val tipo = seleccionarTipoEventoConProbabilidades() + return when (tipo) { TipoEvento.Reliquia -> ReliquiaFactory() TipoEvento.Combate -> CombateFactory() @@ -13,4 +15,23 @@ object EventoFactorySelector { TipoEvento.Riesgo -> RiesgoFactory() } } + + private fun seleccionarTipoEventoConProbabilidades(): TipoEvento { + val probabilidades = mapOf( + TipoEvento.Reliquia to 0.3, + TipoEvento.Tienda to 0.1, + TipoEvento.Riesgo to 0.3, + TipoEvento.Trampa to 0.1, + TipoEvento.Combate to 0.2 + ) + + val acumulado = probabilidades.entries.fold(mutableListOf<Pair<Double, TipoEvento>>()) { acc, entry -> + val sumaAcumulada = acc.lastOrNull()?.first ?: 0.0 + acc.add(Pair(sumaAcumulada + entry.value, entry.key)) + acc + } + + val random = Math.random() + return acumulado.first { random <= it.first }.second + } } diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt index af802fb..abdb8fb 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt @@ -19,7 +19,7 @@ class RiesgoFactory : EventoFactory { EfectoRiesgo( ObjetoEquipable( nombre = "Espada de Hierro", - descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato.", + descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato. Otorga 1 de daño extra", efecto = EfectoEquipableAumento(1, Atributo.Ataque), imagen = R.drawable.asi_objeto_espadadefault ), -- GitLab