Opdracht 5(**): Sinaasappels

Plaats reactie
admin
Site Admin
Berichten: 39
Lid geworden op: 01-02-2017 08:45

Opdracht 5(**): Sinaasappels

Bericht door admin » 06-03-2017 22:07

Dit lijkt erg op de vlo die verdwijnt als ie de vis raakt.
Nu moet je iets soortgelijks doen bij de tuinman OF de sinaasappel. Volgens mij kan het allebei, maar ik kies voor de tuinman,

Eerst maar eens programmeren dat de tuinman een punt krijgt als hij een sinaasappel raakt:

Bij de public void act vd tuinman schrijf ik eerst deze methodeaanroep erbij:
tuinmanRaaktSinaasappel();

Dan wat verder naar onderen deze methode definieren:

public void tuinmanRaaktSinaasappel()
{
if (isTouching (Orange.class))
{
addPoints(1);
removeTouching(Orange.class);
}
}

Test of het werkt.

Nu moet de tuinman een aantal punten krijgen gelijk aan de grootte vd sinaasappel.
Even zoeken bij de code vd sinaasappel en je ziet dit:
public int getSize ()
{
return size;
}
Elke aparte sinaasappel heeft dus z’n eigen size al bij zich in de code.
Je hebt geleerd hoe je een methode aanroept van een ander object. In dit geval moet het iets worden zoals:

Als de Gardener de Orange raakt…
{
Welke Orange raakt hij dan? Haal de gegevens van precies DIE Orange op.
Haal de grootte van die orange op.
Tel de grootte op bij het puntenaantal van de Gardener
}


In code:

public void tuinmanRaaktSinaasappel()
{
if (isTouching (Orange.class))
{
Orange sinaasappel = (Orange)getOneIntersectingObject(Orange.class);
points = points + sinaasappel.getSize();
World world = getWorld();
removeTouching(Orange.class);
}
}

Let weer op de casting (zie opdracht 6.7 onderaan). Je zegt dus:
(Orange)getOneIntersectingObject(Orange.class);

En niet:
getOneIntersectingObject(Orange.class);

Want dan krijg je de foutmelding zoals bij Opdracht 6.7 aangegeven.

Plaats reactie