Looppatroon aanpassen

We willen dus dat de draai van de Roomba (deels) door toeval wordt bepaald.

Daarvoor moet je in elk geval twee dingen weten:

  1. Hoe in Greenfoot / Java een Random getal te maken?
  2. Waar in de broncode moet de draaihoek worden aangepast?

1-Hoe in Greenfoot / Java een Random getal te maken?

Om code te zoeken die je nog niet kent heb je de 'gebruiksaanwijzing' van de programmeertaal nodig, in vaktaal API (Application Programming Interface) genoemd.

 

Greenfoot API

 

 

In het hoofdscherm van Greenfoot vind je bij Help zowel de Greenfoot Class Documentation (Greenfoot API) als de Java Library Documentation (Java API). Een programmeur met enige ervaring kan hier alle beschikbare standaard code van Java en Greenfoot vinden.

Open de Greenfoot Class Documentation (je hebt dat in les 2 ook al gedaan).


 

Kies voor de klasse <Greenfoot> en scroll naar beneden tot je de methode getRandomNumber(....) ziet, zie de afbeelding hieronder.

methoden van klasse Greenfoot

Als je de methode getRandomNumber(int limit) wilt gebruiken moet je aangeven dat deze in de klasse Greenfoot is te vinden door dit voor de methode te zetten gescheiden door een punt.

Greenfoot.getRandomNumber(...) geeft dus een toevals getal van 0 tot het ingegeven getal, ga dat na. 

2- Waar in de broncode moet de draaihoek worden aangepast?

Open weer de broncode van klasse Roomba en zoek naar de methode

public void act()

Toelichting:
void betekent dat deze methode geen 'antwoord' geeft maar alleen iets doet.
De methode act() wordt zodra je op <Run> drukt in het programma steeds herhaald uitgevoerd.

 

Het onderstaande stukje code zogt dat als er geen obstakel is de Roomba een stap loopt en als de weg niet vrij is (else) 90 graden draait door de methode draai(90).

if ( wegVrij() ) { // Kijk of er iets voor de Roomba staat
                move(5);
                Greenfoot.delay(4);
                batterij = batterij - stroomVerbruik;
                schrijfToestand();
            }
            else {
               
                draai(90);
                toestand = "L";
                schrijfToestand();
            }

Nu zou de aanpassing niet moeilijk meer moeten zijn, vervang de 90 door de juiste code voor het random getal van 45 t/m 135 (je antwoord op de vorige vraag en test je code!