Opdracht 2(**): Hoe ontwijkt de kat de hond?

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

Opdracht 2(**): Hoe ontwijkt de kat de hond?

Bericht door admin » 10-02-2017 09:26

Met deze code:

/**
* Als kitty hond ziet, ontwijken en erlangs
*/

public boolean canSeeDog() {
return (canSee(Dog.class));
}


EN

public void act()
{
if (canSeeDog())
{
turn(180);
move();
turn(90);
move();
turn(90);
move();
move();
turn(90);
move();
turn(270);
}
else {
move();
}

}


------------


... gaat het goed. Maar de kat ziet de hond pas als ie in hetzelfde hokje staat. Dat ziet er dan knullig uit. Heeft iemand een idee hoe de kat de hond al kan zien als ie nog niet bij de hond is? ( = de hond zich dus in het hokje ernaast bevindt waar de kat naartoe gaat?)

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

GEVONDEN, maar waarom werkt de overerving niet???

Bericht door admin » 10-02-2017 09:57

Kijk in de code van ANIMAL.
Daar zie je dit:

public boolean inFrontOfDog () {
return inFrontOfAnimal (Dog.class);
}

en dit:

private boolean inFrontOfAnimal (java.lang.Class cls) {
boolean returnvalue = false;
switch(this.getRotation()) {
case SOUTH :
returnvalue = (getOneObjectAtOffset(0, 1, cls) != null);
break;
case EAST :
returnvalue = (getOneObjectAtOffset(1, 0, cls) != null);
break;
case NORTH :
returnvalue = (getOneObjectAtOffset(0, -1, cls) != null);
break;
case WEST :
returnvalue = (getOneObjectAtOffset(-1, 0, cls) != null);
break;
}
return returnvalue;


Die heb ik gekopieerd naar de code van de kant en toen bij de void act:

public void act()
{

if (inFrontOfDog())
{
turn(90);
move();
turn(270);
move();
move();
turn(270);
move();
turn(90);
}
else {
move();
}

}

-----

Toen ging de kat keurig om de honden heen.

Maar wat ik niet begrijp is dat de klasse cat alles moet overnemen van de klasse animal. Waarom moet ik dan die codes vanuit animal naar cat kopieren?

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

Code werkt nu wel zonder dat ik code uit animal hoef te hale

Bericht door admin » 10-02-2017 12:51

De klasse cat neemt alles over van de klasse Animal. In principe hoef je dus geen code te kopieren vanuit de Animal naar de Cat. In eerste instantie moest ik dat echter wel doen, want anders kreeg ik een foutmelding. Ik probeer het zojuist opnieuw en nu werkt de volgende code wel gewoon in de Cat:

public void act()
{

if (inFrontOfDog())
{
turn(90);
move();
turn(270);
move();
move();
turn(270);
move();
turn(90);
}
else {
move();
}

}

Dit is dus het goede antwoord van deze opdracht

Plaats reactie