In deze opgave bouwen we een aantal klassen, waarbij het de bedoeling is de basislogica van een bordspel te realiseren.

Klasse Speler

Een object van deze klasse houdt de naam van de Speler bij (type string), alsook zijn $$x$$- en $$y$$-coördinaat op het speelbord. Hierbij is de $$x$$-richting de horizontale richting (links-rechts), en de $$y$$-richting de verticale richting (onder-boven). Zorg voor:

Klasse BordSpel

Elk BordSpel beschikt over een reeks Spelers, deze reeks is bij aanmaak van een object van deze klasse leeg. Voorzie het volgende in deze klasse:

Klasse GeefAlles

In deze klasse programmeer je de methode filter() zodanig dat elke Speler aan de voorwaarde voldoet.

Klasse FilterNaam

Programmer in deze klasse:

Klasse FilterX

Programmer in deze klasse:

Voorbeeld

a = Speler('An', 5, 10)
b = Speler('Boris', -5, 10)
print(a)    # [An:<5,10>]
print(b)    # [Boris:<0,10>]
a.ga_rechts()
a.ga_rechts()
a.ga_onder()
print(a)    # [An:<7,9>]
    
        
c = Speler('Cody', 6, 8)
d = Speler('Corine', 7, 4)
spel = BordSpel()
spel += a
spel += b
spel += c
spel += d

print(spel.get_aantal_spelers_x(5))    # 0
print(spel.get_aantal_spelers_x(6)) # 1
print(spel.get_aantal_spelers_x(7)) # 2
print(spel.is_bezet(0, 10))    # True
print(spel.is_bezet(7, 8))   # False

print(spel.filter_spelers(GeefAlles()))  #['[An:<7,9>]', '[Boris:<0,10>]', '[Cody:<6,8>]', '[Corine:<7,4>]']    
print(spel.filter_spelers(FilterNaam('Co')))  #['[Cody:<6,8>]', '[Corine:<7,4>]']
print(spel.filter_spelers(FilterX(7)))  #['[An:<7,9>]', '[Corine:<7,4>]']