improved interpreter WIP

This commit is contained in:
weckyy702
2020-12-28 16:42:30 +01:00
parent c3a61da020
commit 978d4bf9d2
4 changed files with 407 additions and 101 deletions

View File

@@ -1,85 +1,326 @@
public void act()
{
S66Nr3(7);
}
//import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
private void fahreUmHuegel(String richtung)
{
String pri;
String sec;
if(richtung.equals("Hoch")) {
pri = "links";
sec = "rechts";
} else {
if (richtung.equals("Runter")){
pri = "rechts";
sec = "links";
} else {
nachricht("JUNGE DU SPAST!");
return;
}
}
drehe(pri);
fahre();
drehe(sec);
fahre();
fahre();
drehe(sec);
fahre();
drehe(pri);
}
// public class Rover extends Actor
// {
// private Display anzeige;
private void fahreBisHuegel()
{
while(!huegelVorhanden("vorne"))
// /**
// * this function is to be implemented by the user
// * depending on the needed actions
// */
public void act()
{
S66Nr3(7);
}
private void fahreUmHuegel(String richtung)
{
String pri;
String sec;
if(richtung.equals("Hoch")) {
pri = "links";
sec = "rechts";
} else {
if (richtung.equals("Runter")) {
pri = "rechts";
sec = "links";
} else {
nachricht("JUNGE DU SPAST!");
return;
}
}
drehe(pri);
fahre();
}
}
private void fahreZeileDreheHoch()
{
fahreBisHuegel();
fahreUmHuegel("Hoch");
fahreBisHuegel();
drehe("um");
fahreBisHuegel();
fahreUmHuegel("Runter");
fahreBisHuegel();
drehe("rechts");
fahre();
drehe("rechts");
}
private void fahreZeileDreheRunter(boolean geheInNächsteZeile)
{
fahreBisHuegel();
fahreUmHuegel("Runter");
fahreBisHuegel();
drehe("um");
fahreBisHuegel();
fahreUmHuegel("Hoch");
fahreBisHuegel();
if(geheInNächsteZeile) {
drehe("rechts");
drehe(sec);
fahre();
drehe("rechts");
} else {
drehe("um");
fahre();
drehe(sec);
fahre();
drehe(pri);
}
}
private void S66Nr3(int anzahlZeilen)
{
if(anzahlZeilen < 3) {
nachricht("Ich muss mindestens drei Zeilen fahren! :(");
return;
}
fahreZeileDreheHoch();
for(int i = 1; i < anzahlZeilen-1; i++) {
fahreZeileDreheRunter(true);
}
fahreZeileDreheRunter(false);
}
// private void fahreBisHuegel()
// {
// while(!huegelVorhanden("vorne"))
// {
// fahre();
// }
// }
// private void fahreZeileDreheHoch()
// {
// fahreBisHuegel();
// fahreUmHuegel("Hoch");
// fahreBisHuegel();
// drehe("um");
// fahreBisHuegel();
// fahreUmHuegel("Runter");
// fahreBisHuegel();
// drehe("rechts");
// fahre();
// drehe("rechts");
// }
// private void fahreZeileDreheRunter(boolean geheInNächsteZeile)
// {
// fahreBisHuegel();
// fahreUmHuegel("Runter");
// fahreBisHuegel();
// drehe("um");
// fahreBisHuegel();
// fahreUmHuegel("Hoch");
// fahreBisHuegel();
// if(geheInNächsteZeile) {
// drehe("rechts");
// fahre();
// drehe("rechts");
// } else {
// drehe("um");
// }
// }
// private void S66Nr3(int anzahlZeilen)
// {
// if(anzahlZeilen < 3) {
// nachricht("Ich muss mindestens drei Zeilen fahren! :(");
// return;
// }
// fahreZeileDreheHoch();
// //for(int i = 1; i < anzahlZeilen-1; i++) {
// fahreZeileDreheRunter(true);
// //}
// fahreZeileDreheRunter(false);
// }
// // /**
// // * Der Rover bewegt sich ein Feld in Fahrtrichtung weiter.
// // * Sollte sich in Fahrtrichtung ein Objekt der Klasse Huegel befinden oder er sich an der Grenze der Welt befinden,
// // * dann erscheint eine entsprechende Meldung auf dem Display.
// // */
// // public void fahre()
// // {
// // int posX = getX();
// // int posY = getY();
// // if(huegelVorhanden("vorne"))
// // {
// // nachricht("Zu steil!");
// // }
// // else if(getRotation()==270 && getY()==1)
// // {
// // nachricht("Ich kann mich nicht bewegen");
// // }
// // else
// // {
// // move(1);
// // Greenfoot.delay(1);
// // }
// // if(posX==getX()&&posY==getY()&&!huegelVorhanden("vorne"))
// // {
// // nachricht("Ich kann mich nicht bewegen");
// // }
// // }
// // /**
// // * Der Rover dreht sich um 90 Grad in die Richtung, die mit richtung (ᅵlinksᅵ oder ᅵrechtsᅵ) ᅵbergeben wurde.
// // * Sollte ein anderer Text (String) als "rechts" oder "links" ᅵbergeben werden, dann erscheint eine entsprechende Meldung auf dem Display.
// // */
// // public void drehe(String richtung)
// // {
// // if(richtung.equals("rechts")){
// // setRotation(getRotation()+90);
// // }else if(richtung.equals("links")){
// // setRotation(getRotation()-90);
// // } else if(richtung.equals("um")) {
// // setRotation(getRotation()+180);
// // }else {
// // nachricht("Keinen Korrekte Richtung gegeben!");
// // }
// // }
// // /**
// // * Der Rover gibt durch einen Wahrheitswert (true oder false )zurᅵck, ob sich auf seiner Position ein Objekt der Klasse Gestein befindet.
// // * Eine entsprechende Meldung erscheint auch auf dem Display.
// // */
// // public boolean gesteinVorhanden()
// // {
// // if(getOneIntersectingObject(Gestein.class)!=null)
// // {
// // nachricht("Gestein gefunden!");
// // return true;
// // }
// // return false;
// // }
// // /**
// // * Der Rover ᅵberprᅵft, ob sich in richtung ("rechts", "links", oder "vorne") ein Objekt der Klasse Huegel befindet.
// // * Das Ergebnis wird auf dem Display angezeigt.
// // * Sollte ein anderer Text (String) als "rechts", "links" oder "vorne" ᅵbergeben werden, dann erscheint eine entsprechende Meldung auf dem Display.
// // */
// // public boolean huegelVorhanden(String richtung)
// // {
// // int rot = getRotation();
// // if (richtung=="vorne" && rot==0 || richtung=="rechts" && rot==270 || richtung=="links" && rot==90)
// // {
// // if(getOneObjectAtOffset(1,0,Huegel.class)!=null && ((Huegel)getOneObjectAtOffset(1,0,Huegel.class)).getSteigung() >30)
// // {
// // return true;
// // }
// // }
// // if (richtung=="vorne" && rot==180 || richtung=="rechts" && rot==90 || richtung=="links" && rot==270)
// // {
// // if(getOneObjectAtOffset(-1,0,Huegel.class)!=null && ((Huegel)getOneObjectAtOffset(-1,0,Huegel.class)).getSteigung() >30)
// // {
// // return true;
// // }
// // }
// // if (richtung=="vorne" && rot==90 || richtung=="rechts" && rot==0 || richtung=="links" && rot==180)
// // {
// // if(getOneObjectAtOffset(0,1,Huegel.class)!=null && ((Huegel)getOneObjectAtOffset(0,1,Huegel.class)).getSteigung() >30)
// // {
// // return true;
// // }
// // }
// // if (richtung=="vorne" && rot==270 || richtung=="rechts" && rot==180 || richtung=="links" && rot==0)
// // {
// // if(getOneObjectAtOffset(0,-1,Huegel.class)!=null && ((Huegel)getOneObjectAtOffset(0,-1,Huegel.class)).getSteigung() >30)
// // {
// // return true;
// // }
// // }
// // if(richtung!="vorne" && richtung!="links" && richtung!="rechts")
// // {
// // nachricht("Befehl nicht korrekt!");
// // }
// // return false;
// // }
// // /**
// // * Der Rover ermittelt den Wassergehalt des Gesteins auf seiner Position und gibt diesen auf dem Display aus.
// // * Sollte kein Objekt der Klasse Gestein vorhanden sein, dann erscheint eine entsprechende Meldung auf dem Display.
// // */
// // public void analysiereGestein()
// // {
// // if(gesteinVorhanden())
// // {
// // nachricht("Gestein untersucht! Wassergehalt ist " + ((Gestein)getOneIntersectingObject(Gestein.class)).getWassergehalt()+"%.");
// // Greenfoot.delay(1);
// // removeTouching(Gestein.class);
// // }
// // else
// // {
// // nachricht("Hier ist kein Gestein");
// // }
// // }
// // /**
// // * Der Rover erzeugt ein Objekt der Klasse ᅵMarkierungᅵ auf seiner Position.
// // */
// // public void setzeMarke()
// // {
// // getWorld().addObject(new Marke(), getX(), getY());
// // }
// // /**
// // * *Der Rover gibt durch einen Wahrheitswert (true oder false )zurᅵck, ob sich auf seiner Position ein Objekt der Marke befindet.
// // * Eine entsprechende Meldung erscheint auch auf dem Display.
// // */
// // public boolean markeVorhanden()
// // {
// // if(getOneIntersectingObject(Marke.class)!=null)
// // {
// // return true;
// // }
// // return false;
// // }
// // public void entferneMarke()
// // {
// // if(markeVorhanden())
// // {
// // removeTouching(Marke.class);
// // }
// // }
// // private void nachricht(String pText)
// // {
// // if(anzeige!=null)
// // {
// // anzeige.anzeigen(pText);
// // Greenfoot.delay(1);
// // anzeige.loeschen();
// // }
// // }
// // private void displayAusschalten()
// // {
// // getWorld().removeObject(anzeige);
// // }
// // protected void addedToWorld(World world)
// // {
// // setImage("images/rover.png");
// // world = getWorld();
// // anzeige = new Display();
// // anzeige.setImage("images/nachricht.png");
// // world.addObject(anzeige, 7, 0);
// // if(getY()==0)
// // {
// // setLocation(getX(),1);
// // }
// // anzeige.anzeigen("Ich bin bereit");
// // }
// // class Display extends Actor
// // {
// // GreenfootImage bild;
// // public Display()
// // {
// // bild = getImage();
// // }
// // public void act()
// // {
// // }
// // public void anzeigen(String pText)
// // {
// // loeschen();
// // getImage().drawImage(new GreenfootImage(pText, 25, Color.BLACK, new Color(0, 0, 0, 0)),10,10);
// // }
// // public void loeschen()
// // {
// // getImage().clear();
// // setImage("images/nachricht.png");
// // }
// // }
// // public class Direction {
// // Direction(int val){
// // this.value = val;
// // }
// // final int value;
// // };
// // }