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".
- Leeg bord →
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
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 →.