aboutsummaryrefslogtreecommitdiff
path: root/Info/9/3/Aufgaben
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-07-12 11:31:38 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-07-12 11:31:38 +0200
commitabb1d822eb2bc92214c3b25953546c30d14ac791 (patch)
treecb184d090fdc8f3d01b83f6237657148737007ec /Info/9/3/Aufgaben
parent12fd103c85091f1ea947ed5498a3cf8dcd60b75c (diff)
downloadunterricht-abb1d822eb2bc92214c3b25953546c30d14ac791.tar.gz
unterricht-abb1d822eb2bc92214c3b25953546c30d14ac791.zip
add example greenfoot project for the turtle exercise
Diffstat (limited to 'Info/9/3/Aufgaben')
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/.gitignore3
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/Beere.java18
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/Display.java30
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/Kaktus.java22
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/Marke.java19
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/Schildkroete.java146
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/Wueste.java36
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/boden.pngbin0 -> 6421 bytes
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/kaktus.pngbin0 -> 18071 bytes
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/marke.pngbin0 -> 12839 bytes
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/turtle.pngbin0 -> 14434 bytes
-rw-r--r--Info/9/3/Aufgaben/schildkroete_in_der_wueste/project.greenfoot100
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
new file mode 100644
index 00000000..0bba5dc6
--- /dev/null
+++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/boden.png
Binary files differ
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
new file mode 100644
index 00000000..6686ed84
--- /dev/null
+++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/kaktus.png
Binary files differ
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
new file mode 100644
index 00000000..5d734379
--- /dev/null
+++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/marke.png
Binary files differ
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
new file mode 100644
index 00000000..de5d4c8f
--- /dev/null
+++ b/Info/9/3/Aufgaben/schildkroete_in_der_wueste/images/turtle.png
Binary files differ
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