Saltar al contenido principal
Codigo Heroe
Tarea anterior
Objetos11/25
A la lista de tareas
  1. 1. Una función para lanzar los dados
  2. 2. Pasar los datos de los participantes
  3. 3. Sumar puntos con +=
  4. 4. Crear un objeto
  5. 5. Leer propiedades con la notación de punto
  6. 6. Un arreglo de objetos
  7. 7. Modificar las propiedades de un objeto
  8. 8. Referencias a objetos
  9. 9. Agrupar las reglas en un objeto
  10. 10. Un ciclo para los intentos
  11. 11. Una función para encontrar ganadores
  12. 12. Recorrer los objetos de un arreglo
  13. 13. Buscar la puntuación máxima
  14. 14. Agregar ganadores con push
  15. 15. Detectar un empate general
  16. 16. Construir el mensaje de los ganadores
  17. 17. Agregar participantes y cambiar las reglas
  18. 18. Ajustar el mensaje con condiciones
  19. 19. Devolver un objeto desde una función
  20. 20. Crear y llamar a un método
  21. 21. Leer propiedades desde un método
  22. 22. Un objeto como diccionario
  23. 23. Notación de corchetes
  24. 24. El contexto de la llamada y this
  25. 25. Crear otro objeto con la misma función
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Una función para encontrar ganadores

¡Ya hicimos lo más difícil: dividimos el juego en partes y escribimos su ciclo!

Por ahora podemos saber quién ganó mirando los puntos en la consola. Hagamos que el programa determine al campeón. Escribiremos el código por etapas y comprobaremos su funcionamiento en cada paso.

Crearemos getWinners, una función que recibirá el arreglo de participantes y lo procesará para encontrar a quienes ganaron.

La tarea se parece a buscar el valor máximo de un arreglo: tenemos que recorrer los participantes y encontrar a quien tenga más puntos. Pero hay un detalle: puede haber más de un ganador, porque varios gatos pueden conseguir la misma puntuación máxima. ¿Qué hacemos entonces?

Adaptaremos el algoritmo de búsqueda del máximo para incluir a todos los participantes que tengan esa puntuación. Para eso usaremos un arreglo de ganadores. Lo más habitual será que contenga un solo elemento, pero, si hay varios campeones, nadie se quedará fuera.

Para empezar, crearemos un arreglo vacío, lo devolveremos desde getWinners y comprobaremos que todo funciona.

  • script.js
JavaScript
let gameRuleset = { diceNumber: 2, maxAttempts: 3 }; let firstCat = { name: 'Cupcake', points: 0 }; let secondCat = { name: 'Rodolfo', points: 0 }; let cats = [firstCat, secondCat]; let runGame = function (ruleset, players) { for (let currentAttempt = 1; currentAttempt <= ruleset.maxAttempts; currentAttempt++) { for (let i = 0; i < players.length; i++) { let throwResult = keks.throwDice(ruleset.diceNumber, ruleset.diceNumber * 6); players[i].points += throwResult; console.log(players[i].name + ' sacó ' + players[i].points); } } return players; }; cats = runGame(gameRuleset, cats); console.log(cats);
Consola

El código ha cambiado, haga clic en "Ejecutar" o active la ejecución automática.

Resultado de la ejecución

ObjetivosRealizado
0
    1. Después de runGame, declara la función getWinners con el parámetro players.
    2. Dentro de la función, declara el arreglo vacío winners y devuélvelo.
    3. Después de mostrar cats en la consola, crea la variable tops y guarda en ella el resultado de getWinners(cats).
    4. Muestra tops en la consola.
    Codigo Heroe

    © 2023-2026, codigoheroe.com