Hilfe beim programmieren von Krümel und Monster?
Hallo zusammen.
Informatik liegt mir nicht wirklich und das Thema versteh ich gar nicht. Könnt ihr mir bei den ersten 2 Aufgaben helfen?
Die ganze Datei gibts auf kruemelundmonster.de Kapitel 11
Vielen Dank im Voraus!
Die Datei ist leider schreibgeschützt, aber man kann sie auch hier finden: http://kruemelundmonster.de/unterrichtskonzept.html --》 dann Kapitel 11
2 Antworten
Mal abgesehen von dem Fehler in der Aufgabenstellung...
11.1
Hier haste Du eine Methode, die Du im Struktodingens sieht, die im Grunde Dir zeigt, wie die "Arbeitsanweisung" eines Objekts unter bestimmten Bedingungen ist:
Die Methode bezieht sich auf die Arbeitsanweisung nach Osten gehen.
nachOstenGehen()
Die Einschränkung ist gegeben durch die
positionX < 10 - 1
Hier prüft der also, ob die Position kleiner als 10-1 ist (true) oder ob sie nicht kleiner als 10 - 1 ist (false)
Das Feld, wo das Ding nach rechts gehen kann, ist 10 Felder breit. Nen Algorithmus fängt bei 0 an zu zählen, daher minus 1.
Der guckt halt auf welcher Position sich das Objekt gerade befindet, und wenn diese Position kleiner als die Feldbreite ist, also "true", dann macht er folgendes:
positionX = positionX + 1;
Die Variable positionX, wo die Position gespeichert ist (wahrscheinlich ne Zahl), wir mit der Zuweisung positionX + 1 um 1 erhöht und der Variablen links positionX somit ein neuer Wert (um 1 erhöht) zugewiesen.
Wenn die Position nicht kleiner als 10 - 1 ist (wie zählen dabei die Felder von links nach rechts beginnend bei 0 durch), also "false", dann macht er nix.
Also das, was in dem Dreieck steht, ist für die Einschränkung verantwortlich.
Die Einschränkung kann man aufheben, indem man das, was in dem Dreieck steht wegnimmt und auch den Part true, false rausnimmt, weil ja dann keine Abfrage bzw. Bedingung mehr da ist.
Wenn die sich allerdings auf die Einschränkung beziehen, dass das Ganze nur für ein Feld der Größe 10 x 10 funktioniert und eben nicht für eins der Größe 20 x 20, dann kann man diese Einschränkung aufheben, indem man die Bedingung ändert von positionX < 10 - 1 zu positionX < 20 - 1 oder man ist richtig cool und speichert die Feldgröße in einer weiteren Variable und macht ein positionX < feldgroesse - 1 draus, was eine Eigenschaft des Labyrinths wäre (wo er nachfragt).
11.2
Voraussetzung, dass Mampfi mit dem Labyrinth kommunizieren kann, ist, dass das Labyrinth sichtbar für Mampfi ist. Das heißt die Klasse muss entweder public sein oder zumindest im gleichen "Ordner", ein sogenanntes Paket, abgespeichert wie Mampfi... Oder Mampfi ist eine Unterklasse zu Labyrinth, weil damit würde die Klasse Mampfi alle Eigenschaften, Methoden und Variablen, von Labyrinth erben.
Die bezeichnen das als Referenz, die sich ergibt, wenn Du die "Adresse" zur Klasse anwählen kannst. Voraussetzung dafür ist, was ich beschrieben hab. Entweder ist Mampfi eine Unterklasse zu Labyrinth, also Mampfi extends Labyrinth oder Labyrinth ist z. B. public. Dann würdest Du ggfs Labyrinth in die Mampfi-Klasse implementieren, d. h. dass Du quasi in der Mampfi-Klasse zu Beginn das Paket benennst, wo sich die Klasse Labyrinth befindet, damit das Programm weiß, wo es reingucken muss, um die Klasse und die Eigenschaften oder Methoden von Labyrinth zu finden sind.
Die Datei ist scheinbar schreibgeschützt und man kann die Aufgabe nicht lesen
Das Blatt gibts auf http://kruemelundmonster.de/unterrichtskonzept.html bei Kapitel 11.
DieLösung steht da drunter in der pdf.
Im Grunde hast Du die Klasse Mampfi. Und in dieser Klasse sind zum Einen die Klassenvariablen und die Klassenmethoden gespeichert.
Wenn Du so eine Beziehung erstellen willst, musst Du der Klasse Mampfi, eine Objektvariable Labyrinth zuordnen, in dem ein Labyrinth, in dem Mapfi sich bewegt, gespeichert wird.
Das heißt, Du erstellst erst das Objekt und wenn Du ein Objekt Mampfi erstellst, weist Du ihm im Konstruktor Mampfi das erstellte Labyrinth-Objekt zu. Ein Konstruktor ist eine spezielle Methode bei Objekten, die speziell für die Objekt-Erstellung dient, wobei eine Klasse als Vorlage für das Objekt dient. Innerhalb der Konnstruktormethode kannst Du bestimmen, was mit den übergebenen Variablen-Werten passiert.
Hier wäre das dann z. B. bei der Klasse Mampfi, dass Du im Konstruktor
MAMPFI(LABYRINTH labyrinth) {
laby = labyrinth;
}
Das übergebene Objekt labyrinth mittels des Konstruktors dem Objekt Mampfi bei seiner Erstellung der Mampfi-Variable laby zuordnest und damit das Objekt labyrinth da speicherst.
Noch mal neu, auf verständlichem Deutsch:
DieLösung steht da drunter in der pdf.
Im Grunde hast Du die Klasse Mampfi. Und in dieser Klasse sind zum Einen die Klassenvariablen und die Klassenmethoden gespeichert.
Wenn Du so eine Beziehung erstellen willst, musst Du der Klasse Mampfi, eine Objektvariable Labyrinth zuordnen, in dem ein Labyrinth, in dem Mapfi sich bewegt, gespeichert wird.
Das heißt, Du erstellst erst das Objekt und wenn Du ein Objekt Mampfi erstellst, weist Du ihm im Konstruktor Mampfi das erstellte Labyrinth-Objekt zu.
Ein Konstruktor ist eine spezielle Methode von Klassen, die speziell der Objekt-Erstellung dient, wobei eine Klasse als Vorlage für das Objekt verwendet wird.
Innerhalb der Konstruktormethode kannst Du bestimmen, was mit den übergebenen Variablen-Werten (zwischen den Klammern) passiert.
Hier wäre das dann z. B. bei der Klasse Mampfi, dass Du im Konstruktor
MAMPFI(LABYRINTH labyrinth) {
laby = labyrinth;
}
Das übergebene Objekt labyrinth mittels des Konstruktors dem Objekt Mampfi bei seiner Erstellung der Mampfi-Variable laby zuordnest und damit das Objekt labyrinth da speicherst.
Die Mampfi-Klasse selbst, also die Vorlage, hat dann für jedes Mampfi-Objekt eine LABYRINTH laby-Objektvariable vorgesehen als eine Art Speicherplatz bzw. Verknüpfung zu einem speziellen Objekt vom Klassentyp Labyrinth.
Du rettest mir das Leben. Dankesehr!