Problem mit allShipsSunk()

http://pp.info.uni-karlsruhe.de/lehre/W ... rn/b03.pdf
RainerZufall
Beiträge: 27
Registriert: Sa 25. Okt 2008, 11:25

Problem mit allShipsSunk()

Beitrag von RainerZufall »

hi,
ich komme bei der allShipsSunk() methode nicht weiter, oder besser gesagt, mir sind ein paar Sachen unklar. Ich hab mir das eigentlich so vorgestellt das ich bei jedem mal wenn ich eine Bombe abwerfe frage ob ein Schiff versenkt wurde. Wenn ja, zähle ich eine Variable hoch und dann in allShipsSunk() wird verglichen ob diese Zahl gleich der max. Anzahl von Schiffen ist. Ob ein Schiff versenkt wurde wollte ich überprüfen indem ich von der Position der Bombe immer eins ins in jede Richtung gehe und schaue ob da schon ein Schiff getroffen wurde, wenn ja wieder eins weiter ... maximal solange bis die Anzahl der Schritte mit der des Wertigkeit des Schifftyps übereinstimmen.
Jetzt kann ich aber nicht mit Sicherheit sagen das ich ein Schiff ganz versenkt habe, ich meine, ich kann mir nicht sicher sein ob ich das eine Schiff nur angeschossen habe und das welches direkt daneben liegt auch angeschossen wurde. (ich hoffe das es mit dem Bild im Anhang deutlich wird, links die Schiffe, rechts die Bomben)

wenn gegeben wäre das jedes Schiff nur einmal vorkommen darf, könnte man über die Wertigkeit im Feld unterscheiden, aber das ist ja nicht (wenn doch hab ichs überlesen).

oder mach ich mir das zu kompliziert?
mfg
Rainer

//edit
ok, glaube ich habs mir doch zu kompliziert gemacht. Nach nochmaligen überlegen ist mir in den Kopf gekommen das ich ja gar nicht genau wissen muss welches Schiff genau gesunken ist, sondern nur ob alle gesunken sind. Ich durchlaufe also das ganze Feld und schau ob da wo ein Schiff sitzt auch eine Bombe geworfen wurde. Oder?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
DaVinci
Beiträge: 62
Registriert: Mi 5. Nov 2008, 01:20

Re: Problem mit allShipsSunk()

Beitrag von DaVinci »

Dein Ansatz sieht sehr prozedural aus. Versuch's mal objektorientiert ;)
Da fragst du das Schiff einfach, ob noch "ganze" Teile von ihm übrig sind. :D
¿ɯıɥ ssɐɹɹɐqɯǝ ʎɥʍ 'ʇou s,ʇı ɟı — noʎ llǝʇ ll,ǝɥ 'ɔɐɯ ɐ s,ʇı ɟı — sǝsn ǝɥ so ʇɐɥʍ uɐɯ ɐ ʞsɐ ɹǝʌǝu
RainerZufall
Beiträge: 27
Registriert: Sa 25. Okt 2008, 11:25

Re: Problem mit allShipsSunk()

Beitrag von RainerZufall »

wenn ich dich richtig verstehe meinst du für die Schiffe eine eigene Klasse anlegen, das ist laut Aufgabenstellung aber nicht erwünscht!?
Ihre zu implementierende Klasse soll das Spielfeld modellieren und die Spiellogik enthalten:
mfg Rainer
markusj
Beiträge: 164
Registriert: Do 23. Okt 2008, 22:07

Re: Problem mit allShipsSunk()

Beitrag von markusj »

Ich gebe DaVinci eigentlich recht, aber tatsächlich ist eine so saubere Programmierung nicht gefordert/gewünscht/erlaubt.

mfG
Markus
Patric
Beiträge: 99
Registriert: Do 23. Okt 2008, 22:41

Re: Problem mit allShipsSunk()

Beitrag von Patric »

markusj hat geschrieben:Ich gebe DaVinci eigentlich recht, aber tatsächlich ist eine so saubere Programmierung nicht gefordert/gewünscht/erlaubt.

mfG
Markus
man darf ja wohl ein Array an Schiffs Klassen dann in der Klass Spielfeld anlegen, und dann mit dem arbeiten. Kann mir wirklich nicht vorstellen, dass man das jetzt ohne Klassen machen soll...
markusj
Beiträge: 164
Registriert: Do 23. Okt 2008, 22:07

Re: Problem mit allShipsSunk()

Beitrag von markusj »

