Reworked Interpreter WIP

This commit is contained in:
weckyy702
2020-12-30 19:24:14 +01:00
parent d0746c0465
commit 248ee14abd
4 changed files with 286 additions and 189 deletions

View File

@@ -1,8 +1,11 @@
//except for this line, this is what interpret_source.load_src returns
importgreenfoot.*;//(World,Actor,GreenfootImage,GreenfootandMouseInfo)
classRoverextendsActor
{
Displayanzeige;
/**
*thisfunctionistobeimplementedbytheuser
*dependingontheneededactions
*/
voidact()
{
S66Nr3(7);
@@ -81,6 +84,11 @@ fahreZeileDreheRunter(true);
}
fahreZeileDreheRunter(false);
}
/**
*DerRoverbewegtsicheinFeldinFahrtrichtungweiter.
*SolltesichinFahrtrichtungeinObjektderKlasseHuegelbefindenoderersichanderGrenzederWeltbefinden,
*dannerscheinteineentsprechendeMeldungaufdemDisplay.
*/
voidfahre()
{
intposX=getX();
@@ -103,6 +111,10 @@ if(posX==getX()&&posY==getY()&&!huegelVorhanden("vorne"))
nachricht("Ichkannmichnichtbewegen");
}
}
/**
*DerRoverdrehtsichum90GradindieRichtung,diemitrichtung(ᅵlinksᅵoderᅵrechtsᅵ)ᅵbergebenwurde.
*SollteeinandererText(String)als"rechts"oder"links"ᅵbergebenwerden,dannerscheinteineentsprechendeMeldungaufdemDisplay.
*/
voiddrehe(Stringrichtung)
{
if(richtung.equals("rechts")){
@@ -115,6 +127,10 @@ setRotation(getRotation()+180);
nachricht("KeinenKorrekteRichtunggegeben!");
}
}
/**
*DerRovergibtdurcheinenWahrheitswert(trueoderfalse)zurᅵck,obsichaufseinerPositioneinObjektderKlasseGesteinbefindet.
*EineentsprechendeMeldungerscheintauchaufdemDisplay.
*/
booleangesteinVorhanden()
{
if(getOneIntersectingObject(Gestein.class)!=null)
@@ -124,6 +140,11 @@ returntrue;
}
returnfalse;
}
/**
*DerRoverᅵberprᅵft,obsichinrichtung("rechts","links",oder"vorne")einObjektderKlasseHuegelbefindet.
*DasErgebniswirdaufdemDisplayangezeigt.
*SollteeinandererText(String)als"rechts","links"oder"vorne"ᅵbergebenwerden,dannerscheinteineentsprechendeMeldungaufdemDisplay.
*/
booleanhuegelVorhanden(Stringrichtung)
{
introt=getRotation();
@@ -161,6 +182,10 @@ nachricht("Befehlnichtkorrekt!");
}
returnfalse;
}
/**
*DerRoverermitteltdenWassergehaltdesGesteinsaufseinerPositionundgibtdiesenaufdemDisplayaus.
*SolltekeinObjektderKlasseGesteinvorhandensein,dannerscheinteineentsprechendeMeldungaufdemDisplay.
*/
voidanalysiereGestein()
{
if(gesteinVorhanden())
@@ -174,10 +199,17 @@ else
nachricht("HieristkeinGestein");
}
}
/**
*DerRovererzeugteinObjektderKlasseᅵMarkierungᅵaufseinerPosition.
*/
voidsetzeMarke()
{
getWorld().addObject(newMarke(),getX(),getY());
}
/**
**DerRovergibtdurcheinenWahrheitswert(trueoderfalse)zurᅵck,obsichaufseinerPositioneinObjektderMarkebefindet.
*EineentsprechendeMeldungerscheintauchaufdemDisplay.
*/
booleanmarkeVorhanden()
{
if(getOneIntersectingObject(Marke.class)!=null)
@@ -206,7 +238,7 @@ voiddisplayAusschalten()
{
getWorld().removeObject(anzeige);
}
protectedvoidaddedToWorld(Worldworld)
voidaddedToWorld(Worldworld)
{
setImage("images/rover.png");
world=getWorld();