Flink vuil maken

In principe heb je nu alle ingrediënten om de kamer flink vuil te maken, er moeten nog drie dingen gebeuren.

  1. Een herhalingslus waarin een behoorlijk aantal vuiltjes worden geplaatst.
  2. Zorgen dat niet alleen aarde maar ook pluisjes en spinnetjes worden geplaatst.
  3. De methode vanzelf laten starten als de Room wordt gemaakt aan het begin.

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.

 

1 - herhalingsopdracht

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.

2 - keuze uit aarde, pluis of spin

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.

3 - Zelf starten van de methode

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.