HTML Academy
Hard to come across
Objects17/30
Back to the list of tasks
  • 1. Shall we play?
  • 2. Players, let’s start!
  • 3. My attempt number one
  • 4. Hello, object!
  • 5. Reading from the object
  • 6. Count off!
  • 7. Overriding object properties
  • 8. Passing object by a link
  • 9. My game
  • 10. Giving out the attempts
  • 11. Who is the winner?
  • 12. Announce the entire list, please
  • 13. Looking for a cat with great results
  • 14. No one will hide
  • 15. New conditions
  • 16. Hard to come across
  • 17. Let’s bring it all to light
  • 18. Roll the dice, gentlemen cats!
  • 19. Let’s make adjustments
  • 20. Summary of “Objects”. Part 1
  • 21. Tenth program: “Golden ball”
  • 22. Build it yourself!
  • 23. My first method
  • 24. Implementing methods
  • 25. Object as a dictionary
  • 26. Bracket notation
  • 27. Let’s not forget about the context
  • 28. Store check
  • 29. Summary of “Objects”. Part 2
  • 30. Eleventh program: “The house that Muffin built”
Roll the dice, gentlemen cats!
  • Sign up
  • Log in

Loading…
Everything will be ready in few seconds

  • Theory
  • Theory
  • Comments

Let’s bring it all to light

We processed the situation with the same result for all players. When coming across this unusual event, you can log a message in the console and immediately terminate the function. This technique allows you to simplify further checks, because we know for sure that you do not need to process one condition.

Now let’s describe situations when there are several winners (but not everyone) or one winner. What do we need for it?

  • If not all participants have won, the message will start the same way, with the words “The winner is”. Thus, we will create a variable that will store the beginning of the message. And do not forget to add the space after.
  • Since the winner objects are in the array, we’ll go through the array, get the names of the players and add them by concatenating the lines in the message.
  • Add to the message information about the number of game points the winners have. To do this, you do not need to go through the array, because the winners have the same result. For simplicity sake, take the first player’s game points and add them to the message.
  • Log the message in the console and see what will happen.

Comments

  • script.js
JavaScript
var gameRules = { diceNumber: 2, maxAttempts: 3 }; var firstCat = { name: 'Muffin', points: 0 }; var secondCat = { name: 'Rudolph', points: 0 }; var cats = [firstCat, secondCat]; var runGame = function (rules, players) { for (var currentAttempt = 1; currentAttempt <= rules.maxAttempts; currentAttempt++) { for (var i = 0; i < players.length; i++) { var throwResult = muffin.throwDice(rules.diceNumber, rules.diceNumber * 6); players[i].points += throwResult; console.log(players[i].name + ' rolled ' + players[i].points); } } return players; }; var getWinners = function (players) { var winners = []; var max = players[0]; for (var i = 0; i < players.length; i++) { var currentPlayer = players[i]; if (currentPlayer.points > max.points) { max = currentPlayer; winners = [max]; } else if (currentPlayer.points === max.points) { winners.push(currentPlayer); } } return winners; }; var printWinners = function (players, winners) { if (players.length === winners.length) { console.log('All cats rock!'); } }; cats = runGame(gameRules, cats); console.log(cats); var tops = getWinners(cats); console.log(tops); printWinners(cats, tops);

What didn’t you like in this task?

Thanks! We’ll fix everything at once!

Console

The code has changed, click “Run” or turn autorun on.

Result

Goalscompleted

Improve the printWinners function:

  1. After logging 'All cats rock!', end the function with return.
  2. After the first condition, create variable message, which contains the line 'The winner is '.
  3. After the variable, write the for loop, which increases the counter i from 0 to the length of the array winners (not including this value) by one at each iteration.
  4. In the body of the loop, add the names of the winners message += winners[i].name.
  5. After the loop, use += to add the ' with the number of points: ' + points of the first player in the winners array string to the message.
  6. Log message in the console.

Cookies ∙ Privacy ∙ License Agreement ∙ About ∙ Contacts ∙ © HTML Academy OÜ, 2019−2025

VISAMastercard

Log in

or

Forgot your password?

Sign up

Sign up

or
Log in

Restore access

Have you forgotten your password or lost access to your profile? Enter your email connected to your profile and we will send you a link to restore access.

Forgot to connect your email to the profile? Email us and we’ll help.