Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
nein eine neue DatenKlasse brauchst du nicht du kannst aber das Objekt was du aus der User Eingabe Methode zurück bekommst gleich an die Methode Übergeben. Zeile Spalte sind ja in dem Objekt.
Du kannst eine Methode schreiben, die ein Feld setzt. Die sollte dann in der Klasse Spielbrett (Du machst es ja gerne auf Deutsch, ich meine die Klasse Board, die ich schon einmal skizziert habe) sein. Und statt zeile/spalte wäre dann eine Instant der Klasse Position (oder wie immer du die gerne nennen möchtest, aber bitte nicht Datenklasse!) zu übergeben.
nein eine neue DatenKlasse brauchst du nicht du kannst aber das Objekt was du aus der User Eingabe Methode zurück bekommst gleich an die Methode Übergeben. Zeile Spalte sind ja in dem Objekt.
Die Methode wird hoffentlich Bestandteil des Spielbretts / Boards sein und dazu dienen, ein einzelnes Feld zu setzen. Und das wären - nach meinem Vorschlag, ein Wert aus der Menge FIRST_PLAYER, SECOND_PLAYER und EMPTY.
Die Methode wird hoffentlich Bestandteil des Spielbretts / Boards sein und dazu dienen, ein einzelnes Feld zu setzen. Und das wären - nach meinem Vorschlag, ein Wert aus der Menge FIRST_PLAYER, SECOND_PLAYER und EMPTY.
"wert" ist aber vom Datentyp Spielfeld also das Board . wo ist jetzt Spieler 1 oder 2 ?
das Board ist eine Instanzvariable die braucht er nicht zu übergeben . aber ob es sich um Spieler 1 oder 2 handelt schon. Er will ja den Spieler auf das mit Zeile und Spalte angeben Feld setzen.
Du kannst eine Methode schreiben, die ein Feld setzt. Die sollte dann in der Klasse Spielbrett (Du machst es ja gerne auf Deutsch, ich meine die Klasse Board, die ich schon einmal skizziert habe) sein. Und statt zeile/spalte wäre dann eine Instant der Klasse Position (oder wie immer du die gerne nennen möchtest, aber bitte nicht Datenklasse!) zu übergeben.
Das verstehe ich leider nicht. Also soll ich jetzt meine Datenklasse an die Methode übergeben?
Und wie kann ich genau an diesem Punkt/Koordinaten dann das X oder O setzen?
Der user macht eine Eingabe in der Methode eingabeDerStelle() zurück bekommst du ein Objekt vom Typ „Datenklasse“
In dem Objekt ist die Zeile und Spalte.
Jetzt willst du die Eingabe prüfen in „PrüfenObWertGültigIst“ aber was übergingst du Zeile und Spalte. Woher hast du die zwei werte die sind doch in dem Objekt.
Was musst du übergeben das Objekt von der User Eingabe.
Der user macht eine Eingabe in der Methode eingabeDerStelle() zurück bekommst du ein Objekt vom Typ „Datenklasse“
In dem Objekt ist die Zeile und Spalte.
Jetzt willst du die Eingabe prüfen in „PrüfenObWertGültigIst“ aber was übergingst du Zeile und Spalte. Woher hast du die zwei werte die sind doch in dem Objekt.
Was musst du übergeben das Objekt von der User Eingabe.
Die Logik der Methode ist einfach weiterhin falsch. Und wir hatten das schon mehrfach benannt. Ob Du nun Zeile / Spalte einzeln übergibst oder in einer Position ist erst einmal egal. Die Logik solltest Du erst einmal korrigieren.
Bei dir ist jeder Wert korrekt, denn entweder ist eine Zahl >= 0 oder eben <=2. Und die Spalte prüfst Du niemals bei der Logik....
Die Logik der Methode ist einfach weiterhin falsch. Und wir hatten das schon mehrfach benannt. Ob Du nun Zeile / Spalte einzeln übergibst oder in einer Position ist erst einmal egal. Die Logik solltest Du erst einmal korrigieren.
Bei dir ist jeder Wert korrekt, denn entweder ist eine Zahl >= 0 oder eben <=2. Und die Spalte prüfst Du niemals bei der Logik....
Es gibt ein 08/15 Verfahren, das man nutzen kann:
- In der Methode erst alles, was eindeutig ist, abhandeln mit einem return true / false;
- Dann am Ende das übriggebliebene zurückgeben.
Das ginge dann über etwas wie
Java:
boolean isPositionValid(Position pos) {
if (pos.getSpalte() < 0) return false;
if ......
if ......
return true;
}
Aber das ist so nicht zwingend notwendig. Das ist viel Code für wenig Funktionalität.
Es reicht ja schon, die Kriterien zu verknüpfen. Was muss denn erfüllt sein?
Spalte größer gleich 0 UND Spalt kleiner gleich 2 UND Zeile größer gleich 0 und Zeile <= 2:
Es gibt ein 08/15 Verfahren, das man nutzen kann:
- In der Methode erst alles, was eindeutig ist, abhandeln mit einem return true / false;
- Dann am Ende das übriggebliebene zurückgeben.
Das ginge dann über etwas wie
Java:
boolean isPositionValid(Position pos) {
if (pos.getSpalte() < 0) return false;
if ......
if ......
return true;
}
Aber das ist so nicht zwingend notwendig. Das ist viel Code für wenig Funktionalität.
Es reicht ja schon, die Kriterien zu verknüpfen. Was muss denn erfüllt sein?
Spalte größer gleich 0 UND Spalt kleiner gleich 2 UND Zeile größer gleich 0 und Zeile <= 2:
Mein weiteres Vorgehen wird jetzt wie folgt aussehen:
1) ich erstelle eine neue Klasse "Spielregeln". In dieser werde ich dann die Regeln überbringen durch Methoden. -> 3 in einer Reihe, 3 in Quer usw.
Dann soll eine Win Nachricht ausgegeben werden. Dazu nutze ich auch wieder eine Methode. Man kann dafür ja eventuell wieder die if Anweisungen nutzen.
Bei diesen Code überlege dir was return macht.
Es beendet die Methode.
Wenn das erste if true ist wird die Methode beendet.
Sollte sie aber nicht denn du bist mit deinen prüfen noch nicht fertig.
Bei diesen Code überlege dir was return macht.
Es beendet die Methode.
Wenn das erste if true ist wir die Methode beendet.
Sollte sie aber nicht denn du bist mit deinen prüfen noch nicht fertig.