In principe heb je nu alle ingrediënten om de kamer flink vuil te maken, er moeten nog drie dingen gebeuren.
Hiervoor stond de code al grotendeels in de Roomba versie 1 en zullen we toevoegen in de volgende vragen. Je gebruikt later nog eenzelfde soort code voor het plaatsen van obstakels.
Het idee is om tusen de 20 en 50 stuks vuil te plaatsen, je doet dat in een herhalingsopdracht waarbij weer een random getal wordt gebruikt voor het antal herhalingen.
Het kiezen tussen aarde, pluis of spin doen we ook weer met een toevalsgetal.
Je ziet nu het voordeel dat alle 3 de soorten vuil subklassen zijn van klasse Vuil, hierdoor kunnen we ze op dezelfde manier toevoegen.
Omdat er 3 keuzen zijn beginnen we met een random getal 0, 1 of 2:
Let op dit gebeurd binnen de for loop (lus) want we willen steeds een nieuwe keuze in elke herhaling.
int vuilKeuze = Greenfoot.getRandomNumber(3); // toevalsgetal 0,1 of 2
Vuil vuil; // declareer en instantie van vuil, nog niet bekend is welk soort
if (vuilKeuze == 0) { vuil = (Vuil) new Aarde(); }
else if (keus == 1) { vuil = (Vuil) new Pluis(); }
else {... } zie de vraag hieronder voor de code tussen de accolades
Er is nog één begrip dat niet is uitgelegd maar wel gebruikt, de zogenaamde casting.
Om bij het opzuigen verschil te kunnen maken tussen obstakels (muren en dergelijke) en vuil (een muur mag niet worden opgezogen) is het handig om niet te hoeven controleren of iets Aarde, Pluis of Spin is (of welk vuil je nog wilt maken) maar alleen maar of het van het soort Vuil is.
De casting (Vuil) zorgt dat het Aarde, Pluis of Spin object gezien wordt als een Vuil object, dat mag omdat zij allen een subklasse van Vuil zijn. Het begrip casting behoort niet tot de leerdoelen in deze lesmodule.
De laatse stap is heel eenvoudig, voeg gewoon de methode plaatsVuil() toe in de constructor (net als dal gedaan is met maakMuren).
Maak tenslotte de methode plaatsVuil() private, je kunt deze nu niet meer gebruiken door rechtsklikken in de Room, controleer dat! In dit geval niet zo heel belangrijk maar het voorkomet dat per ongeluk of zelfs express (hackers) code kan worden gebruikt of misbruikt.