diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-07-12 11:31:38 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2024-07-12 11:31:38 +0200 |
| commit | abb1d822eb2bc92214c3b25953546c30d14ac791 (patch) | |
| tree | cb184d090fdc8f3d01b83f6237657148737007ec | |
| parent | 12fd103c85091f1ea947ed5498a3cf8dcd60b75c (diff) | |
| download | unterricht-abb1d822eb2bc92214c3b25953546c30d14ac791.tar.gz unterricht-abb1d822eb2bc92214c3b25953546c30d14ac791.zip | |
add example greenfoot project for the turtle exercise
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/.gitignore | 3 | ||||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/Beere.java | 18 | ||||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/Display.java | 30 | ||||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/Kaktus.java | 22 | ||||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/Marke.java | 19 | ||||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/Schildkroete.java | 146 | ||||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/Wueste.java | 36 | ||||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/boden.png | bin | 0 -> 6421 bytes | |||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/kaktus.png | bin | 0 -> 18071 bytes | |||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/marke.png | bin | 0 -> 12839 bytes | |||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/turtle.png | bin | 0 -> 14434 bytes | |||
| -rw-r--r-- | Info/9/3/Aufgaben/schildkroete_in_der_wueste/project.greenfoot | 100 |
12 files changed, 374 insertions, 0 deletions
diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/.gitignore b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/.gitignore new file mode 100644 index 00000000..d50e007c --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/.gitignore @@ -0,0 +1,3 @@ +*.class +doc/ +*.ctxt diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Beere.java b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Beere.java new file mode 100644 index 00000000..4492b147 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Beere.java @@ -0,0 +1,18 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +public class Beere extends Actor +{ + public Beere() + { + setImage("images/blueberry_2.png"); + getImage().scale(40,40); + } + + /** + * Act - do whatever 'Beere' wants to do. This method is called whenever + * the 'Act' or 'Run' button gets pressed in the environment. + */ + public void act() + { + } +} diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Display.java b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Display.java new file mode 100644 index 00000000..9cf9a571 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Display.java @@ -0,0 +1,30 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
+
+class Display extends Actor
+ {
+ GreenfootImage bild;
+
+ public Display()
+ {
+ setImage("images/nachricht.png");
+ bild = getImage();
+ }
+
+ public void act()
+ {
+
+ }
+
+ public void anzeigen(String text)
+ {
+ loeschen();
+ getImage().drawImage(new GreenfootImage(text, 25, Color.BLACK, new Color(0, 0, 0, 0)),10,10);
+ }
+
+ public void loeschen()
+ {
+ getImage().clear();
+ setImage("images/nachricht.png");
+ }
+
+ }
diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Kaktus.java b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Kaktus.java new file mode 100644 index 00000000..b6138481 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Kaktus.java @@ -0,0 +1,22 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +/** + * Write a description of class Huege here. + * + * @author (your name) + * @version (a version number or a date) + */ +public class Kaktus extends Actor +{ + + public Kaktus() + { + setImage("images/kaktus.png"); + getImage().scale(45,45); + } + + public void act() + { + } +} + diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Marke.java b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Marke.java new file mode 100644 index 00000000..b2bb6879 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Marke.java @@ -0,0 +1,19 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo) + +/** + * Ergänzen Sie hier eine Beschreibung für die Klasse Marke. + * + * @author (Ihr Name) + * @version (eine Versionsnummer oder ein Datum) + */ +public class Marke extends Actor +{ + /** + * Act - tut, was auch immer Marke tun will. Diese Methode wird aufgerufen, + * sobald der 'Act' oder 'Run' Button in der Umgebung angeklickt werden. + */ + public void act() + { + // Ergänzen Sie Ihren Quelltext hier... + } +}
\ No newline at end of file diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Schildkroete.java b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Schildkroete.java new file mode 100644 index 00000000..1274c729 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Schildkroete.java @@ -0,0 +1,146 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +public class Schildkroete extends Actor +{ + //Attribute + public Display anzeige; + int gefressen; + World world; + + //Methoden: + public void treppeAblaufe() + { + + } + + public Schildkroete() + { + setImage("images/turtle.png"); + getImage().scale(50,50); + gefressen = 0; + } + + public void a() { + while(!kaktusVorhanden("rechts")) + { + setzeMarke(); + laufe(); + } + if(!kaktusVorhanden("links") || kaktusVorhanden("rechts")) + { + laufe(); + } + + } + + public void b() { + while(kaktusVorhanden("links")) + { + if(kaktusVorhanden("rechts")) + { + setzeMarke(); + } + laufe(); + } + } + + public void c() { + while(kaktusVorhanden("links")) + { + while(kaktusVorhanden("rechts")) + { + laufe(); + } + setzeMarke(); + laufe(); + } + } + + public void act() + { + } + + /** + * Die Schildkroete bewegt sich ein Feld in Laufrichtung weiter, falls keine Wand und kein Kaktus + * im Weg sind. + */ + public void laufe() + { + int posXAnfang = getX(); + int posYAnfang = getY(); + + if(kaktusVorhanden() == false) + { + move(1); + Greenfoot.delay(1); + } + } + + public boolean kaktusVorhanden(String richtung) { + int rot = getRotation(); + switch(richtung) { + case "links": + turn(-90); + break; + case "rechts": + turn(90); + break; + case "hinten": + turn(180); + break; + case "vorne": + break; + default: + } + boolean res = kaktusVorhanden(); + setRotation(rot); + return res; + } + + /** + * Die Schildkroete überprüft, ob sich vor ihr ein Objekt der Klasse Kaktus befindet. + * Das Ergebnis wird auf dem Display angezeigt. + */ + public boolean kaktusVorhanden() + { + int rot = getRotation(); + + if (rot == 0) + { + if(getOneObjectAtOffset(1,0,Kaktus.class) != null) + { + return true; + } + } + + if (rot==180) + { + if(getOneObjectAtOffset(-1,0,Kaktus.class) != null ) + { + return true; + } + } + + if (rot==90) + { + if(getOneObjectAtOffset(0,1,Kaktus.class) != null) + { + return true; + } + } + + if (rot==270) + { + if(getOneObjectAtOffset(0,-1,Kaktus.class) != null) + { + return true; + } + } + + return false; + } + + public void setzeMarke() { + getWorld().addObject(new Marke(), getX(), getY()); + } +} diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Wueste.java b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Wueste.java new file mode 100644 index 00000000..26685bb1 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/Wueste.java @@ -0,0 +1,36 @@ +import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) + +/** + * Die einzigen aktiven Akteure in der Roboterwelt sind die Roboter. + * Die Welt besteht aus 14 * 10 Feldern. + */ + +public class Wueste extends World +{ + private static int zellenGroesse = 50; + + /** + * Erschaffe eine Welt mit 15 * 12 Zellen und fuege ein Display hinzu. + */ + public Wueste() + { + super(6, 3, zellenGroesse); + setBackground("images/boden.png"); + setPaintOrder(String.class, Schildkroete.class, Beere.class, Kaktus.class, Marke.class); + Greenfoot.setSpeed(20); + + for (int x = 0; x < 5; x++) { + addObject(new Kaktus(), x, 0); + } + + for (int x = 1; x < 6; x++) { + showText(""+x, x, 1); + } + + for (int x = 1; x < 4; x++) { + addObject(new Kaktus(), x, 2); + } + + addObject(new Schildkroete(), 0, 1); + } +}
\ No newline at end of file diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/boden.png b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/boden.png Binary files differnew file mode 100644 index 00000000..0bba5dc6 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/boden.png diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/kaktus.png b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/kaktus.png Binary files differnew file mode 100644 index 00000000..6686ed84 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/kaktus.png diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/marke.png b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/marke.png Binary files differnew file mode 100644 index 00000000..5d734379 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/marke.png diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/turtle.png b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/turtle.png Binary files differnew file mode 100644 index 00000000..de5d4c8f --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/turtle.png diff --git a/Info/9/3/Aufgaben/schildkroete_in_der_wueste/project.greenfoot b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/project.greenfoot new file mode 100644 index 00000000..b0927cd3 --- /dev/null +++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/project.greenfoot @@ -0,0 +1,100 @@ +#Greenfoot project file +class.Beere.image=blueberry.png +class.Kaktus.image=kaktus.png +class.Marke.image=marke.png +class.Schildkroete.image=turtle.png +class.Wueste.image=wiese.png +dependency1.from=Wueste +dependency1.to=Kaktus +dependency1.type=UsesDependency +dependency2.from=Wueste +dependency2.to=Schildkroete +dependency2.type=UsesDependency +dependency3.from=Wueste +dependency3.to=Beere +dependency3.type=UsesDependency +dependency4.from=Wueste +dependency4.to=Marke +dependency4.type=UsesDependency +dependency5.from=Schildkroete +dependency5.to=Display +dependency5.type=UsesDependency +dependency6.from=Schildkroete +dependency6.to=Marke +dependency6.type=UsesDependency +dependency7.from=Schildkroete +dependency7.to=Kaktus +dependency7.type=UsesDependency +editor.fx.0.height=0 +editor.fx.0.width=0 +editor.fx.0.x=0 +editor.fx.0.y=0 +height=1049 +package.numDependencies=7 +package.numTargets=6 +project.charset=windows-1252 +publish.hasSource=false +publish.locked=true +publish.longDesc= +publish.shortDesc= +publish.tags= +publish.title= +publish.url= +readme.height=60 +readme.name=@README +readme.width=49 +readme.x=10 +readme.y=10 +simulation.speed=20 +target1.height=70 +target1.name=Marke +target1.showInterface=false +target1.type=ClassTarget +target1.width=120 +target1.x=0 +target1.y=0 +target2.height=50 +target2.name=Beere +target2.naviview.expanded=false +target2.showInterface=false +target2.type=ClassTarget +target2.width=80 +target2.x=70 +target2.y=10 +target3.height=50 +target3.name=Schildkroete +target3.naviview.expanded=false +target3.showInterface=false +target3.type=ClassTarget +target3.width=90 +target3.x=70 +target3.y=70 +target4.height=50 +target4.name=Kaktus +target4.naviview.expanded=false +target4.showInterface=false +target4.type=ClassTarget +target4.width=80 +target4.x=160 +target4.y=10 +target5.height=50 +target5.name=Wueste +target5.naviview.expanded=true +target5.showInterface=false +target5.type=ClassTarget +target5.width=80 +target5.x=10 +target5.y=250 +target6.height=50 +target6.name=Display +target6.naviview.expanded=true +target6.showInterface=false +target6.type=ClassTarget +target6.width=80 +target6.x=0 +target6.y=0 +version=3.1.0 +width=954 +world.lastInstantiated=Wueste +xPosition=1923 +yPosition=3 |
