Sprint 6 · De blauwdruk  ·  US4: De Game — alles in één object

Als developer, wil ik de speler, alle vijanden en de score in één Game-object bewaren dat ik in één keer aan de engine meegeef, zodat mijn spel niet meer op losse globals draait en de hele spelstaat overal makkelijk is door te geven.

Taak 2: Een object mag een ander object bewaren

Een attribuut hoeft geen getal of string te zijn — het mag ook een lijst zijn, of een heel ander object. Zo bewaart je Game straks een lijst self.enemies én een self.player. Jouw object heeft een speler en heeft vijanden.

Een attribuut mag alles zijn

Tot nu toe waren attributen simpele waarden: een string, een getal, een boolean. Maar een attribuut kan élk object bevatten — ook een lijst, of een object van een andere class. Neem een Logbook dat een lijst regels bewaart:

class Logbook:
    def __init__(self):
        self.entries = []       # een lijst als attribuut

log = Logbook()
log.entries.append("Start")
print(log.entries)          # ['Start']

self.entries is een volwaardig lijst-object dat ín het logboek woont. Je gebruikt de gewone lijst-methodes (append) via de punt-notatie. Zo kan een object een ander object bevatten.

Dit is de "heeft-een"-relatie.
Een logboek heeft een lijst. Straks bouw je hetzelfde patroon in je game-opdracht: jouw Game-object heeft een lijst vijanden en een speler, bewaard als attributen.

Zie het object in het object

Klik op Maak ServerMonitor. De buitenste doos is jouw object; daarbinnen verschijnt het echte Connection-object als attribuut self.connection.

monitor = ServerMonitor()
self.is_online = False
self.cpu_usage = 0
self.connection = …
Connection-object (externe netwerklib)
connect(), ping(), close() …
>>> Oefenomgeving: Python REPL Simulator

De class Logbook (met self.entries = []) is gedefinieerd. Oefen met een object dat een lijst-object bewaart.

  1. log = Logbook()
  2. log.entries — wat bevat het attribuut?
  3. log.entries.append("Start") — gebruik de lijst-methode.
  4. log.entries.append("Takeoff")
  5. log.entries — en nu?
Python 3.11 REPL Simulator · class Logbook met self.entries = [] is gedefinieerd.
>>> 
🧩

Jouw opdracht: een class die een lijst bewaart

Oefen de "heeft-een"-relatie met een game-class die een lijst als attribuut bewaart — bijvoorbeeld een Wave die een lijst vijanden bijhoudt, of een Game die een lijst kogels bijhoudt.

  1. Schrijf een class met een constructor die een leeg lijst-attribuut aanmaakt (bv. self.enemies = [] of self.bullets = []).
  2. Maak een object en voeg via de punt-notatie drie dingen aan de lijst toe.
  3. Print de lijst en de lengte ervan (het aantal vijanden/kogels).
  4. Maak een tweede object en bewijs dat het zijn eigen, lege lijst heeft.

Acceptatiecriteria

  • De class maakt in de constructor een leeg lijst-attribuut aan.
  • Je voegt items toe via de punt-notatie (object.enemies.append(...)).
  • Je print de inhoud en de lengte van de lijst.
  • Een tweede object heeft aantoonbaar zijn eigen, aparte lijst.