Workshop › Candy Crush-style Match 3 › Step 25 of 29

Show the hint

What we are doing

The selection is outlined white, the hint's two gems yellow. Instead of three if blocks, one loop goes through a list of [cell, color] pairs and skips the empty ones.

```js
// Outline the selected gem, and after five idle seconds, a possible move.
ctx.lineWidth = 3
for (const [cell, color] of [[selected, '#ffffff'], [hint && hint.a, '#fde047'], [hint && hint.b, '#fde047']]) {
  if (!cell) continue
  ctx.strokeStyle = color
  ctx.strokeRect(LEFT + cell.c * SIZE + 2, TOP + cell.r * SIZE + 2, SIZE - 4, SIZE - 4)
}
```

What it means

Your turn

In draw, replace the whole if (selected) { ... } block with the comment and the loop.

Skills: Drawing on a canvas, Arrays and objects

All steps

  1. A place for the board
  2. A checkered grid
  3. The game loop
  4. A board of random gems
  5. Draw the gems
  6. Start without matches
  7. Click a gem
  8. Show the selection
  9. Swap two neighbours
  10. Find every match
  11. No match, no swap
  12. A score and a fresh start
  13. Clear the match
  14. Let the gems fall
  15. Two halves of a clear
  16. Wait before clearing
  17. Flash, and hands off
  18. Cascades
  19. Where a gem came from
  20. Slide down
  21. Out from under the top
  22. Is there any move?
  23. Never stuck
  24. A hint after five seconds
  25. Show the hint
  26. Twenty moves
  27. The end of a game
  28. Remember the best score
  29. Build it yourself: swipe to swap