Ga naar hoofdinhoud

Bouwsteen 2 — player(bord)

Leerdoel: je schrijft een functie die kijkt wie aan zet is, door te tellen in plaats van een "wiens beurt"-variabele bij te houden.

Wat doet deze functie?

In tic-tac-toe begint X, en 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. Zijn ze gelijk, dan is X aan de beurt; heeft X er één meer, dan is O aan de beurt. Je hebt geen extra variabele nodig, 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 = 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=3

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

Bouw zelf en test

Python
Code-omgeving wordt voorbereid…
Tip

rij.count("X") telt hoe vaak "X" in één rij staat. Begin een teller op 0, loop over de drie rijen en tel er per rij het aantal bij op. Doe hetzelfde voor "O", en vergelijk daarna de twee tellers met een if.

Antwoord
def player(bord):
x_count = 0
o_count = 0
for rij in bord:
x_count += rij.count("X")
o_count += rij.count("O")
if x_count == o_count:
return "X"
return "O"

Zijn de tellingen gelijk, dan is X aan zet (X begint). Anders heeft X er één meer en is O aan zet.

Door naar bouwsteen 3: actions →.