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 = 0
o_count = 0
for rij in bord:
x_count += rij.count("X")
o_count += rij.count("O")
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 tel de rijen
bij elkaar op met een loop:
x_count = 0
for rij in bord:
x_count += rij.count("X")
Daarna een if-vergelijking met de twee tellingen.
Door naar stap 8: bouwsteen 3 — actions →.