Initial commit

This commit is contained in:
Dirk Zechnall 2025-01-04 08:36:31 +01:00
commit 5eacf5f0de
212 changed files with 13494 additions and 0 deletions

8
.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
*.class
*.ctxt
*.sh
repo.adoc
*.~lock
/alt
Gemfile
Gemfile.lock

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,112 @@
<html>
<head>
<title>Bildnachweise</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<body>
<h2>Akku</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Akku.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=312747">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=312747">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/batterie-elektrische-strom-positiv-312747/">https://pixabay.com/de/vectors/batterie-elektrische-strom-positiv-312747/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Fass+Atommuell</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Fass.png" style="float:left"> <img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Atommuell.png" style="float:left">
Bild von <a href="https://pixabay.com/users/OpenClipart-Vectors-30363/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=146440">OpenClipart-Vectors</a> auf <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=146440">Pixabay</a>
<br>URL: <a href="https://pixabay.com/vectors/oil-barrel-black-mineral-oil-146440/">https://pixabay.com/vectors/oil-barrel-black-mineral-oil-146440/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
</body>
<h2>Feuer</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Feuer.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Platten mit und ohne Knöpfe/Schalter usw</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Wand.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Rufknopf.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\RufknopfAus.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\SchalterEin.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\SchalterAus.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Schloss.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Stromquelle1.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Stromquelle2.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Stromquelle3.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Stromquelle4.png">
<br>Bild auf Grundlage von <a href="https://pixabay.com/users/stux-12364/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=186943">Thanks for your Like • donations welcome</a> auf <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=186943">Pixabay</a>
<br>URL: <a href="https://pixabay.com/photos/mdf-platte-structure-fund-wood-186943/">https://pixabay.com/photos/mdf-platte-structure-fund-wood-186943/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Strom</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Strom.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br><br>
<h2>Steine</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Steine.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=48279">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=48279">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/felsen-felsbrocken-stein-48279/">https://pixabay.com/de/vectors/felsen-felsbrocken-stein-48279/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Roboter</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Roboter.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Robby.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Robita.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Robocount.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Robson.png">
<br>Bild auf <a href="https://publicdomainvectors.org">Public Domain Vectors</a>
<br>URL: <a href="https://publicdomainvectors.org/de/kostenlose-vektorgrafiken/Comic-Roboter/47643.html">https://publicdomainvectors.org/de/kostenlose-vektorgrafiken/Comic-Roboter/47643.html</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Public Domain
<h2>Feuerlöscher</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Feuerloescher.png" style="float:left">
Bild von <a href="https://pixabay.com/users/JJuni-27151/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1139909">JJuni</a> auf <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1139909">Pixabay</a>
<br>URL: <a href="https://pixabay.com/illustrations/fire-extinguisher-fire-fire-truck-1139909/">https://pixabay.com/illustrations/fire-extinguisher-fire-fire-truck-1139909/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Bombe</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Bombe.png" style="float:left">
Bild von<a href="https://pixabay.com/fr/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33424">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/fr/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33424">Pixabay</a>
<br>URL: <a href="https://pixabay.com/fr/vectors/bombe-engin-explosif-grenade-33424/">https://pixabay.com/fr/vectors/bombe-engin-explosif-grenade-33424/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Diamant</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Diamant.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Wild0ne-920941/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1221161">M. Maggs</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1221161">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/gems-edelsteine-wertvolle-juwel-1221161/">https://pixabay.com/de/vectors/gems-edelsteine-wertvolle-juwel-1221161/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Einsatzleiter</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Person.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/kasiagrafik-10628923/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3812661">kasiagrafik</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3812661">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/illustrations/feuerwehrmann-feuer-löschen-3812661/">https://pixabay.com/de/illustrations/feuerwehrmann-feuer-löschen-3812661/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Schraube</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Schraube.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33597">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33597">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/schrauben-metall-eisen-verschluss-33597/">https://pixabay.com/de/vectors/schrauben-metall-eisen-verschluss-33597/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Portal</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Portal.png" style="float:left">
Grundlage des Bildes auf <a href="https://www.maxpixel.net">Max Pixel</a>
<br>URL: <a href="https://www.maxpixel.net/Picture-Frame-Ring-Round-Circle-Shape-Pair-2885023">https://www.maxpixel.net/Picture-Frame-Ring-Round-Circle-Shape-Pair-2885023</a>
<br>Lizenz: <a href="https://creativecommons.org/share-your-work/public-domain/cc0/">CC0 - Public Domain </a>
<h2>Schlüssel</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Schluessel.png" style="float:left">
Bild auf <a href="https://publicdomainvectors.org">Public Domain Vectors</a>
<br>URL: <a href="https://publicdomainvectors.org/en/free-clipart/Vector-clip-art-of-grey-shaded-metal-door-key/21166.html">https://publicdomainvectors.org/en/free-clipart/Vector-clip-art-of-grey-shaded-metal-door-key/21166.html</a>
<br>Lizenz: Public Domain
<h2>Aufzug</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Aufzug.png" ><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Aufzugschacht.png" >
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Aufzugschacht2.png" >
<br> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Bodenplatten</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\bluerock.png" ><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\bluerock1.png" ><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\bluerock2.png" ><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\bluerock3.png" ><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Bodenplatte.png" ><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Bodenplatte1.png" ><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Kontaktplatte.png" >
<br> Selbst gezeichnet (Thomas Schaller, ZPG Informatik) mit Muster aus Gimp 2.0
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Ölfleck</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Oelfleck.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Fragezeichen</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Gegenstand.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Brennstab</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Brennstab.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Türen</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Tuer2.png" style="float:left"> <img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Tuer1.png" style="float:left">Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br>
<br>
<h2>Sperrfläche</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\warnung1.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br><br>
<h2>Steinwände</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\Stein.png" style="float:left">
Bild auf Grundlage von <a href="https://pixabay.com/de/users/skeeze-272447/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1429207">skeeze</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1429207">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/photos/kiesel-steine-felsen-landschaftsbau-1429207/">https://pixabay.com/de/photos/kiesel-steine-felsen-landschaftsbau-1429207/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Pfeile</h2>
<img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\pfeil0.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\pfeil90.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\pfeil180.png"><img src="..\3_Vorlagen_Tauschordner\01_ReaktorRobot_GF360_Szenario_Roh\images\pfeil270.png">
Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br><br>
</html>

View file

@ -0,0 +1,50 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Die Klasse AB1 ist eine Unterklasse von Roboter.
* Sie erbt damit alle Attribute und Methoden der Klasse Roboter.
*/
public class AB1 extends Roboter
{
public void einsVor() {
this.verbraucheEnergie(4);
super.einsVor();
}
public void dreheRechts() {
super.dreheRechts();
}
public void dreheLinks() {
super.dreheLinks();
}
public void schraubeAufnehmen() {
if (istAufSchraube()) super.aufnehmen();
}
public void schraubeAblegen() {
super.ablegen("Schraube");
}
public int getAnzahlSchrauben() {
return super.getAnzahl("Schraube");
}
public boolean istAufSchraube() {
return super.istAufGegenstand("Schraube");
}
public boolean istVorratLeer() {
return super.getAnzahl("Schraube")==0;
}
public void akkuAufnehmen() {
if (istAufGegenstand("Akku")) super.aufnehmen();
}
public void benutzeAkku() {
if (this.getAnzahl("Akku")>0) benutze("Akku");
}
}

View file

@ -0,0 +1,82 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class AB10 extends AB3
{
/*#
* Aufgaben 1, 2 und 3: Patrouille
*/
public void rundeDrehen() {
int anzGemacht;
anzGemacht = 0;
while (anzGemacht < 3) {
laufeBisWand();
dreheUm();
anzGemacht++;
}
}
/*#
* Aufgabe 4: Zu Befehl!
*/
public void dreheAnzahlRunden(int anz) {
// Hier kommt dein Quelltext hin
}
/*#
* Aufgabe 5: Lauf x Schritte
*/
/*#
* Aufgabe 6: Was tut es?
* Analysiere diese Methode
*/
public void wastutes(int anz) {
int i=0;
while(i<anz) {
while(!this.istWandVorne()) {
aufnehmen();
einsVor();
}
dreheUm();
i++;
}
}
/*#
* Aufgabe 7: Aufräumen
*/
public void aufraeumen() {
}
/*
* Hilfsmethode, die den Aufzug holt.
*/
public void holeAufzug() {
if(!istVorne("Schalter")) {
dreheUm();
}
benutze("Schalter");
}
/*#
* Aufgabe 8: Aufzug
*/
/*
* Hilfesmethode für den Einsatz 10
*/
public boolean einsVorSammle() {
if (istVorneFrei() && getEnergie()>0) {
einsVor();
if(istAufGegenstand("Diamant")) {aufnehmen();}
return true;
} else {
return false;
}
}
/*#
* Einsatz 10 bitte beim Einsatzleiter implementieren
*/
}

View file

@ -0,0 +1,61 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class AB2 extends Roboter
{
/*#
* Aufgabe 3: Diese Anweisungen stimmen noch nicht wirklich
* Verbessere und Ergaenze.
*/
public void dreheRunde()
{
einsVor();
einsVor();
einsVor();
einsVor();
dreheLinks();
einsVor();
einsVor();
dreheLinks();
einsVor();
einsVor();
dreheLinks();
einsVor();
einsVor();
}
/*#
* Aufgabe 4: Drehe um
*/
public void dreheUm()
{
// Hier kommen die Befehl für eine 180° Drehung hin
}
/*#
* Aufgabe 5: Sammle Schrauben
*/
public void sammle3()
{
einsVor();
aufnehmen();
einsVor();
// Hier ergänzen
}
/*#
* Aufgabe 6: Haken schlagen
* Hier ist Platz fuer deine erste eigens geschriebene Methode!
*/
// Schau dir die Methoden oben an und gehe analog vor:
/*#
* Aufgabe 7: Vier Dinge sammeln
*/
/*#
* Einsatz 2: Bitte den Namen "einsatz2" nicht aendern!
*/
public void einsatz2() {
// Hier kommte der Code für den ersten echten Einsatz hin:
}
}

View file

@ -0,0 +1,64 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class AB3 extends Roboter
{
/*#
* Aufgabe 1: Feuer loeschen
*/
public void loesche() {
einsVor();
aufnehmen();
// Hier fehlt noch was:
}
/*#
* Aufgaben 3 & 4: Vor bis zum Feuer (wo auch immer das ist)
*/
public void vorBisFeuer()
{
while(!istVorne("Feuer")) {
einsVor();
}
}
/*#
* Aufgabe 5: Feuersbrunst loeschen
*/
// Hier kommt deine Methode loescheReihe() hin:
/*#
* Aufgabe 6: Teste Reichweite eines Feuerloeschers
*/
// Hier kommt die Methode testeReichweite() hin:
/*#
* Aufgabe 7: Feuerloescher einsammeln
*/
public void sammleLoescher()
{
// Hier bitte deinen Quelltext einfügen
}
/*#
* Hilfsmethode fuer Aufgabe 8
*/
public void laufeBisWand() {
// Hier bitte deinen Quelltext einfügen
}
/*#
* Aufgabe 8: Homerun
*/
public void laufeBisSackgasse() {
// Hier bitte deinen Quelltext einfügen
}
/*#
* Einsatz 3: Bitte den Namen nicht aendern!
*/
public void einsatz3() {
// Hier bitte deinen Quelltext einfügen
}
}

View file

@ -0,0 +1,78 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class AB4 extends Roboter
{
/*#
* Aufgabe 1: Spur invertieren
*/
/**
* Der Roboter tauscht aus. Wo eine Schraube liegt, hebt er sie auf.
* Wo keine liegt, legt er eine ab, wenn er noch Schrauben
* in seinem Vorrat hat.
*/
public void tausche() {
if (istAufGegenstand("Schraube")) {
aufnehmen();
}
else {
ablegen("Schraube");
}
}
/**
* Der Roboter macht mehrere Dinge. Beschreibe in diesem Kommentar:
*
*/
public void tauscheUndVor() {
tausche();
if (istVorneFrei()) {
einsVor();
}
// else ist nicht noetig, weil in dem Fall nichts gemacht wird!
}
/*#
* Aufgabe 2: Tausche die Schraubenreihe bis zur Wand
*/
public void tauscheBisWand() {
}
/*#
* Aufgabe 3: Fleckenfrei
*/
// Hier kommt die Methode umgeheOelfleck() hin:
/*#
* Aufgabe 4: Schluessel aufheben
*/
// Hier kommt die Methode sammleSchluessel() hin:
/*#
* Aufgabe 5: Sesam oeffne dich
*/
// Hier kommt die Methode oeffneTuer() hin:
/*#
* Hilfsmethode fuer Aufgabe 9
*/
public void laufeBisWand() {
while(istVorneFrei()) {
einsVor();
}
}
/*#
* Aufgabe 9: Labyrinth
*/
// Hier kommt die Methode labyrinth() hin:
/*#
* Einsatz 4: Bitte den Namen nicht aendern!
*/
public void einsatz4() {
// Füge hier deinen Quelltext ein
}
}

View file