Wofür brauchst du dann dein zweites Array, und insbesondere die Konstanten "WATER", "MINESWEEPER" etc.?
Ich bin der Ansicht, dass der elegante Lösungsansatz sich nicht mit der Aufgabenbeschreibung deckt ... mal am Montag im Tutorium nachhaken ... oder die Newsgroup befragen.

mfG
Markus
Rob
Beiträge: 16
Registriert: Do 23. Okt 2008, 18:01
Wohnort: Pfinztal
Kontaktdaten:

Re: Problem mit allShipsSunk()

Beitrag von Rob »

Code: Alles auswählen

boolean flag = true;

for ( ... ) {
    for ( ... ) {
        if ( field[x][y] != WATER && !bomb[x][y] ) {
            flag = false;
        }
    }
}
So in etwa sieht das bei mir aus ;) Natürlich noch mit ein paar extra kontrollen :) Vielleicht hilft dir diesen ansatz weiter. So brauchst du nicht extra variabelen für jedes schiff dass du pflanzt
Bild Bild
Benutzeravatar
DaVinci
Beiträge: 62
Registriert: Mi 5. Nov 2008, 01:20

Re: Problem mit allShipsSunk()

Beitrag von DaVinci »

RainerZufall hat geschrieben:wenn ich dich richtig verstehe meinst du für die Schiffe eine eigene Klasse anlegen, das ist laut Aufgabenstellung aber nicht erwünscht!?
Ihre zu implementierende Klasse soll das Spielfeld modellieren und die Spiellogik enthalten:
mfg Rainer
Solange es nicht ausdrücklich verboten worden ist (und das ist es aus meiner Sicht nicht) und solange es dem Stil meines Programm zuträglich ist, füge ich eigene Klassen/Methoden hinzu (oder modelliere um) wie mir grad lustig ist.
Hat mir bisher auch keinerlei Abzüge erbracht, im Gegenteil.
Im letzten Blatt hab ich beispielsweise nicht die Terminal-Klasse genutzt. War nämlich nicht ausdrücklich gefragt. Tutor-Kommentar an der Stelle zu meinem Code&Comment: "gut" ;)
¿ɯıɥ ssɐɹɹɐqɯǝ ʎɥʍ 'ʇou s,ʇı ɟı — noʎ llǝʇ ll,ǝɥ 'ɔɐɯ ɐ s,ʇı ɟı — sǝsn ǝɥ so ʇɐɥʍ uɐɯ ɐ ʞsɐ ɹǝʌǝu
Benutzeravatar
Cauchy
Beiträge: 108
Registriert: So 30. Nov 2008, 17:08

Re: Problem mit allShipsSunk()

Beitrag von Cauchy »

Gut, also ich hab dann jetzt noch einen Einwand, bin zu einer Lösung gekommen, aber ich finde die Aufgabenstellung trotzdem recht ungenau.

Sind alle Schiffe versunken, wenn
a) die maximale Anzahl der möglichen Schiffe versunken wurden oder
b) wenn alle Schiffe, die platziert wurden versunken sind?

Wenn a) Hier gibt es ein Problem mit der Aufgabenstellung. Es ist erlaubt nachdem das Bombadieren angefangen hat Schiffe hinzuzufügen.
Laut Aufgabenstellung dürfen diese nicht auf bereits bombadierte Felder platziert werden. Das heißt, wir nehmen mal den Extremfall an:

Alle Felder wurden bombadiert und man kann schließlich keine weiteren Schiffe aufs Spielfeld platzieren. Sind jetzt alle Schiffe versenkt oder
nicht?

b) einfach umzusetzen.

Und PS: Bei welchen Schiffe versenken kann man nachträgliche Schiffe hinzufügen?!

Wäre nett, wenn mir jemand mal das erklären könnte.

Cauchy
Christian S.
Beiträge: 225
Registriert: Sa 25. Okt 2008, 12:48

Re: Problem mit allShipsSunk()

Beitrag von Christian S. »

Das ist nicht definiert, also würde ich naiv an die Sache herangehen und nur überprüfen, ob momentan noch Schiffe vorhanden sind, die nicht versenkt wurden. Ansonsten würde es ja noch komplizierter werden - denn was ist, wenn zwar noch nicht alle Schiffe platziert worden sind, aber keine mehr platziert werden können, weil das Spielfeld so bombardiert wurde, dass es keine zulässige Position mehr gibt?
Antworten

Zurück zu „Blatt 3 - Abgabe 12.12.08“