Zuerst möchte ich das Array "spielfeld" befüllen. Leider fehlt mir da einiges an Wissen wie ich das genau mache
Hoffentlich kann mir hier jemand helfen
Mein Ansatz für die Methode um das Array zu befüllen: (immerhin wird das Array befüllt, aber das auch nicht richtig)
Theoretisch müsste das Auswerten, ob 5 bzw 4 in einer Reihe sind mit einer rekursiven Methode gehen, aber zuert muss das Befüllen funktionieren ^^.
danke lg
Main Methode
Code:
int x = 5;
int y = 5;
String[][] spielfeld = new String[x][y];
for (int i = 0; i < x; i++) {
for (int j = 0; j<y; j++){
spielfeld[i][j] = ".";
}
}
setzen(spielfeld,'x',3);
Code:
public static void setzen (String[][] spielfeld, char c, int r){
char zeichen = c;
int reihe = r;
String z = ""+zeichen;
for(int i = 1; i<spielfeld.length+1; i++){
if(!spielfeld[spielfeld.length-i][r].contains(z)){
spielfeld[spielfeld.length- (i++)][r] = ""+ zeichen;
i = spielfeld.length-1;
if(i==4){ System.out.println("Spalte " + r + " ist VOLL"); System.exit(0);}
}
}
}
Du machst ziemlich seltsame Sachen in der einer setzen-Methode. Bei solchen Aufgaben ist es immer sinnvoll eine visuelle Ausgabe zu programmieren, sodass man sehr schnell erkennen kann, was passiert.
Java:
publicclassSpiel{privateString[][] spielfeld;publicstaticvoidmain(String[] args){Spiel spiel =newSpiel(10,5);//spiel.druckeSpielfeld();
spiel.setze('x',2);
spiel.druckeSpielfeld();}publicSpiel(int breite,int hoehe){
spielfeld =newString[breite][hoehe];for(int i =0; i < breite; i++){for(int j =0; j<hoehe; j++){
spielfeld[i][j]=".";}}}publicvoidsetze(char zeichen,int spalte){for(int i =0; i < spielfeld.length; i++){// Logik1: Wenn es kein nächstes Element mehr gibt oder das nächste Element kein "." ist, dann 'X' setzen.// Logik2: Wenn das oberste Element (i==0) ein X ist, dann ist die Reihe bereits voll
spielfeld[i][spalte-1]="X";}// return true / false, ob das setzen geklappt hat. Oder der Spieler es nochmal versuchen darf.}publicvoiddruckeSpielfeld(){for(int i =0; i < spielfeld.length; i++){for(int j =0; j < spielfeld[i].length; j++){System.out.print(spielfeld[i][j]);}System.out.println();}}}
PS: Ein char[][] müsste auch ausreichen. Zudem empfehle ich dir dein Spielfeld nicht quadratisch zu programmieren. Wenn du ausversehen X und Y vertauscht, kommt kein Fehler bzw. es funktioniert nur "zufällig". Den Fehler findest du nicht so schnell