@ -0,0 +1,81 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class AB5 extends Roboter
{
/*#
* Aufgabe 1, 2, 3 und 10: Upgrade 1 - ein neuer Sensor wird erstellt
*/
public boolean istFassVorne() {
// Aufgabe 3a
if (istVorne("Fass")) {
// Aufgabe 3b
return true;
} else {
// Aufgabe 3b
return false;
}
// Aufgabe 3c
}
/*#
* Aufgabe 4: Rueckspiegel
*/
public boolean istFassHinten() {
if (istVorne("Fass")) {
return true;
}else {
return false;
}
}
/*#
* Aufgabe 5: Out of Power
*/
public boolean istEnergieSchwach() {
// Hier fehlt noch einiges!
return true;
}
/*#
* Aufgabe 6: Heavy Duty
*/
// Hier ist Platz fuer die Methode istSchwerBeladen():
/*#
* Aufgabe 7 und 11: Look Ahead - Upgrade 2
*/
// Hier ist Platz fuer die Methode istVorFassFrei():
/*#
* Aufgabe 8: Aufraeumen
*/
// Hier ist Platz fuer die Methode schiebeFassBisWand():
/*#
* Aufgabe 9: Fuehrerschein
*/
// Hier ist Platz fuer die Methode istKreuzung():
public void geheBisKreuzung() {
}
/*#
* Aufgabe 12: Wie koennte man diese Methode nennen?
*/
// Hier ist Platz fuer die Methode ???():
/*#
* Einsatz 5: Bitte den Namen nicht aendern!
*/
public void einsatz5() {
}
}

View file

@ -0,0 +1,110 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class AB6_AB7 extends Roboter
{
// Eigenschaften eines AB6 - Objektvariablen (Attribute) werden deklariert:
private int schritte;
// AB6 - Aufgabe 8: Hier wird das Attribut drehungen deklariert:
/*#
* Konstruktor eines AB6: Der Startzustand wird definiert
*/
public AB6_AB7() {
// Startzustand eines AB6 - Objektvariablen werden initialiaiert:
this.schritte = 0;
// AB6 - Aufgabe 8: Initialisiere das Attribut drehungen hier:
}
/*#
* AB6 - Beispiel Zählen,
* AB7 - Aufgabe 4: Super
*/
public void einsVorMitZaehlen() {
// Das Attribut Schritte muss um eins erhoeht werden und dann die alte einsVor-Methode des AB6-Roboters aufgerufen werden:
this.schritte++;
einsVor();
}
/*#
* AB6 - Aufgabe 7: Schrittezaehler
* AB7 - Aufgabe 5: Brennstaebe zaehlen
*/
public void bisWandMitZaehlen() {
}
/*#
* AB6 - Aufgabe 8: Drehzaehler
* AB7 - Aufgabe 6: Standardmethoden überschreiben
*/
public void dreheRechtsMitZaehlen() {
}
public void dreheLinksMitZaehlen() {
}
/*#
* AB6 - Aufgabe 9: Eine get-Methode
*/
public int getSchritte() {
return 0;
}
/*#
* AB6 - Aufgabe 10: Deine get-Methode
*/
// Hier kommt deine get-Methode fuer die Anzahl der Drehungen hin.
// Benenne sie sinnvoll:
/*#
* Liefert die Anzahl der gezählten Brennstäbe zurück
* AB7 - Aufgabe 5: Brennstaebe zaehlen
*/
public int getBrennstaebe() {
return 0;
}
/*#
* AB6 - Einsatz 6:
*/
public void einsatz6() {
}
/*#
* Weitere Methoden zum AB7:
*/
/*#
* AB7 - Aufgabe 1: Kreuzungen zaehlen (aus AB3)
*/
/*#
* AB7 - Aufgabe 7: Fass links
*/
// Hier kommt die Methode istFassLinks() hin:
/*#
* AB7 - Aufgabe 8: Standardmethoden überschreiben (istWandVorne(), istWandLinks())
*/
/*#
* AB7 - Hilfsmethode für Einsatz 7:
*/
public boolean istWandLinks() {
// Diese Methode muss so erweitert werden, dass sie auch Fässer auf der linken Seite erkennt.
return super.istWandLinks();
}
/*#
* AB7 - Einsatz 7:
*/
public void einsatz7(){
}
}

View file

@ -0,0 +1,110 @@
import greenfoot.*;
public class AB8 extends AB5
{
private int zaehler1;
private double wert;
public AB8() {
this.zaehler1 = 0;
this.wert = 0.0;
}
/*#
* Aufgabe 1: Zwei Methoden, die fast das gleiche machen ...
*/
public int zaehleSchritteBisWand1() {
while(!istWandVorne()) {
this.zaehler1++;
einsVor();
}
dreheUm();
return this.zaehler1;
}
public int zaehleSchritteBisWand2() {
int zaehler2;
zaehler2 = 0;
while(!istWandVorne()){
zaehler2++;
einsVor();
}
dreheUm();
return zaehler2;
}
/*#
* Aufgabe 5: Summe der x- und y-Koordinate
*/
public int gibPositionssumme() {
int x;
int y;
int summe;
x = getX();
y = getY();
summe = x + y;
return summe;
}
/*#
* Aufgabe 6: Abstabdsberechnungen
*/
public int gibLaenge() {
// Loesche die Return-Zeile und beginne mit Aufgabe 6
return 0;
}
/*#
* Aufgabe 7: Flaeche
*/
public int gibRaumgroesse() {
// Loesche die Return-Zeile und beginne mit Aufgabe 7
return 0;
}
/*#
* Aufgabe 8:
*/
public boolean istFassRechts() {
// Loesche die Return-Zeile und beginne mit Aufgabe 8
return false;
}
public int gibLaengeFassReihe() {
// Loesche die Return-Zeile und mache weiter mit Aufgabe 8
return 0;
}
public int gibAnzahlFaesser() {
// Loesche die Return-Zeile und vervollstaendige Aufgabe 8
return 0;
}
/*#
* Aufgabe 10: Sammler
*/
public void sammeln() {
}
// Hier muss noch eine get-Methode hin:
/*#
* Aufgabe 11: Finanzamt
*/
public double getMehrwertSteuer() {
// Loesche die Return-Zeile und vervollstaendige Aufgabe 11
return 0.0;
}
/*#
* Einsatz 8: Den Namen bitte nicht aendern!
*/
public int einsatz8() {
int anzahlGelb;
anzahlGelb = 0;
// Hier kommen deine Anweisungen hin:
return anzahlGelb;
}
}

View file

@ -0,0 +1,63 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
public class AB9 extends Roboter
{
/**
* Hilfesmethode zum Holen des Aufzugs.
*/
public void holeAufzug() {
if(!istVorne("Schalter")) {
dreheUm();
}
benutze("Schalter");
}
/*#
* Aufgabe 3: Drehe Roboter
*/
public void dreheRoboter(int richtung) {
// Hier kommt dein Quelltext hin
}
/*#
* Aufgabe 4: Laufe zu X-Position
*/
public void laufeZuXPos(int x) {
//Hier kommt dein Quelltext hin
}
/*#
* Aufgabe 5: Fahre Aufzug
*/
public void fahreAufzug(int stockwerke, boolean abwaerts) {
// Hier kommt dein Quelltext hin
}
/*#
* Aufgabe 6: Fahre ins Stockwerk
*/
/*#
* Aufgabe 7: Bombe sichern
*/
/*#
* Aufgabe 8: Sprengen
*/
/*#
* Aufgabe 9: Legen
* Hier darfst du mal ganz alleine eine Methode mit Parametern implementieren ;-)
*/
/*#
* Platz fuer weitere Methode(n), die du eventuell fuer den Einsatz 9 benoetigst:
*/
}

View file

@ -0,0 +1,58 @@
import greenfoot.*;
import java.util.List;
/**
* Spezieller Schalter zum Rufen eins Aufzugs.
*
* @author Thomas Schaller
* @version 28.06.2017 V1.0
*/
public class Aufzugknopf extends Schalter
{
Gegenstand aufzug;
int stockwerk;
/**
* Konstruktor Aufzugknopf
*/
public Aufzugknopf(World w)
{
super(w);
aufzug = null;
}
/**
* Setzt den dazugehörigen Aufzug
*
* @param aufzug Ein Gegenstand vom Typ Aufzug
*/
public void setAufzug(Gegenstand aufzug, int stockwerk)
{
this.aufzug = aufzug;
this.stockwerk = stockwerk;
}
public void rufeAufzug() {
List<Actor> beiAufzug = aufzug.getWorld().getObjectsAt(aufzug.getX(), aufzug.getY(), Actor.class);
while(aufzug.getY() != stockwerk) {
int neuy =aufzug.getY()-(aufzug.getY()-stockwerk)/Math.abs(aufzug.getY()-stockwerk);
for(Actor a : beiAufzug) {
if(a != aufzug)
a.setLocation(aufzug.getX(), neuy);
}
aufzug.setLocation(aufzug.getX(), neuy);
Greenfoot.delay(1);
}
}
/** Schaltet den Schalter um, d.h. von on auf off oder umgekehrt
*/
public void umschalten() {
anschalten();
Greenfoot.delay(1);
rufeAufzug();
ausschalten();
Greenfoot.delay(1);
}
}

View file

@ -0,0 +1,71 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
public class EinsatzLeiter extends Actor
{
// Hier werden alle Roboter aufgelistet, denen der Einsatzleiter Befehle erteilen kann:
AB9 legeRoboter; //Legeroboter
AB9 sprengRoboter1; //Sprengroboter 1
AB9 sprengRoboter2; //Sprengroboter 2
AB9 aufzugRoboter; //Aufzugroboter
// Roboter für Einsatz 10
AB10 roboter1;
AB10 roboter2;
AB10 roboter3;
/*#
* Aufgabe 10: Anweisung 1
* Hier werden Methoden am sprengRoboter1 aufgerufen.
* Tipp: Schreibe sprengRoboter1. und druecke STRG+Leertaste --> Schau mal, welche Methoden du alle zur Verfuegung hast ...
*/
public void holeBombeUndSprenge (int xBombe, int yBombe, int xPos, int yPos){
// Hinweis:
// Der sprengRoboter1 bekommt den Befehl holeBombeUndKehreZurueck(bx, by), wenn du vorher beim AB9-Roboter programmiert hast.
// (bx|by) sind die Koordinaten der Bombe --> das muss dann der Methodenaufrufer eingeben (also du spaeter,
// wenn du am EinsatzLeiter diese Methode aufrufst): sprengRoboter1.holeBombeUndKehreZurueck(bx, by);
// Gib dem sprengRoboter1 den Befehl zum Sprengen an der Position (sx,sy):
// Kombiniere nun die richtigen Methodenaufrufe beim Aufzug- und Sprengroboter.
}
/*#
* Ab hier kannst du Hilfs-Methoden fuer den Einsatz 9+10 implementieren:
*/
/*#
* Einsatz 9:
*/
public void einsatz9() {
// Hier kommt dein Quelltext hin
}
/*#
* Einsatz 10:
*/
public void einsatz10() {
// Hier kommt dein Quelltext hin
}
/*#
* -------------------------------------------------------------------
* Bitte so lassen - diese Methode wird nur von euren Lehrer verwendet
*/
public void nehmeKontaktAuf() {
List<AB9> l9 = ((RoboterWelt)getWorld()).getObjects(AB9.class);
if (l9.size()>0) {
aufzugRoboter = l9.get(0);
sprengRoboter1 = l9.get(1);
sprengRoboter2 = l9.get(2);
legeRoboter = l9.get(3);
}
List<AB10> l10 = ((RoboterWelt)getWorld()).getObjects(AB10.class);
if (l10.size()>0) {
roboter1 = l10.get(0);
roboter2 = l10.get(1);
roboter3 = l10.get(2);
}
}
}

View file

