Saltar al contenido principal
Codigo Heroe
Tarea anterior
Objetos18/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

Ajustar el mensaje con condiciones

Parece que el programa funciona como debe. Casi.

Si gana un solo participante, obtenemos un mensaje correcto: Ganó Participante con esta cantidad de puntos: número.

Si ganan varios y también hay perdedores, el mensaje queda peor: Ganó ParticipanteParticipanteParticipante con esta cantidad de puntos: número. Algo no salió bien.

Tenemos que separar los nombres con comas y espacios. Y, si hay varios ganadores, debemos escribir «Ganaron» en lugar de «Ganó». ¡La programación también necesita buena gramática!

Para mejorar el mensaje agregaremos un par de comprobaciones pequeñas en printWinners.

  • script.js
JavaScript
let gameRuleset = { diceNumber: 1, maxAttempts: 1 }; let firstCat = { name: 'Cupcake', points: 0 }; let secondCat = { name: 'Rodolfo', points: 0 }; let thirdCat = { name: 'Rocky', points: 0 }; let cats = [firstCat, secondCat, thirdCat]; 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; }; let getWinners = function (players) { let winners = []; let max = players[0]; for (let i = 0; i < players.length; i++) { let currentPlayer = players[i]; if (currentPlayer.points > max.points) { max = currentPlayer; winners = [max]; } else { if (currentPlayer.points === max.points) { winners.push(currentPlayer); } } } return winners; }; let printWinners = function (players, winners) { if (players.length === winners.length) { console.log('¡Todos los gatos son igual de buenos!'); return; } let message = 'Ganó '; for (let i = 0; i < winners.length; i++) { message += winners[i].name; } message += ' con esta cantidad de puntos: ' + winners[0].points; console.log(message); }; cats = runGame(gameRuleset, cats); console.log(cats); let tops = getWinners(cats); console.log(tops); printWinners(cats, tops);
Consola

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

Resultado de la ejecución

ObjetivosRealizado
0

    Dentro de la función printWinners:

    1. Después de declarar message, agrega una condición que compruebe si hay más de 1 ganador.
    2. Si se cumple, cambia el valor de message a 'Ganaron '.
    3. Al principio del cuerpo del ciclo, agrega una condición que compruebe si i es mayor o igual que 1.
    4. Si se cumple, agrega la cadena ', ' a message. Así habrá una coma y un espacio entre los nombres cuando haya más de uno.
    5. Elimina las impresiones de los arreglos cats y tops al final del programa.
    Codigo Heroe

    © 2023-2026, codigoheroe.com