Ga naar hoofdinhoud

9.7 Bouwsteen 2 — player(bord)

Leerdoel: je schrijft een functie die kijkt wie aan zet is. Tellen in plaats van een "wiens beurt" variabele bijhouden.

Wat doet deze functie?

In tic-tac-toe begint X. Daarna wisselen X en O elkaar af. Hoe weet je wiens beurt het is bij een willekeurig bord?

"Tel het aantal X'en en het aantal O's. Als ze gelijk zijn, is X aan de beurt. Als X er eentje meer heeft, is O aan de beurt."

Geen extra variabele nodig — de telling op het bord vertelt het zelf.

Specificatie

  • Input: een bord (3×3 lijst).
  • Output: "X" of "O" (de speler die nu aan zet is).
  • Voorbeelden:
    • Leeg bord → "X" (X begint).
    • Bord met 1 X en 0 O's → "O".
    • Bord met 2 X en 2 O's → "X".

Voorspel

Wat denk je dat dit print?

bord_a = [[None, None, None],
[None, None, None],
[None, None, None]]

bord_b = [["X", None, None],
[None, None, None],
[None, None, None]]

bord_c = [["X", "O", "X"],
["O", "X", "O"],
[None, None, None]]

# Tel X'en en O's per bord
for naam, bord in [("a", bord_a), ("b", bord_b), ("c", bord_c)]:
x_count = sum(rij.count("X") for rij in bord)
o_count = sum(rij.count("O") for rij in bord)
print(f"bord {naam}: X={x_count}, O={o_count}")
Antwoord
bord a: X=0, O=0
bord b: X=1, O=0
bord c: X=3, O=2

Bij bord a en c is X aan de beurt (gelijke telling, óf één O nodig). Bij bord b is O aan de beurt (X heeft één voorsprong).

Bouw zelf en test

Python
Code-omgeving wordt voorbereid…
Tip

Gebruik rij.count("X") om in één rij te tellen, en sum(... for rij in bord) om over alle rijen op te tellen:

x_count = sum(rij.count("X") for rij in bord)

Daarna een if-vergelijking met de twee tellingen.

Door naar stap 8: bouwsteen 3 — actions →.