@ -0,0 +1,145 @@
import greenfoot.*;
import java.util.*;
import javax.swing.JOptionPane;
/** Die Klasse Gegenstand fasst alle in der Welt liegenden Actors zusammen,
* die bewegt werden können.
*/
public class Gegenstand extends Actor
{
private int typ;
private static String[] typen = {"Akku","Schraube","Brennstab","Schluessel","Oelfleck","Portal","Strom","Feuer","Feuerloescher","Fass","Atommuell","Bombe", "Kontaktplatte","Aufzug","Diamant"};
private boolean[] moveable = {true, true, true, true, false, false, false, false, true, false, false, true, false, false, true};
private int[] schaden = {0, 0, 0, 0, 20, 0, 50, 40, 0, 0, 0, 0, 0, 0, 0};
private int[] lebensdauer = {1, 1, 1, 1, 0, 1000, 0, 0, 5, 1000, 1000,1, 1000, 1000,1000};
private Schalter schalter = null;
/** erzeugt einen neuen Gegenstand vom angegeben Typ
* @param name Typ des Gegenstands ("Akku","Schraube","Brennstab","Schluessel","Oelfleck","Portal","Strom","Feuer","Feuerloescher","Fass","Atommuell","Bombe", "Kontaktplatte", "Aufzug", "Diamant")
*/
public Gegenstand(String name) {
super();
this.typ = -1;
for(int i = 0; i < typen.length; i++) {
if (name.equals(typen[i])) {
this.typ = i;
}
}
if(this.typ == -1) {
JOptionPane.showMessageDialog(null, "Ich kenne kein(e) "+name+". Daher erzeuge ich einen Akku.", "Meldung!",
JOptionPane.INFORMATION_MESSAGE);
this.typ = 0;
}
this.setImage("images/"+typen[typ]+".png");
}
/** erzeugt einen Standardgegenstand (Akku)
*/
public Gegenstand() {
super();
this.typ = 0;
this.setImage("images/Akku.png");
}
/** untersucht, ob name eine korrekte Bezeichnug für einen Gegenstand ist
* @return erg true, wenn name korrekt ist
*/
public static boolean istGegenstand(String name) {
boolean erg = false;
for(int i = 0; i < typen.length; i++) {
if (name.equals(typen[i])) {
erg = true;
}
}
return erg;
}
/** liefert den Typ des Gegenstands
* @return Typ ("Akku","Schraube","Brennstab","Schluessel","Oelfleck","Portal","Strom","Feuer","Feuerloescher","Fass","Atommuell","Bombe", "Kontaktplatte", "Aufzug", "Diamant")
*/
public String getName() {
return this.typen[typ];
}
/** liefert, ob der Gegenstand vom Roboter aufgenommen werden kann
* @return true, wenn der Gegenstand weggetragen werden darf.
*/
public boolean istBeweglich() {
return this.moveable[typ];
}
/** liefert den Schaden an der Energieversorgung, wenn der Roboter mit dem Gegenstand
* auf einem Feld ist.
* @return abgezogen Energiepunkte
*/
public int getSchaden() {
return this.schaden[typ];
}
/** liefert die Anzahl der Einsätze bevor der Gegenstand verbraucht ist
* @return z.B. 1 für Akku, 5 für Feuerlöscher
*/
public int getLebensdauer() {
return this.lebensdauer[typ];
}
/** liefert einen Schalter, der mit diesem Gegenstand verbunden ist (z.B. bei Kontaktplatten)
* @return Schalterobjekt
*/
public Schalter getSchalter() {
return this.schalter;
}
/** Verbindet diese Objekt mit einem Schalter (z.B. bei Kontaktplatten)
* @param s Schalterobjekt
*/
public void setSchalter(Schalter s) {
this.schalter = s;
}
/** Benutzt das Objekt und setzt dadurch die Lebensdauer herunter
*/
public void benutze() {
this.lebensdauer[typ]--;
}
// Systembedingte Routinen
/**
* Wird aufgerufen, wenn der Roboter in die Welt gesetzt wird;
* erweitert nach Vorschlag P.Henriksen 29.6.08
*/
protected void addedToWorld(World world) {
// Roboter kann nicht auf eine Wand oder einen anderem Roboter gesetzt werden
Actor wand = getOneObjectAtOffset(0, 0, Wand.class);
if (wand != null) {
world.removeObject(this);
}
}
/**
* setLocation(x,y) fuer Roboter wird ueberschrieben, um nicht auf Wand oder
* anderen Roboter ziehen zu koennen!
* -- setzt den Roboter auf eine Kachel, deren Spalte x sowie Reihe y du
* hier vorgibst. Die Nummerierung beginnt jeweils bei 0 !!)
*/
public void setLocation(int x, int y) {
List wand = getWorld().getObjectsAt(x, y, Wand.class);
List g = getWorld().getObjectsAt(x,y, Gegenstand.class);
if (wand.isEmpty() && g.isEmpty()) {
super.setLocation(x, y);
}
}
/* setLocation(x,y) und setRotation(x) koennen nicht verborgen werden,
* weil sie schon in der Oberklasse Actor public sind.
*/
/**
* setRotation(x) fuer Roboter wird verhindert!
* Es ist unnoetig, da Roboter sich nur in vier Richtungen drehen koennen!
*/
public void setRotation(int x) {
// nichts machen!!
}
}

View file

@ -0,0 +1,23 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot und MouseInfo)
/**
* Ergänzen Sie hier eine Beschreibung für die Klasse Message.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class Message extends Actor
{
/**
* Act - tut, was auch immer Message tun will. Diese Methode wird aufgerufen,
* sobald der 'Act' oder 'Run' Button in der Umgebung angeklickt werden.
*/
public Message (String text) {
GreenfootImage t = new GreenfootImage(text,30, new Color(255,255,255),new Color(200,100,100,0));
GreenfootImage mitRand = new GreenfootImage(t.getWidth()+60, t.getHeight()+30);
mitRand.setColor(new Color(150,50,50,220));
mitRand.fillRect(0,0, mitRand.getWidth(), mitRand.getHeight());
mitRand.drawImage(t, 30, 15);
setImage(mitRand);
}
}

View file

