Workshop › Battleship › Step 19 of 35

Win in as few shots as you can

What we are doing

When the last enemy ship sinks you win, and the number of shots it took is your score: fewer is better.

```js
let state // 'playing', 'won' or 'lost'
let shots // how many shots you took

  state = 'playing'
  shots = 0

  if (state !== 'playing' || myShots[r][c]) return
  shots += 1

  if (enemyFleet.every(sunk)) {
    state = 'won'
    message = 'You won in ' + shots + ' shots!'
    return
  }
```

What it means

Your turn

  1. Under let message write let state and let shots with their comments.
  2. In reset, under the message line, write state = 'playing' and shots = 0.
  3. In playerShoots, change the first line and write shots += 1 under it.
  4. At the end of playerShoots, write the win block.

Skills: Game states

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