Mange objekter i en liste
Når du trenger mange objekter av samme type, lager du dem fra én klasse og legger dem i en liste. Da kan du oppdatere og tegne alle med én løkke. Hvert objekt har sin egen tilstand — endrer du ett, påvirkes ikke de andre.
Slik kan du tenke om det
- Mange objekter, én løkke Løkka over objektlista skriver flytt() og tegn(skjerm) bare én gang, men hvert objekt svarer ut fra sin egen tilstand. Derfor gir ti baller fra én klasse ti uavhengige bevegelser — koden blir ikke lengre av at det blir flere ting på skjermen.
Vanlige feil
- Du tror alle objekter deler de samme verdiene Det er lett å tro at hvis du endrer ett objekts egenskap, endres alle. Men hvert objekt har sin egen, uavhengige tilstand i sitt eget minne — å endre det ene rører ikke det andre.
- Du tror .copy() kopierer alt innholdet `b = a.copy()` lager en ny ytre liste, men elementene inni er de samme objektene. Er lista nøstet, deler kopiene fortsatt de indre listene: endrer du `b[0][0]`, endrer du også `a[0][0]`. Kopien er grunn — bare ett lag dypt.
Øv på dette
- Herme: mange objekter fra én klasse
- Lage: mange stjerner i en liste
- Øving: regndråper med Spillflate
- Sjekk: deler objektene verdier?
- Stjernefangeren: en fjerde type i lista
- Snøfall: nær og fjern
- Begrepssjekk: Mange objekter i et spill
- Drill: Klasser og metoder — utfordring
- Drill: Spill-kontrakten — øvet
- Drill: Spill-kontrakten — utfordring
- Kodeløype: mange objekter i et spill
- Kodeløype: Ballene III — mange objekter
- Kodeløype: Ballene III+ — finn, sorter og mål
- Kodeløype: Lag din egen sverm
- Drill: OOP-begreper II
- Lage: en regnskur av stjerner
- Diskuter: fra liste av objekter mot arv
- Fem fiender: separate variabler eller én objektliste?