@ -0,0 +1,196 @@
import java.io.*;
import java.util.*;
/**
* Die Klasse ReadWrite erstellt geheimCodes und steuert damit den Ablauf
* und die Reihenfolge der Einsaetze
*/
class ReadWrite
{
private String dateiName;
/** Erzeugt neues Dateizugriffsobjekt
*/
public ReadWrite () {
dateiName = "secret";
}
/** Schreibt einen neuen Levelstand in die Datei, wenn dieser höher als der bisherige ist
* (dies verhindert ein Zurückfallen auf ein niedrigeres Level, wenn ein Einsatz erneut ausgeführt wird.)
* @param level neuer Level
*/
public void writeLevel(int level) {
writeLevel(level,false);
}
/** Schreibt einen neuen Levelstand in die Datei.
* @param level neuer Level
* @param down darf der neue Level auch niedriger als der alte sein (true = gezieltes Zurücksetzen)
*/
public void writeLevel(int level, boolean down) {
if (level > getLevel() || down) { //Damit nicht wieder in einen kleineren Level zurückgefallen wird
Random r = new Random();
Scanner s = new Scanner(this.read());
long z1 = s.nextLong();
long z2 = r.nextInt()+362734617;
z2 = z2 - (z2 % 131 - z1% 131);
while (z2 % 31 != level) {
z2 += 131;
}
this.append(""+z2);
}
}
/** Erzeugt eine neue Secret-Datei mit Level 1
*/
public void init() {
Random r = new Random();
long z1 = r.nextInt()+212312312;
long z2 = r.nextInt()+362734617;
z2 = z2 - (z2 % 131 - z1% 131);
while (z2 % 31 != 1) {
z2 += 131;
}
write(""+z1);
append(""+z2);
}
/** Liefert den zuletzt gespeicherten Level
* @return Level
*/
public int getLevel() {
int level = 1;
String z = read();
if (z.equals("")) {
init();
}
try {
Scanner s = new Scanner(read());
long z1 = s.nextLong();
s = new Scanner(readLastLine());
long z2 = s.nextLong();
if (z1 % 131 != z2 %131) {
init();
level = 1;
} else {
level = (int) (z2 % 31);
}
} catch(Exception e) {
level = -1;
}
return level;
}
/** Liefert den höchsten bisher gespeicherten Level
* @return maximal erreichter Level
*/
public int getMaxLevel() {
int level = 1;
String z = read();
if (z.equals("")) {
init();
return 1;
}
try {
FileReader fr = new FileReader(dateiName);
BufferedReader br = new BufferedReader(fr);
String zeile = br.readLine();
Scanner s = new Scanner(zeile);
long z1 = s.nextLong();
while(br.ready()) {
zeile = br.readLine();
s = new Scanner(zeile);
long z2 = s.nextLong();
if (z1 % 131 != z2 %131) {
init();
level = 1;
break;
} else {
if (level < (int) (z2 % 31)) {
level = (int) (z2 % 31);
}
}
}
br.close();
return level;
}
catch (IOException e) {
return level;
}
}
/** Liest die erste Zeile aus der Secretdatei
* @return erste Zeile
*/
public String read()
{
try {
FileReader fr = new FileReader(dateiName);
BufferedReader br = new BufferedReader(fr);
String zeile = br.readLine();
br.close();
return zeile;
}
catch (IOException e) {
return "";
}
}
/** Liest die letzte Zeile aus der Secretdatei
* @return letzte Zeile
*/
public String readLastLine()
{
try {
FileReader fr = new FileReader(dateiName);
BufferedReader br = new BufferedReader(fr);
String zeile = br.readLine();
while(br.ready()) zeile = br.readLine();
br.close();
return zeile;
}
catch (IOException e) {
return "";
}
}
/** Schreibt eine neue Datei mit einer Zeile
* @param text 1. Zeile der Datei
*/
public boolean write(String text)
{
try {
FileWriter fw = new FileWriter(dateiName);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(text);
bw.newLine();
bw.close();
return true;
}
catch (IOException e) {
return false;
}
}
/** Hängt eine Zeile an die Secret-Datei an
* @param text anzuhängende Zeile
*/
public boolean append(String text)
{
try {
FileWriter fw = new FileWriter(dateiName, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(text);
bw.newLine();
bw.close();
return true;
}
catch (IOException e) {
return false;
}
}
}

View file

@ -0,0 +1,801 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
import javax.swing.JOptionPane;
/**
* Diese Klasse ist die Oberklasse fuer die Roboter "Robita", "Robson" und "Robby".
* Programme sollen nur in den Unterklassen
* implementiert werden, da diese Klasse fuer Java-Beginner sehr komplex ist.
* Ein Roboter kann sich felderweise in die vier Himmelsrichtungen im Szenario bewegen.
* Ueber Sensoren kann er Informationen ueber seine Umwelt erhalten.
*/
public class Roboter extends Actor
{
private int energie; //Energie in Prozent
private ArrayList<Gegenstand> inventar;
private GreenfootImage originalImage;
/**
* Ein Objekt der Klasse Roboter wird exempliert bzw. instanziert.
*/
public Roboter()
{
inventar = new ArrayList<Gegenstand>();
energie=100;
originalImage = new GreenfootImage(this.getImage());
zeichneRobotImage();
}
/**
* Gibt die Anzahl der Gegenstaende, die Roboter traegt, zurueck.
* @return Anzahl der Gegenstaende
*/
public int getAnzahl() {
return inventar.size();
}
/**
* Gibt die Anzahl der Gegenstaende einer bestimmten Art zurueck.
* @param name Art der Gegenstands (z.B. "Schluessel")
* @return Anzahl der Gegenstaende
*/
public int getAnzahl(String name) {
int anz = 0;
if (Gegenstand.istGegenstand(name)) {
for (Gegenstand g : inventar) {
if (g.getName().equals(name)) {
anz++;
}
}
} else
{
melde(""+name+" ist keine gültige Bezeichnung für einen Gegenstand", true);
}
return anz;
}
/**
* Gibt die Restenergie des Roboters zurück
* @return Energiereserve (0-100)
*/
public int getEnergie() {
return energie;
}
/**
* Reduziert die Restenergie des Roboters um den angegebenen Wert.
* @param verlust Anzahl der verbrauchten Energiepunkte
*/
public void verbraucheEnergie(int verlust) {
energie = energie-verlust;
if (energie < 0) energie=0;
zeichneRobotImage();
}
/**
* Gibt zurueck, ob die Energie des Roboters verbraucht ist.
* @return true, wenn Restenergie =0, sonst false
*/
public boolean istEnergieLeer() {
if (getEnergie()==0) return true;
else return false;
}
/**
* Gibt die x-Koordinate zurück, wenn der Roboter einen Schritt nach vorne macht.
* @return x-Koordinate
*/
private int xVor() {
switch(this.getRotation())
{
case 0 : return getX()+1;
case 180 : return getX()-1;
}
return getX();
}
/**
* Gibt die y-Koordinate zurück, wenn der Roboter einen Schritt nach vorne macht.
* @return y-Koordinate
*/
private int yVor() {
switch(this.getRotation())
{
case 90 : return getY()+1;
case 270 : return getY()-1;
}
return getY();
}
/**
* Der Roboter geht einen Schritt in die Pfeilrichtung.
* Das macht er nur, wenn sich keine Wand vor ihm befindet oder
* er nicht an der Grenze der Welt zur Wand blickt.
*/
public void einsVor()
{
int possible=0;
if (!this.istVorneFrei()) possible = 1;
if (energie < 1) possible = 2;
if (istVorne("Fass") || istVorne("Atommuell")) {
if(this.getWorld().getObjectsAt(getX()+(xVor()-getX())*2,getY()+(yVor()-getY())*2, null).size() > 0) {
possible = 1;
} else {
energie -= 5;
List actors = this.getWorld().getObjectsAt(xVor(), yVor(), null);
Gegenstand fass = (Gegenstand) (actors.get(0));
fass.setLocation(getX()+(xVor()-getX())*2,getY()+(yVor()-getY())*2);
}
}
int[][] map = ((RoboterWelt) getWorld()).getMap();
if ((map[getY()][getX()] == 30 || map[getY()][getX()] == 7) && yVor() != getY() && !istAufGegenstand("Aufzug")) // Aufzug
{
possible = 3;
}
if (possible==0)
{
Schalter s=null; boolean on=false;
if (istAufGegenstand("Kontaktplatte")) {
s = gibGegenstandUnterRoboter().getSchalter();
on = true;
}
energie--;
this.setLocation(xVor(), yVor());
if (istAufGegenstand("Portal")) {
if (this instanceof AB1) {
if (this.getAnzahl("Schraube")>=2) {
ReadWrite secret = new ReadWrite();
secret.writeLevel(2);
Greenfoot.delay(1);
melde("Sehr gut. Level 1 abgeschlossen. Gehe zu Level 2.",false);
Greenfoot.setWorld(new RoboterWelt());
}
else {
melde("Du musst erst noch mind. 2 Schrauben einsammeln, um das AB 1 abzuschließen.",false);
} // end of if-else
}
energie = 100;
}
if (istAufGegenstand("Kontaktplatte") ) {
s = gibGegenstandUnterRoboter().getSchalter();
on = false;
}
if (s != null) {
if (on) s.anschalten(); else s.ausschalten();
}
if (istAufGegenstand()) {
if (energie > gibGegenstandUnterRoboter().getSchaden()) energie -= gibGegenstandUnterRoboter().getSchaden();
else energie = 0;
}
zeichneRobotImage();
Greenfoot.delay(1);
((RoboterWelt) getWorld()).schwerkraftAnwenden();
}
else
{
switch(possible) {
case 1:
warne("Ich kann keinen Schritt machen!\nEin Hindernis ist im Weg!",this); break;
case 2:
warne("Ich kann keinen Schritt machen!\nIch habe keine Energie mehr!",this); break;
case 3:
warne("Ich kann keinen Schritt machen!\nIn einem Aufzug braucht man die Plattform,\n um hoch oder runter zu fahren.",this); break;
}
}
}
/**
* Der Roboter dreht sich um 90 Grad nach rechts (aus der Sicht des Roboters).
*/
public void dreheRechts()
{
setRotation((getRotation()+90)%360);
zeichneRobotImage();
Greenfoot.delay(1);
}
/**
* Der Roboter dreht sich um 180 Grad nach rechts (aus der Sicht des Roboters).
*/
public void dreheUm()
{
dreheRechts();
dreheRechts();
}
/**
* Der Roboter dreht sich um 90 Grad nach links (aus der Sicht des Roboters).
*/
public void dreheLinks()
{
setRotation((getRotation()+270)%360);
zeichneRobotImage();
Greenfoot.delay(1);
}
/**
* Gibt das erste Gegenstandsobjekt zurück, das der angegebenen Art entspricht.
* @param name Art des gesuchten Gegenstands
* @return Gegenstandsobjekt
*/
private Gegenstand getInventar(String name) {
if (Gegenstand.istGegenstand(name)) {
for(Gegenstand g: inventar) {
if (g.getName().equals(name)) {
return g;
}
}
}
else {
melde(""+name+" ist kein gültiger Gegenstand.",true);
}
return null;
}
/**
* Gibt zurueck, ob der Roboter mindestens einen Gegenstand der angegeben Art besitzt.
* @param name Art des gesuchten Gegenstands
* @return true, wenn der Roboter einen derartigen Gegenstand hat, sonst false
*/
public boolean hatGegenstand(String name) {
if (Gegenstand.istGegenstand(name)) {
for(Gegenstand g: inventar) {
if (g.getName().equals(name)) {
return true;
}
}
}
else {
melde(""+name+" ist kein gültiger Gegenstand.",true);
}
return false;
}
/**
* Gibt dem Roboter eine bestimmte Anzahl von Gegenstaenden einer Art
* @param name Art des Gegenstands
* @anzahl gewuenschte Anzahl
*/
public void setAnzahlVonGegenstand(String name, int anzahl) {
if (Gegenstand.istGegenstand(name)) {
for (int i=0; i<anzahl; i++) {
inventar.add(new Gegenstand(name));
}
zeichneRobotImage();
}
else {
melde(""+name+" ist kein gültiger Gegenstand.",true);
}
}
/**
* Benutzt den angegebenen Gegenstand. Es koennen nur Schluessel, Schalter, Bombe, Feuerloescher und Akku benutzt werden.
* Dabei kann ein Schluessel nur direkt vor einem Schloss benutzt werden. Eine Bombe sprengt einen Bereich frei. Der Feuerloescher
* kann ein direkt vor dem Roboter befindliches Feuer loeschen. Der Akku erhoeht die Restenergie des Roboters.
* @param name Art des zu benutzenden Gegenstands ("Schluessel", "Schalter", "Bombe", "Feuerloescher", "Akku")
*/
public void benutze(String name) {
if (!Gegenstand.istGegenstand(name) && !Wand.istWandtyp(name)) {
melde(""+name+" ist keine gültige Bezeichnung.",true);
return;
}
if (name.equals("Schalter")) {
if (istVorne("Schalter")) {
List actors = this.getWorld().getObjectsAt(xVor(), yVor(), Wand.class);
Wand w = (Wand) (actors.get(0));
if (w.getSchalter() != null) w.getSchalter().umschalten();
Greenfoot.delay(1);
} else {
warne("Du stehst gar nicht vor einem Schalter.\n Wie willst du ihn benutzen?",this);
}
}
if (name.equals("Akku") || name.equals("Feuerloescher") || name.equals("Schluessel") || name.equals("Bombe")) {
if (this.getAnzahl(name)>0) {
Gegenstand g = this.getInventar(name);
g.benutze();
if (g.getLebensdauer() == 0) inventar.remove(g);
if (name.equals("Akku")) {
energie += 40;
if (energie >100) energie = 100;
}
if (name.equals("Feuerloescher")) {
if (istVorne("Feuer")) {
List actors = this.getWorld().getObjectsAt(xVor(), yVor(), Gegenstand.class);
this.getWorld().removeObject((Actor) (actors.get(0)));
}
}
if (name.equals("Schluessel")) {
if (istVorne("Schloss")) {
// g.benutze(); // Dirk: ist doch schon vorher aufgerufen worden - oder?
if (g.getLebensdauer() == 0) inventar.remove(g);
List actors = this.getWorld().getObjectsAt(xVor(), yVor(), Wand.class);
Wand w = (Wand) (actors.get(0));
if (w.getSchalter() != null) w.getSchalter().umschalten();
} else {
inventar.add(new Gegenstand("Schluessel"));
}
}
if (name.equals("Bombe")) {
Schalter s1 = new Schalter(getWorld());
int[][] level1 = {{ -1, -1, -1 , -1, -1},{ -1, -1, -1, -1, -1},{ -1, -1, 40, -1, -1},{ -1, -1, -1, -1, -1},{ -1, -1, -1 ,-1, -1}};
int[][] level2 = {{ -1,-1, -1 ,-1, -1},{ -1, 6, 40 , 6, -1},{ -1, 6, 40 , 6, -1},{-1, 6, 40 , 6, -1},{ -1, -1, -1 ,-1, -1}};
int[][] level3 = {{ -1, -1, -1 ,-1, -1},{ -1, 40, 40 , 40, -1},{ -1, 40, 6 , 40, -1},{ -1, 40, 40 , 40, -1},{ -1, -1, -1 ,-1, -1}};
int[][] level4 = {{ -1, -1, -1 ,-1, -1},{ -1, 6, 6 , 6, -1},{ -1, 6, 6 , 6, -1},{ -1, 6, 6 , 6, -1},{ -1, -1, -1 ,-1, -1}};
int platzFuerAkku = Greenfoot.getRandomNumber(9);
int myrotation = getRotation();
/* switch (platzFuerAkku) {
case 0: level4[1][1]=38; break;
case 1: level4[1][2]=38; break;
case 2: level4[1][3]=38; break;
case 3: level4[2][1]=38; break;
case 4: level4[2][2]=38; break;
case 5: level4[2][3]=38; break;
case 6: level4[3][1]=38; break;
case 7: level4[3][2]=38; break;
case 8: level4[3][3]=38; break;
}
for (int i=0; i<2; i++){
int platzFuerKontaktplatte=0;
do {
platzFuerKontaktplatte = Greenfoot.getRandomNumber(9);
} while(platzFuerKontaktplatte == platzFuerAkku);
switch (platzFuerKontaktplatte) {
case 0: level4[1][1]=31; break;
case 1: level4[1][2]=31; break;
case 2: level4[1][3]=31; break;
case 3: level4[2][1]=31; break;
case 4: level4[2][2]=31; break;
case 5: level4[2][3]=31; break;
case 6: level4[3][1]=31; break;
case 7: level4[3][2]=31; break;
case 8: level4[3][3]=31; break;
}
}*/
int x = getX()-2;
int y = getY()-2;
s1.setPosition(x,y, level2, level1);
s1.ausschalten();
energie = energie - 10;
if (energie < 0) energie = 0;
zeichneRobotImage();
// getWorld().removeObject(this);
Greenfoot.delay(2);
s1.anschalten();
setRotation((getRotation()+180)%360);
if(istVorneFrei()) this.setLocation(xVor(), yVor());
setRotation(myrotation);
energie = energie - 10;
if (energie < 0) energie = 0;
zeichneRobotImage();
Greenfoot.delay(2);
s1.setPosition(x,y, level4, level3);
s1.ausschalten();
setRotation((getRotation()+180)%360);
if(istVorneFrei()) this.setLocation(xVor(), yVor());
setRotation(myrotation);
Greenfoot.delay(2);
s1.anschalten();
}
zeichneRobotImage();
Greenfoot.delay(1);
((RoboterWelt) this.getWorld()).schwerkraftAnwenden();
} else {
warne("Du hast gar kein(e) "+name+",\n den/die du benutzen könntest.", this);
}
}
}
/**
* Liefert genau dann true, wenn auf der Kachel, auf der sich der
* aufgerufene Roboter gerade befindet, ein beliebiger Gegenstand befindet.
* @return true, wenn der Roboter auf einem Gegenstand steht, sonst false
*/
public boolean istAufGegenstand() {
List g = getWorld().getObjectsAt(getX(), getY(), Gegenstand.class);
if (g.size() > 0) {
return true;
} else {
return false;
}
}
/**
* Liefert genau dann true, wenn auf der Kachel, auf der sich der
* aufgerufene Roboter gerade befindet, ein Gegenstand mit dem angegebnen Namen befindet.
* @param name Einer der Gegenstaende ("Schluessel", "Schalter", "Bombe", "Feuerloescher", "Brennstab", "Akku", "Schraube", "Kontaktplatte", "Oelfleck", "Portal", "Strom", "Feuer", "Aufzug")
* @return true, wenn der Roboter auf einem Gegenstand steht, sonst false
*/
public boolean istAufGegenstand(String name) {
if (!Gegenstand.istGegenstand(name)) {
melde(""+name+" ist kein gültiger Gegenstand.",true);
return false;
}
List g = getWorld().getObjectsAt(getX(), getY(), Gegenstand.class);
if (g.size() > 0) {
return ((Gegenstand) (g.get(0))).getName().equals(name);
} else {
return false;
}
}
/**
* Gibt den Gegenstand zurueck, auf dem sich ein Roboter befindet
* @return Gegenstand (entweder "Schluessel", "Schalter", "Bombe", "Feuerloescher", "Akku", "Schraube", "Kontaktplatte", "Oelfleck", "Portal", "Strom", "Feuer", "Aufzug")
*/
private Gegenstand gibGegenstandUnterRoboter() {
List g = getWorld().getObjectsAt(getX(), getY(), Gegenstand.class);
if (g.size() > 0) {
return (Gegenstand) (g.get(0));
} else {
return null;
}
}
/**
* Liefert genau dann true, wenn der aufgerufene Roboter keinen Gegenstand bei sich hat.
* @return true, wenn der Roboter keinen Gegenstand mit sich traegt, sonst false
*/
public boolean istInventarLeer() {
return inventar.size() == 0;
}
/**
* Der Roboter legt einen Gegenstand aus seinem Vorrat auf dem Feld ab.
* @param name Einer der Gegenstaende ("Schluessel", "Schalter", "Bombe", "Brennstab", "Feuerloescher", "Akku", "Schraube", "Kontaktplatte", "Oelfleck", "Portal", "Strom", "Feuer")
*/
public void ablegen(String name)
{
if (!Gegenstand.istGegenstand(name)) {
melde(""+name+" ist kein gültiger Gegenstand.",true);
return;
}
if (getAnzahl(name)>0) {
if (!istAufGegenstand() || istAufGegenstand("Oelfleck")|| istAufGegenstand("Kontaktplatte")) { // Dirk: Ablegen auf Kontaktplatte geaendert!
int aktuellesX = this.getX();
int aktuellesY = this.getY();
for(Gegenstand g: inventar) {
if (g.getName().equals(name)) {
inventar.remove(g);
this.getWorld().addObject(g, aktuellesX, aktuellesY);
zeichneRobotImage();
break;
}
}
((RoboterWelt) this.getWorld()).schwerkraftAnwenden();
}
else warne("Hier liegt schon etwas oder\nman darf hier nichts ablegen!",this);
}
else warne("Ich habe kein(e) "+name+" zum Ablegen!",this);
}
/**
* Der Roboter nimmt einen Gegenstand, der sich auf seinem Feld befindet in seinen Vorrat auf.
* Falls er nicht auf einem Gegenstand steht, gibt er eine Warnung aus.
* Roboter haben nur eine begrenzte Kapazitaet. Sie koennen maximal 99 Gegenstaende mit sich tragen.
* Falls er einen 100. Gegenstand aufnehmen moechte, wird auch eine entsprechende Warnung ausgegeben.
*/
public void aufnehmen ()
{
if (getAnzahl()<=99) // von Dirk von < auf <= veraendert!
{
Gegenstand g = (Gegenstand)this.getOneObjectAtOffset(0, 0, Gegenstand.class);
if(g != null)
{
if (g.istBeweglich()) {
this.getWorld().removeObject(g);
inventar.add(g);
zeichneRobotImage();
((RoboterWelt) getWorld()).schwerkraftAnwenden();
} else {
warne("Ein(e) "+g.getName()+" kann man nicht aufheben", this);
}
}
else
{
warne("Hier ist nichts zum Aufheben!",this);
}
}
else warne("Hab keinen Platz für weitere Gegenstände!",this);
}
/**
* Diese Methode setzt einen Roboter vor den Roboter, der diese Methode aufruft.
* Ist vor ihm kein Platz, wird eine Warnung ausgegeben.
* @param r der Hilfsroboter, der eingesetzt werden soll
*/
public void gehilfeEinsetzen(Roboter r) {
if (istVorneFrei() && getWorld().getObjectsAt(xVor(), yVor(), Roboter.class).isEmpty()) {
this.getWorld().addObject(r, xVor(), yVor());
} else {
warne("Vor dir ist kein Platz für einen Gehilfen!",this);
}
}
/**
* Der Sensor ueberprueft, ob vor dem Roboter Hindernisse stehen oder nicht
* @return true, wenn vor dem Roboter frei ist, sonst false
*/
public boolean istVorneFrei()
{
return !istWandVorne() && (this.getWorld().getObjectsAt(xVor(),yVor(), Roboter.class).size() == 0);
}
/**
* Liefert genau dann true, wenn sich vor dem Roboter ein Gegenstand mit dem angegebnen Namen befindet.
* @param name Einer der Gegenstaende ("Schluessel", "Schalter", "Schloss", "Bombe", "Feuerloescher", "Akku", "Schraube", "Kontaktplatte", "Oelfleck", "Portal", "Strom", "Feuer", "Aufzug")
* @return true, wenn der Roboter vor dem Gegenstand mit dem Namen name steht, sonst false
*/
public boolean istVorne(String name) {
if (!Gegenstand.istGegenstand(name) && !Wand.istWandtyp(name)) {
melde(name+" ist keine gültige Bezeichnung", true);
return false;
}
List actors = this.getWorld().getObjectsAt(xVor(), yVor(), null);
boolean found = false;
for(int i = 0; i < actors.size(); i++) {
Object o = actors.get(i);
if (o instanceof Gegenstand) {
if (((Gegenstand) o).getName().equals(name)) {
found = true;
break;
}
}
if (o instanceof Wand) {
if (((Wand) o).getName().equals(name)) {
found = true;
break;
}
}
}
return found;
}
/**
* Der Sensor ueberprueft, ob sich in Laufrichtung des Roboters eine Wand befindet.
* @return true, wenn der Roboter vor einer Wand steht, sonst false
*/
public boolean istWandVorne()
{
return (this.getWorld().getObjectsAt(xVor(),yVor(), Wand.class).size() > 0);
}
/**
* Der Sensor ueberprueft, ob sich rechts der Laufrichtung eine Wand befindet.
* @return true, wenn sich rechts von dem Roboter eine Wand befindet, sonst false
*/
public boolean istWandRechts()
{
int lRichtung = getRotation();
if (lRichtung == 0 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
{
return true;
}
if (lRichtung == 90 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
{
return true;
}
if (lRichtung == 180 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
{
return true;
}
if (lRichtung == 270 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
{
return true;
}
return false;
}
/**
* Der Sensor ueberprueft, ob sich links der Laufrichtung eine Wand befindet.
* @return true, wenn sich links von dem Roboter eine Wand befindet, sonst false
*/
public boolean istWandLinks()
{
int lRichtung = getRotation();
if (lRichtung == 0 && this.getOneObjectAtOffset(0, -1, Wand.class)!= null)
{
return true;
}
if (lRichtung == 90 && this.getOneObjectAtOffset(1, 0, Wand.class)!= null)
{
return true;
}
if (lRichtung == 180 && this.getOneObjectAtOffset(0, 1, Wand.class)!= null)
{
return true;
}
if (lRichtung == 270 && this.getOneObjectAtOffset(-1, 0, Wand.class)!= null)
{
return true;
}
return false;
}
/**
* Eine private Methode, die dafuer sorgt, dass der "Aufdruck" auf dem Roboter (Anzahl der Gegenstaende), der Akkustandsbalken und
* der Richtungspfeil aktualisiert werden
*/
private void zeichneRobotImage()
{
final int x=17;
final int y=18;
final int breite = 14;
final int hoehe = 12;
this.setImage(new GreenfootImage(originalImage));
this.getImage().setColor(Color.WHITE);
this.getImage().fillRect(x, y, breite, hoehe);
this.getImage().setColor(Color.BLACK);
this.getImage().drawRect(x, y, breite, hoehe);
this.getImage().setFont(new Font("Arial",false,false,10));
String ziffern;
int anz = inventar.size();
if (anz>=0 && anz<10) ziffern="0"+anz;
else if (anz>=100) ziffern=">>";
else ziffern=""+anz;
this.getImage().drawString(ziffern, x+2, y+hoehe-2);
zeichneEnergie();
this.getImage().drawImage(new GreenfootImage("images/pfeil"+getRotation()+".png"), 40, 2);
this.getImage().rotate(-getRotation());
}
/**
* Zeichne / Aktualisiere die Energie (Akkustandsbalken), die der Roboter hat
*/
private void zeichneEnergie()
{
final int x=2;
final int y=1;
final int breite = 4;
final int hoehe = 46;
this.getImage().setColor(Color.GREEN);
this.getImage().fillRect(x, y, breite, hoehe);
int hoeheNeu = hoehe-(int)(Math.floor(hoehe*(energie/100.0)));
this.getImage().setColor(Color.RED);
this.getImage().fillRect(x, y, breite, hoeheNeu);
this.getImage().setColor(Color.BLACK);
this.getImage().drawRect(x, y, breite, hoehe);
this.getImage().drawRect(x, y, breite, hoehe/2);
}
// Meldungen und Warnungen
/**
* Gibt den uebergebenen String in einer Dialogbox auf dem Bildschirm aus
* @param text Der Text, der angezeit werden soll
* @param istWichtig bei true wird der Text "Achtung! Besonders wichtige Meldung:" in die Kopfzeile geschrieben, sonst nur der Text "Meldung!"
*/
public void melde(String text, boolean istWichtig) {
String meldeText;
if (istWichtig) meldeText = "Achtung!\n";
else meldeText = "Meldung:\n";
Message m = new Message(meldeText+text);
getWorld().addObject(m, 7,6);
long z = System.currentTimeMillis();
while(System.currentTimeMillis()-z < 4000){
Greenfoot.delay(1);
}
getWorld().removeObject(m);
}
/**
* Gibt den uebergebenen String und eine Zahl in einer Dialogbox auf dem Bildschirm aus
* @param text Der Text, der angezeit werden soll
* @param z eine Zahl, die hinter dem Text text ausgegeben wird
*/
private void melde(String text, int z) {
Message m = new Message(text+": "+z);
getWorld().addObject(m, 7,6);
long zz = System.currentTimeMillis();
while(System.currentTimeMillis()-zz < 4000){
Greenfoot.delay(1);
}
getWorld().removeObject(m);
}
/**
* Gibt den uebergebenen String in einer Dialogbox als Warnung auf dem Bildschirm aus.
* Dadurch wird der uebergebene Actor actor von der Roboterwelt entfernt und diese neu gezeichnet.
* @param text Der Text, der angezeit werden soll
* @param actor Der Actor, der ggf. entfernt werden soll
*/
public void warne(String text, Actor actor) {
Message m = new Message(text);
actor.getWorld().addObject(m, 7,6);
long z = System.currentTimeMillis();
while(System.currentTimeMillis()-z < 4000){
Greenfoot.delay(1);
}
actor.getWorld().removeObject(m);
Greenfoot.stop(); // nur falls Animation laeuft
World w = actor.getWorld();
if (actor != null) w.removeObject(actor); // Notbremse
Greenfoot.setWorld(new RoboterWelt());
// System.err.print("\u000C");
// System.err.flush();
System.err.close();
// System.out.close();
// System.out.println("Ablauf wurde vom Benutzer unterbrochen!");
// System.exit(0); //Das waere eigentlich sauber
}
// Systembedingte Routinen
/**
* Wird aufgerufen, wenn der Roboter in die Welt gesetzt wird;
* erweitert nach Vorschlag P.Henriksen 29.6.08
* @param world Die Welt in die ein Roboter gesetzt wurde
*/
protected void addedToWorld(World world) {
// Roboter kann nicht auf eine Wand oder einen anderem Roboter gesetzt werden
Actor wand = getOneObjectAtOffset(0, 0, Wand.class);
Actor roboter = getOneObjectAtOffset(0, 0, Roboter.class);
if (wand != null || roboter != null) {
world.removeObject(this);
}
}
/* setLocation(x,y) und setRotation(x) koennen nicht verborgen werden,
* weil sie schon in der Oberklasse Actor public sind.
*/
/**
* setLocation(x,y) fuer Roboter wird ueberschrieben, um nicht auf Wand oder
* anderen Roboter ziehen zu koennen!
* -- setzt den Roboter auf eine Kachel, deren Spalte x sowie Reihe y du
* hier vorgibst. Die Nummerierung beginnt jeweils bei 0 !!)
* @param x die x-Koordinate
* @param y die y-Koordinate
*/
public void setLocation(int x, int y) {
boolean schwerkraft = ((RoboterWelt) getWorld()).getSchwerkraft();
if( (!((x==getX() && y==getY()) || (Math.abs(x-getX())+Math.abs(y-getY())<=1))) || (y<getY() && schwerkraft && !istAufGegenstand("Aufzug"))) { // Verhindern des Verschiebens des Roboters
warne("Ich bin ein Roboter. Ich kann nicht fliegen.",this);
}
else {
List wand = getWorld().getObjectsAt(x, y, Wand.class);
List roboter = getWorld().getObjectsAt(x, y, Roboter.class);
Gegenstand g = (Gegenstand)this.getOneObjectAtOffset(0, 0, Gegenstand.class);
if (g!= null && !g.getName().equals("Aufzug")) { g= null;}
int[][] map = ((RoboterWelt) getWorld()).getMap();
roboter.remove(this); // Man selbst darf schon da stehen.
if (wand.isEmpty() && roboter.isEmpty()) {
if(g!=null && x==getX()) {g.setLocation(x,y); }
super.setLocation(x, y);
}
else warne ("Ich kann nicht an diesen Ort. Da ist kein Platz fuer mich!",this);
}
}
/**
* setRotation(x) fuer Roboter wird ueberschrieben, damit nur vier Rotationsrichtungen moeglich sind!
* @param x die Richtung (0=Osten, 90=Sueden, 180=Westen, 270=Norden)
*/
public void setRotation(int x) {
if (x==0 || x==90 || x==180 || x==270) super.setRotation(x);
this.zeichneRobotImage();
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,107 @@
import greenfoot.*;
import java.util.*;
/**
* Die Klasse Schalter ist eine Hilfsklasse für die Schlösser und Schalthebel
* Sie hat zwei zweidimensionale Arrays, die für den Schalterzustand on bzw. off
* festlegen, wie ein Bereich der Welt aussehen soll. startx und starty speichern
* die linke obere Ecke dieses Bereichs.
*/
public class Schalter
{
RoboterWelt world;
private boolean an;
private int startx;
private int starty;
private int[][] on;
private int[][] off;
/** Der Konstruktor erstellt einen neuen Schalter
* @param w Die Welt, die manipuliert werden soll
*/
public Schalter(World w) {
super();
an = true;
startx = 0;
starty = 0;
on = null;
off = null;
world = (RoboterWelt) w;
}
/** Die Methode setze verändert die Welt entsprechend den Vorgaben
* von backg. Dabei werden alle Objekte in diesem Bereich entfernt
* (außer den Robotern) und gegen neue Objekte ausgetauscht.
* @param backg Zweidimensionales Array, das die neuen Actors für den Bereich festlegt.
*/
private void setze(int[][] backg) {
for(int x=0; x<backg[0].length; x++) {
for(int y=0; y<backg.length; y++) {
if (backg[y][x]>=0 && (startx+x>0) && (startx+x<world.getWidth()-1) &&
(starty+y>1) && (starty+y<world.getHeight()-1)) {
List al = world.getObjectsAt(x+startx,y+starty, null);
for (int i = 0; i< al.size(); i++) {
Actor da = (Actor) (al.get(i));
if (! (da instanceof Roboter)) world.removeObject(da);
}
if(backg[y][x]>=0 && backg[y][x] <10) {
world.changeBackground(backg[y][x], x, y);
}
Actor a = ((RoboterWelt) world).generateActor(backg[y][x]);
if (backg[y][x] == 11 || backg[y][x]==12 || backg[y][x]==17 || backg[y][x]==22 || backg[y][x]==23) {
((Wand) a).setSchalter(this);
}
if (backg[y][x] == 31) {
((Gegenstand) a).setSchalter(this);
}
if (a!= null) world.addObject(a,x+startx,y+starty);
}
}
}
}
/** Setzt den Schalterzustand auf on
*/
public void anschalten() {
an = true;
if (on != null) setze(on);
}
/** Setzt den Schalterzustand auf off
*/
public void ausschalten() {
an = false;
if (off != null) setze(off);
}
/** Schaltet den Schalter um, d.h. von on auf off oder umgekehrt
*/
public void umschalten() {
if (an) ausschalten(); else anschalten();
}
/** Legt fest, wie der Schalter die Welt verändern soll.
* @param x Koordinate der linke oberen Ecke des zu verändernden Bereichs
* @param y Koordinate der linke oberen Ecke des zu verändernden Bereichs
* @param on Zweidimensionales Array zu Festlegung, wie der Bereich bei angeschaltetem Schalter ausssehen soll
* @param off Zweidimensionales Array zu Festlegung, wie der Bereich bei ausgeschaltetem Schalter ausssehen soll
*/
public void setPosition(int x, int y, int[][] on, int[][] off) {
startx = x;
starty = y;
this.on = on;
this.off = off;
}
/** Liefert den Schalterzustand
* @return true, wenn der Schalter an ist, sonst false
*/
public boolean getAn() {
return an;
}
}

View file

@ -0,0 +1,116 @@
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
* Die Klasse Wand fast alle Actors zusammen, durch die der Roboter nicht hindurchlaufen kann.
* Dazu gehören neben den normalen Wänden auch Steine, Türen (vertikal/horizontal) usw.
*/
public class Wand extends Actor
{
private int typ;
private static String[] typen = {"Wand","Tuer","Tuer","Schalter","Schalter","Stromquelle","Stromquelle","Stromquelle","Stromquelle","Schloss","Stein","Steine","Schalter","Schalter"};
private String[] bilder = {"Wand","Tuer2","Tuer1","SchalterEin","SchalterAus","Stromquelle1","Stromquelle2","Stromquelle3","Stromquelle4","Schloss","Stein","Steine","Rufknopf","RufknopfAus"};
private Schalter schalter;
/** Erzeugt eine neue Wand vom angegeben Typ
* @param name Name des Typs ("Wand","Tuer2","Tuer1","SchalterEin","SchalterAus","Stromquelle1","Stromquelle2","Stromquelle3","Stromquelle4","Schloss","Stein","Steine","Rufknopf","RufknopfAus")
*/
public Wand(String name) {
super();
this.typ = 0;
for(int i = 0; i < bilder.length; i++) {
if (name.equals(bilder[i])) {
this.typ = i;
}
}
this.setImage("images/"+bilder[typ]+".png");
schalter = null;
}
/** Erzeugt eine neue Standardwand
*/
public Wand() {
super();
this.typ = 0;
this.setImage("images/"+bilder[typ]+".png");
schalter = null;
}
/** untersucht, ob name eine korrekte Bezeichnug für einen Wandtyp ist
* @return erg true, wenn name korrekt ist
*/
public static boolean istWandtyp(String name) {
boolean erg = false;
for(int i = 0; i < typen.length; i++) {
if (name.equals(typen[i])) {
erg = true;
}
}
return erg;
}
/** Liefert den Typ der Wand
* @return Typname (Wand, Tuer, Stromquelle, Schalter, Schloss, Stein, Steine)
*/
public String getName() {
return this.typen[typ];
}
/** Liefert einen mit diesem Objekt verbunden Schalter
* @return Schalter, wenn vorhanden, sonst null
*/
public Schalter getSchalter() {
return this.schalter;
}
/** Verbindet dieses Objekt mit einem Schalter, der
* die Welt verändern kann.
* @param s Schalterobjekt
*/
public void setSchalter(Schalter s) {
this.schalter = s;
}
// Systembedingte Routinen
/**
* Wird aufgerufen, wenn der Roboter in die Welt gesetzt wird;
* erweitert nach Vorschlag P.Henriksen 29.6.08
*/
protected void addedToWorld(World world) {
// Roboter kann nicht auf eine Wand oder einen anderem Roboter gesetzt werden
Actor wand = getOneObjectAtOffset(0, 0, Wand.class);
Actor roboter = getOneObjectAtOffset(0, 0, Roboter.class);
if (wand != null || roboter != null) {
world.removeObject(this);
}
}
/**
* setLocation(x,y) fuer Roboter wird ueberschrieben, um nicht auf Wand oder
* anderen Roboter ziehen zu koennen!
* -- setzt den Roboter auf eine Kachel, deren Spalte x sowie Reihe y du
* hier vorgibst. Die Nummerierung beginnt jeweils bei 0 !!)
*/
public void setLocation(int x, int y) {
List wand = getWorld().getObjectsAt(x, y, null);
if (wand.isEmpty()) {
super.setLocation(x, y);
}
}
/* setLocation(x,y) und setRotation(x) koennen nicht verborgen werden,
* weil sie schon in der Oberklasse Actor public sind.
*/
/**
* setRotation(x) fuer Roboter wird verhindert!
* Es ist unnoetig, da Roboter sich nur in vier Richtungen drehen koennen!
*/
public void setRotation(int x) {
// nichts machen!!
}
}

View file

@ -0,0 +1,338 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Sun Dec 29 10:45:58 CET 2019 -->
<title>AB1</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="dc.created" content="2019-12-29">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="AB1";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class AB1" class="title">Class AB1</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>greenfoot.Actor</li>
<li>
<ul class="inheritance">
<li>Roboter</li>
<li>
<ul class="inheritance">
<li>AB1</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">AB1</span>
extends Roboter</pre>
<div class="block">Die Klasse AB1 ist eine Unterklasse von Roboter.
Sie erbt damit alle Attribute und Methoden der Klasse Roboter.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">AB1</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#akkuAufnehmen()">akkuAufnehmen</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#benutzeAkku()">benutzeAkku</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dreheLinks()">dreheLinks</a></span>()</code></th>
<td class="colLast">
<div class="block">Der Roboter dreht sich um 90 Grad nach links (aus der Sicht des Roboters).</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dreheRechts()">dreheRechts</a></span>()</code></th>
<td class="colLast">
<div class="block">Der Roboter dreht sich um 90 Grad nach rechts (aus der Sicht des Roboters).</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einsVor()">einsVor</a></span>()</code></th>
<td class="colLast">
<div class="block">Der Roboter geht einen Schritt in die Pfeilrichtung.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getAnzahlSchrauben()">getAnzahlSchrauben</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istAufSchraube()">istAufSchraube</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istVorratLeer()">istVorratLeer</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schraubeAblegen()">schraubeAblegen</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schraubeAufnehmen()">schraubeAufnehmen</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Roboter">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;Roboter</h3>
<code>ablegen, addedToWorld, aufnehmen, benutze, dreheUm, gehilfeEinsetzen, getAnzahl, getAnzahl, getEnergie, hatGegenstand, istAufGegenstand, istAufGegenstand, istEnergieLeer, istInventarLeer, istVorne, istVorneFrei, istWandLinks, istWandRechts, istWandVorne, melde, setAnzahlVonGegenstand, setLocation, setRotation, verbraucheEnergie, warne</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.greenfoot.Actor">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;greenfoot.Actor</h3>
<code>act, getImage, getIntersectingObjects, getNeighbours, getObjectsAtOffset, getObjectsInRange, getOneIntersectingObject, getOneObjectAtOffset, getRotation, getWorld, getWorldOfType, getX, getY, intersects, isAtEdge, isTouching, move, removeTouching, setImage, setImage, turn, turnTowards</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>AB1</h4>
<pre>public&nbsp;AB1()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="einsVor()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>einsVor</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;einsVor()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code>Roboter</code></span></div>
<div class="block">Der Roboter geht einen Schritt in die Pfeilrichtung.
Das macht er nur, wenn sich keine Wand vor ihm befindet oder
er nicht an der Grenze der Welt zur Wand blickt.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>einsVor</code>&nbsp;in class&nbsp;<code>Roboter</code></dd>
</dl>
</li>
</ul>
<a id="dreheRechts()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dreheRechts</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;dreheRechts()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code>Roboter</code></span></div>
<div class="block">Der Roboter dreht sich um 90 Grad nach rechts (aus der Sicht des Roboters).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>dreheRechts</code>&nbsp;in class&nbsp;<code>Roboter</code></dd>
</dl>
</li>
</ul>
<a id="dreheLinks()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>dreheLinks</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;dreheLinks()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code>Roboter</code></span></div>
<div class="block">Der Roboter dreht sich um 90 Grad nach links (aus der Sicht des Roboters).</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>dreheLinks</code>&nbsp;in class&nbsp;<code>Roboter</code></dd>
</dl>
</li>
</ul>
<a id="schraubeAufnehmen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schraubeAufnehmen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;schraubeAufnehmen()</pre>
</li>
</ul>
<a id="schraubeAblegen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schraubeAblegen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;schraubeAblegen()</pre>
</li>
</ul>
<a id="getAnzahlSchrauben()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAnzahlSchrauben</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;getAnzahlSchrauben()</pre>
</li>
</ul>
<a id="istAufSchraube()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istAufSchraube</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istAufSchraube()</pre>
</li>
</ul>
<a id="istVorratLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istVorratLeer</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istVorratLeer()</pre>
</li>
</ul>
<a id="akkuAufnehmen()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>akkuAufnehmen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;akkuAufnehmen()</pre>
</li>
</ul>
<a id="benutzeAkku()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>benutzeAkku</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;benutzeAkku()</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Sun Dec 29 10:45:58 CET 2019 -->
<title>All Classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="dc.created" content="2019-12-29">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">All&nbsp;Classes</h1>
<main role="main" class="indexContainer">
<ul>
<li><a href="AB1.html" title="class in &lt;Unnamed&gt;">AB1</a></li>
</ul>
</main>
</body>
</html>

View file

@ -0,0 +1,35 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Sun Dec 29 10:45:58 CET 2019 -->
<title>Constant Field Values</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="dc.created" content="2019-12-29">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Constant Field Values";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
<section role="region">
<h2 title="Contents">Contents</h2>
</section>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1 @@
unnamed package

View file

@ -0,0 +1,23 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Sun Dec 29 10:45:58 CET 2019 -->
<title>Generated Documentation (Untitled)</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<script type="text/javascript">window.location.replace('AB1.html')</script>
<noscript>
<meta http-equiv="Refresh" content="0;AB1.html">
</noscript>
<link rel="canonical" href="AB1.html">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<noscript>
<p>JavaScript is disabled on your browser.</p>
</noscript>
<p><a href="AB1.html">AB1.html</a></p>
</main>
</body>
</html>

View file

@ -0,0 +1,42 @@
Class documentation
<---- javadoc command: ---->
E:\Programme\Informatik\Greenfoot361\jdk\bin\javadoc.exe
-author
-version
-nodeprecated
-protected
-Xdoclint:none
-noindex
-notree
-nohelp
-nonavbar
-source
11
-classpath
E:\Programme\Informatik\Greenfoot361\lib\extensions\greenfoot.jar;E:\Programme\Informatik\Greenfoot361\lib\bluejcore.jar;E:\Programme\Informatik\Greenfoot361\lib\bluejeditor.jar;E:\Programme\Informatik\Greenfoot361\lib\bluejext.jar;E:\Programme\Informatik\Greenfoot361\lib\junit-4.11.jar;E:\Programme\Informatik\Greenfoot361\lib\hamcrest-core-1.3.jar;E:\Programme\Informatik\Greenfoot361\lib\bluej.jar;E:\Programme\Informatik\Greenfoot361\lib\classgraph-4.2.6.jar;E:\Programme\Informatik\Greenfoot361\lib\diffutils-1.2.1.jar;E:\Programme\Informatik\Greenfoot361\lib\commons-logging-api-1.1.2.jar;E:\Programme\Informatik\Greenfoot361\lib\jl1.0.1.jar;E:\Programme\Informatik\Greenfoot361\lib\opencsv-2.3.jar;E:\Programme\Informatik\Greenfoot361\lib\xom-1.2.9.jar;E:\Programme\Informatik\Greenfoot361\lib\lang-stride.jar;E:\Programme\Informatik\Greenfoot361\lib\nsmenufx-2.1.4.jar;E:\Programme\Informatik\Greenfoot361\lib\richtextfx-fat-0.9.0.jar;E:\Programme\Informatik\Greenfoot361\lib\guava-17.0.jar;E:\Programme\Informatik\Greenfoot361\lib\httpclient-4.1.1.jar;E:\Programme\Informatik\Greenfoot361\lib\httpcore-4.1.jar;E:\Programme\Informatik\Greenfoot361\lib\httpmime-4.1.1.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.base.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.controls.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.fxml.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.graphics.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.media.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.properties.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.swing.jar;E:\Programme\Informatik\Greenfoot361\lib\javafx\lib\javafx.web.jar;F:\Informatik\Fortbildung ZPG IMP9\Greenfoot\OptischeTaeuschungUnterklasse V3 - Animation\jdom-1.1.3.jar;F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh
-d
F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\doc
-encoding
windows-1252
-charset
windows-1252
F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\AB1.java
<---- end of javadoc command ---->
Loading source file F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\AB1.java...
Constructing Javadoc information...
warning: unknown enum constant Tag.Any
reason: class file for threadchecker.Tag not found
warning: unknown enum constant Tag.Any
warning: unknown enum constant Tag.Any
warning: unknown enum constant Tag.Any
Standard Doclet version 11.0.2
Building tree for all the packages and classes...
Generating F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\doc\AB1.html...
Generating F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\doc\package-summary.html...
Generating F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\doc\constant-values.html...
Building index for all the packages and classes...
Building index for all classes...
Generating F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\doc\allclasses.html...
Generating F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\doc\allclasses.html...
Generating F:\Informatik\Fortbildung Jahreskurs\jahreskurs_einfuehrung_programmierung\01_ReaktorRobot_GF361_20191229\3_vorlagen_tauschordner\01_ReaktorRobot_GF361_Szenario_Roh\doc\index.html...
4 warnings

View file

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Sun Dec 29 10:45:58 CET 2019 -->
<title>&lt;Unnamed&gt;</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="dc.created" content="2019-12-29">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="<Unnamed>";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;&lt;Unnamed&gt;</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="AB1.html" title="class in &lt;Unnamed&gt;">AB1</a></th>
<td class="colLast">
<div class="block">Die Klasse AB1 ist eine Unterklasse von Roboter.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1,139 @@
/*
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
var moduleSearchIndex;
var packageSearchIndex;
var typeSearchIndex;
var memberSearchIndex;
var tagSearchIndex;
function loadScripts(doc, tag) {
createElem(doc, tag, 'jquery/jszip/dist/jszip.js');
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils.js');
if (window.navigator.userAgent.indexOf('MSIE ') > 0 || window.navigator.userAgent.indexOf('Trident/') > 0 ||
window.navigator.userAgent.indexOf('Edge/') > 0) {
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils-ie.js');
}
createElem(doc, tag, 'search.js');
$.get(pathtoroot + "module-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
moduleSearchIndex = JSON.parse(zip.file("module-search-index.json").asText());
});
});
$.get(pathtoroot + "package-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
packageSearchIndex = JSON.parse(zip.file("package-search-index.json").asText());
});
});
$.get(pathtoroot + "type-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "type-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
typeSearchIndex = JSON.parse(zip.file("type-search-index.json").asText());
});
});
$.get(pathtoroot + "member-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "member-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
memberSearchIndex = JSON.parse(zip.file("member-search-index.json").asText());
});
});
$.get(pathtoroot + "tag-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "tag-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
tagSearchIndex = JSON.parse(zip.file("tag-search-index.json").asText());
});
});
if (!moduleSearchIndex) {
createElem(doc, tag, 'module-search-index.js');
}
if (!packageSearchIndex) {
createElem(doc, tag, 'package-search-index.js');
}
if (!typeSearchIndex) {
createElem(doc, tag, 'type-search-index.js');
}
if (!memberSearchIndex) {
createElem(doc, tag, 'member-search-index.js');
}
if (!tagSearchIndex) {
createElem(doc, tag, 'tag-search-index.js');
}
$(window).resize(function() {
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
});
}
function createElem(doc, tag, path) {
var script = doc.createElement(tag);
var scriptElement = doc.getElementsByTagName(tag)[0];
script.src = pathtoroot + path;
scriptElement.parentNode.insertBefore(script, scriptElement);
}
function show(type) {
count = 0;
for (var key in data) {
var row = document.getElementById(key);
if ((data[key] & type) !== 0) {
row.style.display = '';
row.className = (count++ % 2) ? rowColor : altColor;
}
else
row.style.display = 'none';
}
updateTabs(type);
}
function updateTabs(type) {
for (var value in tabs) {
var sNode = document.getElementById(tabs[value][0]);
var spanNode = sNode.firstChild;
if (value == type) {
sNode.className = activeTableTab;
spanNode.innerHTML = tabs[value][1];
}
else {
sNode.className = tableTab;
spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
}
}
}
function updateModuleFrame(pFrame, cFrame) {
top.packageFrame.location = pFrame;
top.classFrame.location = cFrame;
}

View file

@ -0,0 +1,906 @@
/*
* Javadoc style sheet
*/
@import url('resources/fonts/dejavu.css');
/*
* Styles for individual HTML elements.
*
* These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
* HTML element throughout the page.
*/
body {
background-color:#ffffff;
color:#353833;
font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
font-size:14px;
margin:0;
padding:0;
height:100%;
width:100%;
}
iframe {
margin:0;
padding:0;
height:100%;
width:100%;
overflow-y:scroll;
border:none;
}
a:link, a:visited {
text-decoration:none;
color:#4A6782;
}
a[href]:hover, a[href]:focus {
text-decoration:none;
color:#bb7a2a;
}
a[name] {
color:#353833;
}
a[name]:before, a[name]:target, a[id]:before, a[id]:target {
content:"";
display:inline-block;
position:relative;
padding-top:129px;
margin-top:-129px;
}
pre {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
}
h1 {
font-size:20px;
}
h2 {
font-size:18px;
}
h3 {
font-size:16px;
font-style:italic;
}
h4 {
font-size:13px;
}
h5 {
font-size:12px;
}
h6 {
font-size:11px;
}
ul {
list-style-type:disc;
}
code, tt {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
margin-top:8px;
line-height:1.4em;
}
dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
}
table tr td dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
vertical-align:top;
padding-top:4px;
}
sup {
font-size:8px;
}
/*
* Styles for HTML generated by javadoc.
*
* These are style classes that are used by the standard doclet to generate HTML documentation.
*/
/*
* Styles for document title and copyright.
*/
.clear {
clear:both;
height:0px;
overflow:hidden;
}
.aboutLanguage {
float:right;
padding:0px 21px;
font-size:11px;
z-index:200;
margin-top:-9px;
}
.legalCopy {
margin-left:.5em;
}
.bar a, .bar a:link, .bar a:visited, .bar a:active {
color:#FFFFFF;
text-decoration:none;
}
.bar a:hover, .bar a:focus {
color:#bb7a2a;
}
.tab {
background-color:#0066FF;
color:#ffffff;
padding:8px;
width:5em;
font-weight:bold;
}
/*
* Styles for navigation bar.
*/
.bar {
background-color:#4D7A97;
color:#FFFFFF;
padding:.8em .5em .4em .8em;
height:auto;/*height:1.8em;*/
font-size:11px;
margin:0;
}
.navPadding {
padding-top: 107px;
}
.fixedNav {
position:fixed;
width:100%;
z-index:999;
background-color:#ffffff;
}
.topNav {
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.bottomNav {
margin-top:10px;
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.subNav {
background-color:#dee3e9;
float:left;
width:100%;
overflow:hidden;
font-size:12px;
}
.subNav div {
clear:left;
float:left;
padding:0 0 5px 6px;
text-transform:uppercase;
}
ul.navList, ul.subNavList {
float:left;
margin:0 25px 0 0;
padding:0;
}
ul.navList li{
list-style:none;
float:left;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch {
float:right;
margin:0 0 0 0;
padding:0;
}
ul.navListSearch li {
list-style:none;
float:right;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch li label {
position:relative;
right:-16px;
}
ul.subNavList li {
list-style:none;
float:left;
}
.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
color:#FFFFFF;
text-decoration:none;
text-transform:uppercase;
}
.topNav a:hover, .bottomNav a:hover {
text-decoration:none;
color:#bb7a2a;
text-transform:uppercase;
}
.navBarCell1Rev {
background-color:#F8981D;
color:#253441;
margin: auto 5px;
}
.skipNav {
position:absolute;
top:auto;
left:-9999px;
overflow:hidden;
}
/*
* Styles for page header and footer.
*/
.header, .footer {
clear:both;
margin:0 20px;
padding:5px 0 0 0;
}
.indexNav {
position:relative;
font-size:12px;
background-color:#dee3e9;
}
.indexNav ul {
margin-top:0;
padding:5px;
}
.indexNav ul li {
display:inline;
list-style-type:none;
padding-right:10px;
text-transform:uppercase;
}
.indexNav h1 {
font-size:13px;
}
.title {
color:#2c4557;
margin:10px 0;
}
.subTitle {
margin:5px 0 0 0;
}
.header ul {
margin:0 0 15px 0;
padding:0;
}
.footer ul {
margin:20px 0 5px 0;
}
.header ul li, .footer ul li {
list-style:none;
font-size:13px;
}
/*
* Styles for headings.
*/
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList li.blockList h3 {
padding:0;
margin:15px 0;
}
ul.blockList li.blockList h2 {
padding:0px 0 20px 0;
}
/*
* Styles for page layout containers.
*/
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer,
.allClassesContainer, .allPackagesContainer {
clear:both;
padding:10px 20px;
position:relative;
}
.indexContainer {
margin:10px;
position:relative;
font-size:12px;
}
.indexContainer h2 {
font-size:13px;
padding:0 0 3px 0;
}
.indexContainer ul {
margin:0;
padding:0;
}
.indexContainer ul li {
list-style:none;
padding-top:2px;
}
.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
font-size:12px;
font-weight:bold;
margin:10px 0 0 0;
color:#4E4E4E;
}
.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
margin:5px 0 10px 0px;
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
.serializedFormContainer dl.nameValue dt {
margin-left:1px;
font-size:1.1em;
display:inline;
font-weight:bold;
}
.serializedFormContainer dl.nameValue dd {
margin:0 0 0 1px;
font-size:1.1em;
display:inline;
}
/*
* Styles for lists.
*/
li.circle {
list-style:circle;
}
ul.horizontal li {
display:inline;
font-size:0.9em;
}
ul.inheritance {
margin:0;
padding:0;
}
ul.inheritance li {
display:inline;
list-style:none;
}
ul.inheritance li ul.inheritance {
margin-left:15px;
padding-left:15px;
padding-top:1px;
}
ul.blockList, ul.blockListLast {
margin:10px 0 10px 0;
padding:0;
}
ul.blockList li.blockList, ul.blockListLast li.blockList {
list-style:none;
margin-bottom:15px;
line-height:1.4;
}
ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
padding:0px 20px 5px 10px;
border:1px solid #ededed;
background-color:#f8f8f8;
}
ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
padding:0 0 5px 8px;
background-color:#ffffff;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
margin-left:0;
padding-left:0;
padding-bottom:15px;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
list-style:none;
border-bottom:none;
padding-bottom:0;
}
table tr td dl, table tr td dl dt, table tr td dl dd {
margin-top:0;
margin-bottom:1px;
}
/*
* Styles for tables.
*/
.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary,
.requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
width:100%;
border-spacing:0;
border-left:1px solid #EEE;
border-right:1px solid #EEE;
border-bottom:1px solid #EEE;
}
.overviewSummary, .memberSummary, .requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
padding:0px;
}
.overviewSummary caption, .memberSummary caption, .typeSummary caption,
.useSummary caption, .constantsSummary caption, .deprecatedSummary caption,
.requiresSummary caption, .packagesSummary caption, .providesSummary caption, .usesSummary caption {
position:relative;
text-align:left;
background-repeat:no-repeat;
color:#253441;
font-weight:bold;
clear:none;
overflow:hidden;
padding:0px;
padding-top:10px;
padding-left:1px;
margin:0px;
white-space:pre;
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.constantsSummary caption a:link, .deprecatedSummary caption a:link,
.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link,
.usesSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover,
.usesSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.constantsSummary caption a:active, .deprecatedSummary caption a:active,
.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active,
.usesSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
.constantsSummary caption a:visited, .deprecatedSummary caption a:visited,
.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited,
.usesSummary caption a:visited {
color:#FFFFFF;
}
.useSummary caption a:link, .useSummary caption a:hover, .useSummary caption a:active,
.useSummary caption a:visited {
color:#1f389c;
}
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span,
.usesSummary caption span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
padding-bottom:7px;
display:inline-block;
float:left;
background-color:#F8981D;
border: none;
height:16px;
}
.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,
.overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#F8981D;
height:16px;
}
.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,
.overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#4D7A97;
height:16px;
}
.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,
.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,
.typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {
padding-top:0px;
padding-left:0px;
padding-right:0px;
background-image:none;
float:none;
display:inline;
}
.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
display:none;
width:5px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd,
.overviewSummary .activeTableTab .tabEnd, .typeSummary .activeTableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd,
.overviewSummary .tableTab .tabEnd, .typeSummary .tableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
background-color:#4D7A97;
float:left;
}
.rowColor th, .altColor th {
font-weight:normal;
}
.overviewSummary td, .memberSummary td, .typeSummary td,
.useSummary td, .constantsSummary td, .deprecatedSummary td,
.requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td {
text-align:left;
padding:0px 0px 12px 10px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .useSummary th,
.constantsSummary th, .packagesSummary th, td.colFirst, td.colSecond, td.colLast, .useSummary td,
.constantsSummary td {
vertical-align:top;
padding-right:0px;
padding-top:8px;
padding-bottom:3px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .constantsSummary th,
.packagesSummary th {
background:#dee3e9;
text-align:left;
padding:8px 3px 3px 7px;
}
td.colFirst, th.colFirst {
font-size:13px;
}
td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedItemName, th.colLast {
font-size:13px;
}
.constantsSummary th, .packagesSummary th {
font-size:13px;
}
.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst,
.providesSummary td.colLast {
white-space:normal;
font-size:13px;
}
.overviewSummary td.colFirst, .overviewSummary th.colFirst,
.requiresSummary td.colFirst, .requiresSummary th.colFirst,
.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,
.usesSummary td.colFirst, .usesSummary th.colFirst,
.providesSummary td.colFirst, .providesSummary th.colFirst,
.memberSummary td.colFirst, .memberSummary th.colFirst,
.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
.typeSummary td.colFirst, .typeSummary th.colFirst {
vertical-align:top;
}
.packagesSummary th.colLast, .packagesSummary td.colLast {
white-space:normal;
}
td.colFirst a:link, td.colFirst a:visited,
td.colSecond a:link, td.colSecond a:visited,
th.colFirst a:link, th.colFirst a:visited,
th.colSecond a:link, th.colSecond a:visited,
th.colConstructorName a:link, th.colConstructorName a:visited,
th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
.allClassesContainer td a:link, .allClassesContainer td a:visited,
.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
font-weight:bold;
}
.tableSubHeadingColor {
background-color:#EEEEFF;
}
.altColor, .altColor th {
background-color:#FFFFFF;
}
.rowColor, .rowColor th {
background-color:#EEEEEF;
}
/*
* Styles for contents.
*/
.description pre {
margin-top:0;
}
.deprecatedContent {
margin:0;
padding:10px 0;
}
.docSummary {
padding:0;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
font-style:normal;
}
div.block {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
td.colLast div {
padding-top:0px;
}
td.colLast a {
padding-bottom:3px;
}
/*
* Styles for formatting effect.
*/
.sourceLineNo {
color:green;
padding:0 30px 0 0;
}
h1.hidden {
visibility:hidden;
overflow:hidden;
font-size:10px;
}
.block {
display:block;
margin:3px 10px 2px 0px;
color:#474747;
}
.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink,
.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType,
.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel,
.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink {
font-weight:bold;
}
.deprecationComment, .emphasizedPhrase, .interfaceName {
font-style:italic;
}
.deprecationBlock {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
border-style:solid;
border-width:thin;
border-radius:10px;
padding:10px;
margin-bottom:10px;
margin-right:10px;
display:inline-block;
}
div.block div.deprecationComment, div.block div.block span.emphasizedPhrase,
div.block div.block span.interfaceName {
font-style:normal;
}
div.contentContainer ul.blockList li.blockList h2 {
padding-bottom:0px;
}
/*
* Styles for IFRAME.
*/
.mainContainer {
margin:0 auto;
padding:0;
height:100%;
width:100%;
position:fixed;
top:0;
left:0;
}
.leftContainer {
height:100%;
position:fixed;
width:320px;
}
.leftTop {
position:relative;
float:left;
width:315px;
top:0;
left:0;
height:30%;
border-right:6px solid #ccc;
border-bottom:6px solid #ccc;
}
.leftBottom {
position:relative;
float:left;
width:315px;
bottom:0;
left:0;
height:70%;
border-right:6px solid #ccc;
border-top:1px solid #000;
}
.rightContainer {
position:absolute;
left:320px;
top:0;
bottom:0;
height:100%;
right:0;
border-left:1px solid #000;
}
.rightIframe {
margin:0;
padding:0;
height:100%;
right:30px;
width:100%;
overflow:visible;
margin-bottom:30px;
}
/*
* Styles specific to HTML5 elements.
*/
main, nav, header, footer, section {
display:block;
}
/*
* Styles for javadoc search.
*/
.ui-autocomplete-category {
font-weight:bold;
font-size:15px;
padding:7px 0 7px 3px;
background-color:#4D7A97;
color:#FFFFFF;
}
.resultItem {
font-size:13px;
}
.ui-autocomplete {
max-height:85%;
max-width:65%;
overflow-y:scroll;
overflow-x:scroll;
white-space:nowrap;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
ul.ui-autocomplete {
position:fixed;
z-index:999999;
}
ul.ui-autocomplete li {
float:left;
clear:both;
width:100%;
}
.resultHighlight {
font-weight:bold;
}
#search {
background-image:url('resources/glass.png');
background-size:13px;
background-repeat:no-repeat;
background-position:2px 3px;
padding-left:20px;
position:relative;
right:-18px;
}
#reset {
background-color: rgb(255,255,255);
background-image:url('resources/x.png');
background-position:center;
background-repeat:no-repeat;
background-size:12px;
border:0 none;
width:16px;
height:17px;
position:relative;
left:-4px;
top:-4px;
font-size:0px;
}
.watermark {
color:#545454;
}
.searchTagDescResult {
font-style:italic;
font-size:11px;
}
.searchTagHolderResult {
font-style:italic;
font-size:12px;
}
.searchTagResult:before, .searchTagResult:target {
color:red;
}
.moduleGraph span {
display:none;
position:absolute;
}
.moduleGraph:hover span {
display:block;
margin: -100px 0 0 100px;
z-index: 1;
}
.methodSignature {
white-space:normal;
}
/*
* Styles for user-provided tables.
*
* borderless:
* No borders, vertical margins, styled caption.
* This style is provided for use with existing doc comments.
* In general, borderless tables should not be used for layout purposes.
*
* plain:
* Plain borders around table and cells, vertical margins, styled caption.
* Best for small tables or for complex tables for tables with cells that span
* rows and columns, when the "striped" style does not work well.
*
* striped:
* Borders around the table and vertical borders between cells, striped rows,
* vertical margins, styled caption.
* Best for tables that have a header row, and a body containing a series of simple rows.
*/
table.borderless,
table.plain,
table.striped {
margin-top: 10px;
margin-bottom: 10px;
}
table.borderless > caption,
table.plain > caption,
table.striped > caption {
font-weight: bold;
font-size: smaller;
}
table.borderless th, table.borderless td,
table.plain th, table.plain td,
table.striped th, table.striped td {
padding: 2px 5px;
}
table.borderless,
table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
border: none;
}
table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
background-color: transparent;
}
table.plain {
border-collapse: collapse;
border: 1px solid black;
}
table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
background-color: transparent;
}
table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
border: 1px solid black;
}
table.striped {
border-collapse: collapse;
border: 1px solid black;
}
table.striped > thead {
background-color: #E3E3E3;
}
table.striped > thead > tr > th, table.striped > thead > tr > td {
border: 1px solid black;
}
table.striped > tbody > tr:nth-child(even) {
background-color: #EEE
}
table.striped > tbody > tr:nth-child(odd) {
background-color: #FFF
}
table.striped > tbody > tr > th, table.striped > tbody > tr > td {
border-left: 1px solid black;
border-right: 1px solid black;
}
table.striped > tbody > tr > th {
font-weight: normal;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 959 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B

View file

@ -0,0 +1,112 @@
<html>
<head>
<title>Bildnachweise</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<head>
<body>
<h2>Akku</h2>
<img src="Akku.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=312747">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=312747">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/batterie-elektrische-strom-positiv-312747/">https://pixabay.com/de/vectors/batterie-elektrische-strom-positiv-312747/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Fass+Atommuell</h2>
<img src="Fass.png" style="float:left"> <img src="Atommuell.png" style="float:left">
Bild von <a href="https://pixabay.com/users/OpenClipart-Vectors-30363/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=146440">OpenClipart-Vectors</a> auf <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=146440">Pixabay</a>
<br>URL: <a href="https://pixabay.com/vectors/oil-barrel-black-mineral-oil-146440/">https://pixabay.com/vectors/oil-barrel-black-mineral-oil-146440/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
</body>
<h2>Feuer</h2>
<img src="Feuer.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Platten mit und ohne Knöpfe/Schalter usw</h2>
<img src="Wand.png"><img src="Rufknopf.png"><img src="RufknopfAus.png"><img src="SchalterEin.png"><img src="SchalterAus.png"><img src="Schloss.png"><img src="Stromquelle1.png"><img src="Stromquelle2.png"><img src="Stromquelle3.png"><img src="Stromquelle4.png">
<br>Bild auf Grundlage von <a href="https://pixabay.com/users/stux-12364/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=186943">Thanks for your Like • donations welcome</a> auf <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=186943">Pixabay</a>
<br>URL: <a href="https://pixabay.com/photos/mdf-platte-structure-fund-wood-186943/">https://pixabay.com/photos/mdf-platte-structure-fund-wood-186943/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Strom</h2>
<img src="Strom.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br><br>
<h2>Steine</h2>
<img src="Steine.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=48279">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=48279">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/felsen-felsbrocken-stein-48279/">https://pixabay.com/de/vectors/felsen-felsbrocken-stein-48279/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Roboter</h2>
<img src="Roboter.png"><img src="Robby.png"><img src="Robita.png"><img src="Robocount.png"><img src="Robson.png">
<br>Bild auf <a href="https://publicdomainvectors.org">Public Domain Vectors</a>
<br>URL: <a href="https://publicdomainvectors.org/de/kostenlose-vektorgrafiken/Comic-Roboter/47643.html">https://publicdomainvectors.org/de/kostenlose-vektorgrafiken/Comic-Roboter/47643.html</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Public Domain
<h2>Feuerlöscher</h2>
<img src="Feuerloescher.png" style="float:left">
Bild von <a href="https://pixabay.com/users/JJuni-27151/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1139909">JJuni</a> auf <a href="https://pixabay.com/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1139909">Pixabay</a>
<br>URL: <a href="https://pixabay.com/illustrations/fire-extinguisher-fire-fire-truck-1139909/">https://pixabay.com/illustrations/fire-extinguisher-fire-fire-truck-1139909/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Bombe</h2>
<img src="Bombe.png" style="float:left">
Bild von<a href="https://pixabay.com/fr/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33424">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/fr/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33424">Pixabay</a>
<br>URL: <a href="https://pixabay.com/fr/vectors/bombe-engin-explosif-grenade-33424/">https://pixabay.com/fr/vectors/bombe-engin-explosif-grenade-33424/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Diamant</h2>
<img src="Diamant.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Wild0ne-920941/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1221161">M. Maggs</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1221161">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/gems-edelsteine-wertvolle-juwel-1221161/">https://pixabay.com/de/vectors/gems-edelsteine-wertvolle-juwel-1221161/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Einsatzleiter</h2>
<img src="Person.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/kasiagrafik-10628923/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3812661">kasiagrafik</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=3812661">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/illustrations/feuerwehrmann-feuer-löschen-3812661/">https://pixabay.com/de/illustrations/feuerwehrmann-feuer-löschen-3812661/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Schraube</h2>
<img src="Schraube.png" style="float:left">
Bild von <a href="https://pixabay.com/de/users/Clker-Free-Vector-Images-3736/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33597">Clker-Free-Vector-Images</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=33597">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/vectors/schrauben-metall-eisen-verschluss-33597/">https://pixabay.com/de/vectors/schrauben-metall-eisen-verschluss-33597/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Portal</h2>
<img src="Portal.png" style="float:left">
Grundlage des Bildes auf <a href="https://www.maxpixel.net">Max Pixel</a>
<br>URL: <a href="https://www.maxpixel.net/Picture-Frame-Ring-Round-Circle-Shape-Pair-2885023">https://www.maxpixel.net/Picture-Frame-Ring-Round-Circle-Shape-Pair-2885023</a>
<br>Lizenz: <a href="https://creativecommons.org/share-your-work/public-domain/cc0/">CC0 - Public Domain </a>
<h2>Schlüssel</h2>
<img src="Schluessel.png" style="float:left">
Bild auf <a href="https://publicdomainvectors.org">Public Domain Vectors</a>
<br>URL: <a href="https://publicdomainvectors.org/en/free-clipart/Vector-clip-art-of-grey-shaded-metal-door-key/21166.html">https://publicdomainvectors.org/en/free-clipart/Vector-clip-art-of-grey-shaded-metal-door-key/21166.html</a>
<br>Lizenz: Public Domain
<h2>Aufzug</h2>
<img src="Aufzug.png" ><img src="Aufzugschacht.png" >
<img src="Aufzugschacht2.png" >
<br> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Bodenplatten</h2>
<img src="bluerock.png" ><img src="bluerock1.png" ><img src="bluerock2.png" ><img src="bluerock3.png" ><img src="Bodenplatte.png" ><img src="Bodenplatte1.png" ><img src="Kontaktplatte.png" >
<br> Selbst gezeichnet (Thomas Schaller, ZPG Informatik) mit Muster aus Gimp 2.0
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Ölfleck</h2>
<img src="Oelfleck.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Fragezeichen</h2>
<img src="Gegenstand.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Brennstab</h2>
<img src="Brennstab.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<h2>Türen</h2>
<img src="Tuer2.png" style="float:left"> <img src="Tuer1.png" style="float:left">Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br>
<br>
<h2>Sperrfläche</h2>
<img src="warnung1.png" style="float:left"> Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br><br>
<h2>Steinwände</h2>
<img src="Stein.png" style="float:left">
Bild auf Grundlage von <a href="https://pixabay.com/de/users/skeeze-272447/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1429207">skeeze</a> auf <a href="https://pixabay.com/de/?utm_source=link-attribution&amp;utm_medium=referral&amp;utm_campaign=image&amp;utm_content=1429207">Pixabay</a>
<br>URL: <a href="https://pixabay.com/de/photos/kiesel-steine-felsen-landschaftsbau-1429207/">https://pixabay.com/de/photos/kiesel-steine-felsen-landschaftsbau-1429207/</a> (Abrufdatum: 09.10.2019)
<br>Lizenz: Pixabay License, Freie kommerzielle Nutzung, Kein Bildnachweis nötig
<h2>Pfeile</h2>
<img src="pfeil0.png"><img src="pfeil90.png"><img src="pfeil180.png"><img src="pfeil270.png">
Selbst gezeichnet (Thomas Schaller, ZPG Informatik)
<br>Lizenz: <a href="https://creativecommons.org/licenses/by-nc-sa/3.0/de/">CC CC BY-NC-SA 3.0 DE</a>
<br><br>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 B

Some files were not shown because too many files have changed in this diff Show more