Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
Blatt 7 Aufgabe 1
Rock im Park rückt näher und ich hänge bei der ersten Aufgabe…
Die Klasse Group konnte ich noch problemlos implementieren. Nur stehe ich jetzt bei PlayingField auf dem Schlauch.
possible(Move move) soll prüfen ob der Zug gültig ist. Also möchte ich an dieser Stelle die von mir bereits implementierte Methode possible(Move move) aus Group aufrufen. Diese Methode ist jedoch nicht static - aber ich möchte sie ja auch in der Instanz von move.getGroup() (gibt einen int zurück) aufrufen.
Wie ist das syntaktisch (oder überhaupt?) zu bewerkstelligen?
Genau diese Problematik werde ich vermutlich bei den anderen Methoden auch noch bekommen.
Kann mir dabei vielleicht jemand weiterhelfen?
Vielen Dank schon mal!
Noch eine Frage die dann vielleicht schon mein Problem löst -
Zitat aus der Aufgabenstellung:
Was ist denn mit „ähnlich wie in einem Array“ gemeint? Welche Struktur soll ich denn nun zur Verwaltung verwenden?
Wenn ich ein static Array anlege, dann kenne ich ja leider die Größe nicht die ich brauche…
Die einzige Möglichkeit die mir jetzt einfällt wäre ein Array mit Int MAX_VALUE - sofern es mehr Gruppen gibt dann einen Fehler abfangen…
Aber das wäre ja dann nicht „ähnlich wie in einem Array“ sondern „GENAU“ wie in einem Array…
Wenn du dir die Vorlesungsfolien angeschaut hast, dann kennst du bereits weitere Datenstrukturen, die mehrere Elemente verwalten können. In der Aufgabe kannst du entweder ein Array benutzen oder einen dieser anderen Datenstrukturen.
Damit dürfte doch dann klar werden, wie du PlayingField implementierst.
PS.
Statis ist eine ganz schlechte Wahl. Alleine aus dem Grund schon, dass du zwei Instanzen von PlayingField erzeugen könntest (also zwei Spiele), die dann aber eben auf diegleichen Gruppen zugreifen würden.
Spielzüge
Ich stelle mir die Frage ob es der Fall eintreffen könnte, dass ein spieler nicht nur 1 und 2 ziehen versuchen wird und ob falls er zwei zieht dass er nicht nur nebeneinanderliegende schtreichhölzer zu ziehen versucht ?
Danke vorab
Theoretisch natürlich möglich. Was wird aber den Spieler wohl daran hindern?
Nun, das ist gar nicht möglich, da du das „Ziehen“ implementierst. Und solange du nicht zufällig zwei Streichhölzer ziehst, sollte alles gut gehen.
Was du dir evtl. überlegen musst ist die Position der zu ziehenden Streichhölzer …
Ok, habs verstanden. Nur kurze anmerkung. Wenn ich es richtig verstanden habe falls es Beispiel: e sei eine gruppe pos[0,1,2] gegeben und der spieler möchte 2 ziehen, so ist es theoretisch nicht denkbar, dass es an pos0 und pos2 zieht. Richtig?
An der Grammatik scheiterts, aber inhaltlich stimmts.
Vielen Dank Gaku für deine Antwort. Das mit der Verwaltungsstruktur habe ich nun hinbekommen.
Anhand dieser lasse ich auch die Methode possible in playingField den aktuellen move prüfen.
Allerdings stehe ich nach wie vor vor dem gleichen Problem - jetzt wo ich in proceed einen move ausführen möchte muss ich ja auf die Methode in Group zugreifen. Deren Rückgabewert kann ich dann verwenden um meine Verwaltungsstruktur in PlayingField auf aktuellem Stand zu halten.
Jetzt kann ich aber die Methode in Group nicht aufrufen, da sie ja non-static ist - das ist ja auch so gewollt.
Aber wie komme ich denn nun an die Methode?
Für einen kleinen Hinweis wäre ich seeehr dankbar
Vielen Dank schon mal!
Nevermind - habs gelöst
Stand ein bisschen auf dem Schlauch…
Hab das selbe Problem wie Deuflhard hatte. Wäre sehr dankbar für einen Tipp.
Deuflhard, auf gehts! Erklär RoEr wie du dein Problem gelöst hast, damit auch er sein gleiches (ähnliches) Problem in den Griff bekommt.
Wage zu vermuten, dass Deuflhard heute nicht online geht. Hat vlt. jemand einen Hinweis ?
Danke Vorab.
hmm eien fRage, Pos giubt ja an an welcher stelle ein streichholz oder zwei genommen werden, Woher weiß ich aber das wenn zwei Streichhölzer genommen werden, das zweite links oder rechts von Pos gezogen wird…
Beispiel:
size = 6;
pos = 1;
n = 2;
wenn ich hier das linke also Pos(0) mit entferne, würde ja die Gruppe nur verkleinert werden. wenn ich aber das rechte also Pos(2) ziehe so würden zwei gruppen entstehen. woher weiß ich den welche seite gezogen wird. da in Move ja nur Position mit anzahl gespeichert wird. oder wird wenn zwei gezogen werden immer (Pos + 1) als zweites gezogen?
@vaiquero Schau dir am besten mal die Übungsfolien an
Darf ich fur die Aufgabe andere Bibliotheksklassen importieren zB import.java.util. (um nicht Losung zu verraten?)*
Darf ich fur die Aufgabe andere Bibliotheksklassen importieren zB import.java.util.* (um nicht Losung zu verraten?)
Ich moechte die Datenstruktur bei PlayingField.java nicht durch ein Array loesen sonder durch eine angemessenere Datenstruktur.
Ist ein import von anderen Klassen erlaubt
zB, durch den Befehl
import java.util.“meineBenoetigteKlasse” vor dem Klassenkopf
Vielen Dank fur eure Hilfe
Mit der richtigen Datenstruktur kann man viele Probleme lösen.
Da auf dem Blatt nichts in die Richtung verboten wurde, und es dir die Arbeit erleichtert, spricht nichts dagegen, das zu tun. <
Imports aus der Java-Api sind ja nicht explizit untersagt
Sorry sorry sorry :C
Hey!
Sorry - ich hätte natürlich gerne geholfen!
Ich hatte auch einen schönen langen Beitrag geschrieben um meine Lösung zu umreißen - dann hat mir aber hier ein php-Error vom Forum beim Absenden meines Beitrages einen Strich durch die Rechnung gemacht. Dann war mir leider die Zeit zu knapp…
Nächstes Mal sehe ich auch zu meine Threads bis zur montäglichen Deadline etwas besser zu pflegen