Workshop › Battleship › Step 10 of 35

Show the shots

What we are doing

drawSea gets a third parameter, a shots grid. A miss is a small white dot, a hit a big red one, in the middle of the square.

```js
function drawSea(origin, size, shotsGrid) {

      const shot = shotsGrid[r][c]
      if (!shot) continue
      ctx.fillStyle = shot === 'miss' ? '#e2e8f0' : '#ef4444'
      ctx.beginPath()
      ctx.arc(x + size / 2, y + size / 2, shot === 'miss' ? size / 8 : size / 3, 0, Math.PI * 2)
      ctx.fill()

  drawSea(SEA, BIG, myShots)

  drawSea(HOME, SMALL, grid(null))
```

What it means

Your turn

  1. Add shotsGrid to drawSea's parameters.
  2. In drawSea, under the square's fillRect, write the six dot lines.
  3. In draw, pass myShots to the enemy's sea and grid(null) to yours.

Skills: Drawing on a canvas

All steps

  1. A 10 by 10 sea
  2. A function for any sea
  3. Your own sea
  4. Draw again and again
  5. Grids and ships as lists
  6. A random fleet
  7. Two fleets
  8. Which ship is here?
  9. Fire at a square
  10. Show the shots
  11. Your shot
  12. Tap to fire
  13. A message line
  14. Hit or miss?
  15. See your own fleet
  16. Sinking ships
  17. Darker hits on a sunk ship
  18. Outline sunk ships
  19. Win in as few shots as you can
  20. A record of their shots
  21. Take turns
  22. The computer shoots back
  23. You can lose too
  24. A heat map
  25. Shoot the hottest square
  26. Hunt around a hit
  27. See the heat map
  28. H for heat
  29. Show their ships at the end
  30. A keyboard cursor
  31. Move with the arrows
  32. Fire with Enter, play again
  33. Your best game
  34. A side panel
  35. Build it yourself: ships apart