Workshop › Connect Four › Step 31 of 38

Don't help the player

What we are doing

Rule 3: never play right under a hole where the player would win, because your disc would give them the step they need. For each open column, imagine the computer's disc there and ask whether the player could then win on top of it.

```js
// 3. Do not play right under a square where the player would win.
const safe = open.filter((col) => {
  const row = dropRow(col)
  if (row === 0) return true
  board[row][col] = 2
  const danger = winsWith(col, 1)
  board[row][col] = 0
  return !danger
})
const choices = safe.length > 0 ? safe : open
return choices[0]
```

What it means

Your turn

In computerMove, replace return open[0] with the new lines.

Skills: Game states

All steps

  1. A dark background
  2. A drawing function
  3. The blue board
  4. One hole
  5. A whole row
  6. All 42 holes
  7. The board in memory
  8. Discs in their colors
  9. Draw every frame
  10. Where does the disc land?
  11. Play a column
  12. Taking turns
  13. Click to play
  14. The next disc
  15. Whose turn?
  16. Playing with the keyboard
  17. Keys 1 to 7
  18. A disc on its way
  19. Gravity
  20. Watch it fall
  21. Inside the board?
  22. Walking along a line
  23. Four in a row?
  24. We have a winner
  25. Circle the four
  26. Who won?
  27. A draw
  28. Play again
  29. Try a move and take it back
  30. Win, or block
  31. Don't help the player
  32. Prefer the middle
  33. The computer's turn
  34. Only on your turn
  35. You and the computer
  36. Counting wins
  37. Show the score
  38. Build it yourself: the loser starts