Hello!
Vine a actualizar el status de como llevo el juego. Me demoré en terminar el curso pensando como aplicar la parte de probabilidad y lo he logrado de una forma sencilla y dinámica.
Este es el resultado:
La probabilidad la maneje de la siguiente manera: Tengo dos Arrays Nuevos.
.
- Un array público para las probabilidades de los candies, candyProbabilities. Aquí podemos configurar con que % queremos que salga el candy (1 = 10%, 2 = 20%, 3 = 20%, etc)
- Otro array en este caso privado que se llama **tableProbabilities ** para manejar las probabilidades. Tiene un size de 10, que representa mi 100%. Los caramelos van a ser llenados en este array y dependiendo la probabilidad que le dimos pueden ocupar menos o más espacios en el nuevo arreglo.
En una funcion se debe recorrer el arreglo de CandyProbabilities y obtener el número de veces que saldrá el caramelo (moves). Luego realicé otro for para los (moves) y los agrego al array de tableProbabilities. También lleno unas variables que uso para saber cuál es el caramelo que tiene mas probabilidades de salir y tomo su id.
.
private void SetCandiesProbabilities(){
int moves = 0;
int k=0;
highProbability = 0;
int bestCandy = -1;
for (int i = 0; i < candiesProbabilities.Length; i++){
moves = candiesProbabilities[i];
if(highProbability < moves){
highProbability = moves;
bestCandy = i;
}
for (int j = 0; j < moves; j++){
if(k<probabilitiesTable.Length)
probabilitiesTable[k++] = i;
}
}
candyGoalId = bestCandy;
}
.
Por último al generar el board inicial y consultar el Id del candy, este debe tomarse aleatoriamente del nuevo arreglo tableProbabilites. Ejemplo: En este caso si colocaste un 3 para el sol, eso representa el 30% de probabilidades de que salga al general el board inicial. En este sentido el 30% para 60 celdas, es aproximadamente 18 candies.
.
Cabe resaltar que no es perfecto y por las propias reglas del juego a la hora de no repetirse caramelos a los lados en el inicio, los números pueden variar. Pero si hace su función.
.
Bueno esa es la respuesta al reto. Espero que a alguien le pueda servir de algo 💚
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?