Problem mit allShipsSunk()
Re: Problem mit allShipsSunk()
also ich würde eine neue globale variable einführen
shipsOnField
jaja ich weiß globale variable = ganz ganz hässlich
so
und immer wenn ich ein schiff setze dann zählt die variable hoch und zwar um 1-4 und zieht von maxShips das gleiche ab
ausserdem ist maxShips <= der anzahl der zellen
so jetzt zieht man für jeden erfolgreichen bombenabwurf 1 von der neuen variable ab.
und wenn die 0 ist hat man verloren.
das an maxships aufzuhänhgen find ich gelinde gesagt bescheuert, weil man dann ja theoretisch so lange spielen muss bis alle felder bombardiert wurden.
Ich denke nicht das es sinvoll ist ein neues objekt einzuführen, dass schiff heißt...
dann müsste man im extremfall int*int objekte im arbeitsspeicher ablegen...
aber jetzt weiß ich warum vista ein drittel meines arbeitsspeichers frisst....
shipsOnField
jaja ich weiß globale variable = ganz ganz hässlich
so
und immer wenn ich ein schiff setze dann zählt die variable hoch und zwar um 1-4 und zieht von maxShips das gleiche ab
ausserdem ist maxShips <= der anzahl der zellen
so jetzt zieht man für jeden erfolgreichen bombenabwurf 1 von der neuen variable ab.
und wenn die 0 ist hat man verloren.
das an maxships aufzuhänhgen find ich gelinde gesagt bescheuert, weil man dann ja theoretisch so lange spielen muss bis alle felder bombardiert wurden.
Ich denke nicht das es sinvoll ist ein neues objekt einzuführen, dass schiff heißt...
dann müsste man im extremfall int*int objekte im arbeitsspeicher ablegen...
aber jetzt weiß ich warum vista ein drittel meines arbeitsspeichers frisst....
-
- Beiträge: 225
- Registriert: Sa 25. Okt 2008, 12:48
Re: Problem mit allShipsSunk()
Das reicht aber nicht, denn wenn du zwar theoretisch noch genug freie Felder hast, muss das in der Praxis noch lange nicht heißen, dass du Schiffe platzieren kannst.horst hat geschrieben:also ich würde eine neue globale variable einführen
ausserdem ist maxShips <= der anzahl der zellen
Ein Beispiel:
X .
. X
Hier sind zwar noch zwei Felder frei, jedoch kannst du kein Schiff mehr platzieren, da diese eine Platzierung von Schiffen nicht zulassen.
Re: Problem mit allShipsSunk()
ach steht das irgendwo in der aufgabe?
wir haben unsern tutor dazu gefragt und der meinte es ist nicht gefordert also muss es das programm auch nicht können.
und wenn du jetzt argumentierst das die regeln von schiffe versenken so sind...
im schiffe versenken kann man auch nicht nachträglich noch schiffe einfügen...
wir haben unsern tutor dazu gefragt und der meinte es ist nicht gefordert also muss es das programm auch nicht können.
und wenn du jetzt argumentierst das die regeln von schiffe versenken so sind...
im schiffe versenken kann man auch nicht nachträglich noch schiffe einfügen...
Re: Problem mit allShipsSunk()
Oder du suchst einfach kurz durch dein Array, ob auf allen Positionen, an denen kein Wasser ist, ein Bombenabwurf stattfand.horst hat geschrieben:also ich würde eine neue globale variable einführen
shipsOnField
jaja ich weiß globale variable = ganz ganz hässlich
so
Und im übrigen: Keine globale Variable, sondern eine private Variable in Spielfeld-Klasse! Das macht einen großen Unterschied, für Prof. Snelting sogar die Welt ...
mfG
Markus
Re: Problem mit allShipsSunk()
ok also ich meinte mit globale variable
ne variable in class square{} oder wie auch immer das bei dir heißt...
jedenfalls ist die doch global(zumindest für die klasse) oder nicht???
also das ist keine rhetorische frage sondern ernst gemeint:
private/public regelt doch die zugriffsrechte auf diese variable und
der begriff lokal/global, der ja rein theoretischer natur in java ist bezeichnet doch die lebensdauer im arbeitsspeicher bzw den gültigkeitsbereich im programm???
und meinst du nicht dass es sinvoller ist den wert einer variablen abzufragen, als nen verhältnismäßig aufwendigen test durchzuführen??
ne variable in class square{} oder wie auch immer das bei dir heißt...
jedenfalls ist die doch global(zumindest für die klasse) oder nicht???
also das ist keine rhetorische frage sondern ernst gemeint:
private/public regelt doch die zugriffsrechte auf diese variable und
der begriff lokal/global, der ja rein theoretischer natur in java ist bezeichnet doch die lebensdauer im arbeitsspeicher bzw den gültigkeitsbereich im programm???
und meinst du nicht dass es sinvoller ist den wert einer variablen abzufragen, als nen verhältnismäßig aufwendigen test durchzuführen??
Re: Problem mit allShipsSunk()
Es ist keine globale Variable, weil es sich dabei um ein Attribut handelt, dessen Wert objektspezifisch sein kann.
Lokal bedeutet, dass die Variable nur innerhalb einer Methode "lebt" (und mit verlassen dieser "stirbt").
Und du müsstest dir nicht die Anzahl der verbleibenden Schiffe merken, sondern die Anzahl der noch zu treffenden Felder, damit würde eine Überprüfung auf vollständig versenkte Schiffe entfallen und es wäre noch ne Portion eleganter.
mfG
Markus
Lokal bedeutet, dass die Variable nur innerhalb einer Methode "lebt" (und mit verlassen dieser "stirbt").
Und du müsstest dir nicht die Anzahl der verbleibenden Schiffe merken, sondern die Anzahl der noch zu treffenden Felder, damit würde eine Überprüfung auf vollständig versenkte Schiffe entfallen und es wäre noch ne Portion eleganter.
mfG
Markus
Re: Problem mit allShipsSunk()
wie wärs, wenn ihr eine variable shipParts einführt und bei jedem Schiff, dass ihr hinzufügt, die Schiffslänge zu dieser Variablen hinzuaddiert... und jedesmal, wenn eine Bombe ein Schiff trifft, zieht ihr einen ab ( shipParts--; ) Solange diese Variable > 0 sind noch Schiffe auf dem Feld
so far.
Code: Alles auswählen
public Boolean AllShipsSunk() {
if(shipParts>0)
return false;
return true;
}
Re: Problem mit allShipsSunk()
array ships durchgehen und jedes mit einem schiff belegte feld auf positiven wert in bombs array vergleichen.
Sobald ein nicht getroffenes Schiff gefunden: "return false;" (return in Schleife, ich weiß … und's ist mir sowas von egal )
Sobald ein nicht getroffenes Schiff gefunden: "return false;" (return in Schleife, ich weiß … und's ist mir sowas von egal )
¿ɯıɥ ssɐɹɹɐqɯǝ ʎɥʍ 'ʇou s,ʇı ɟı — noʎ llǝʇ ll,ǝɥ 'ɔɐɯ ɐ s,ʇı ɟı — sǝsn ǝɥ so ʇɐɥʍ uɐɯ ɐ ʞsɐ ɹǝʌǝu
Re: Problem mit allShipsSunk()
return geht wohl laut Übungsleiter klar, nur break ist weiterhin als 'böse' deklariertDaVinci hat geschrieben:return in Schleife, ich weiß … und's ist mir sowas von egal
Re: Problem mit allShipsSunk()
Naja, ein "return" in einer Schleife bricht diese genauso ab, wie es ein "break" tun würdeSascha hat geschrieben:return geht wohl laut Übungsleiter klar, nur break ist weiterhin als 'böse' deklariertDaVinci hat geschrieben:return in Schleife, ich weiß … und's ist mir sowas von egal
Mein Code für Übung 3 enthält: 6 breaks und 2 returns jeweils in der Mitte einer Methode (auf knapp 170 Zeilen) und jeder dieser Fälle wäre ohne ein purer PITA gewesen.
¿ɯıɥ ssɐɹɹɐqɯǝ ʎɥʍ 'ʇou s,ʇı ɟı — noʎ llǝʇ ll,ǝɥ 'ɔɐɯ ɐ s,ʇı ɟı — sǝsn ǝɥ so ʇɐɥʍ uɐɯ ɐ ʞsɐ ɹǝʌǝu