Workshop › Memory › Step 16 of 25

Two cards at a time

What we are doing

A turn is two cards. We keep the cards turned over this turn in a small array, opened, and refuse a third card while two are open.

```js
let opened // the cards turned over this turn (0, 1 or 2)

  opened = []

function flip(card) {
  if (!card || card.faceUp || opened.length === 2) return
  card.faceUp = true
  opened.push(card)
}
```

What it means

Your turn

  1. Under let cards, write let opened.
  2. At the end of newGame, write opened = [].
  3. In flip, add || opened.length === 2 to the if, and opened.push(card) at the end.

Skills: Game states, Arrays and objects

All steps

  1. Get the canvas and the pen
  2. The table
  3. One card
  4. A row of cards
  5. Four rows
  6. Every fruit twice
  7. Cards that know themselves
  8. A card's corner
  9. Draw the cards from the list
  10. Draw again and again
  11. The face of a card
  12. A fair shuffle
  13. Which card is at a point?
  14. Click to turn a card
  15. One place for the rules
  16. Two cards at a time
  17. Pair or no pair
  18. Count the moves
  19. Show moves and pairs
  20. All pairs found
  21. Play again
  22. A number that follows
  23. Swap sides halfway
  24. Animate the turn
  25. Build it yourself: your best game