Wie kann ich ein Spielbrett in Java erstellen?

MrAmazing2  30.05.2021, 14:52

Wozu dient das Spielbrett?

Benutzt ihr irgendwelche Grafik-Libraries?

Ozlemm0306 
Fragesteller
 30.05.2021, 14:57

es soll ein TicTacToe spielbrett werden

3 Antworten

Benutz ein zwei-dimensionales Array als Spielfeld:

int[][] gameBoard = new int[n][n];

Das ist standardmäßig mit 0 befüllt.

Willst du es mit etwas anderem befüllen (oder z.B. ein Char-Array voller Leertasten), dann geht das mit einer verschachtelten Schleife:

for(int y = 0; y < n; y++) {
  for(int x = 0; x < n; x++) {
    gameBoard[y][x] = gewuenschterStartwert;
  }
}

Falls du eine Print-Funktion brauchst, mit Trenn-Linien etc., benutze folgenden Code:

for(int i = 0; i < n; i++) {
  for(int j = 0; j < n; j++) {
    System.out.print(" " + gameBoard[i][j]);
    if(j < n-1) System.out.print(" │");
  }

  //Waagerechte Trennlinie:
  if (i < n-1) {
    System.out.print("\n───");
    for(int j = 0; j < n-1; j++) System.out.print("┼───");
    System.out.println();
  }
}

Eine Ausgabe sieht dann z.B. so aus:

 O │ X │ X
───┼───┼───
 X │ O │ O
───┼───┼───
 X │ O │ X
Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
Ozlemm0306 
Fragesteller
 30.05.2021, 14:58

könntest du mir vielleicht aufschreiben wie ich das ganze genau als Code schreiben sollte?

0
MrAmazing2  30.05.2021, 15:01
@Ozlemm0306

Ich nehme mal an du hast ein zwei-dimensionales String oder Int Array (ich nenne es gameBoard) in dem der derzeitige Stand des Spiels gespeichert ist.

Dann machst du das Spielbrett so:

for(int i = 0; i < n; i++) {
  for(int j = 0; j < n; j++) {
    System.out.print(gameBoard[i][j]);
  }
  System.out.println();
}

Eine Ausgabe sieht dann z.B. so aus:

X-O
-OO
-XX
1
Ozlemm0306 
Fragesteller
 30.05.2021, 15:04
@MrAmazing2

muss ich gameBoard hierfür vorher erstellen, oder ist das hier dann so schon erstellt?

0
MrAmazing2  30.05.2021, 15:04
@Ozlemm0306

Musst du erstellen.

Irgendwo musst du ja die Daten speichern, wie dein Spielfeld derzeit aussieht.

0
Ozlemm0306 
Fragesteller
 30.05.2021, 15:05
@MrAmazing2

reicht es mit private gameBoard; ? oder private int [][] gameBoard;?

0
MrAmazing2  30.05.2021, 15:06
@Ozlemm0306

private int [][] gameBoard;

Oder am besten sogar String, dann kannst du gleich 'X' und 'O' für die Spieler hernehmen, und '-' für unbesetzt.

private String[][] gameBoard;

Initialisieren musst du es noch irgendwo.

1
MrAmazing2  30.05.2021, 15:11
@MrAmazing2

Char meinte ich, sorry :D

Und am besten initialisierst du es auch gleich:

char[][] gameBoard = new char[n][n];

Und mit '-' kannst du es auch direkt befüllen:

for(int i = 0; i < n; i++) {
  for(int j = 0; j < n; j++) {
    gameBoard[i][j] = '-';
  }
}
0
Ozlemm0306 
Fragesteller
 30.05.2021, 15:26
@MrAmazing2
for(int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        this.board[i][j] = 0
    }

ginge es auch so?

0
MrAmazing2  30.05.2021, 15:35
@Ozlemm0306

Jo, wenn du ein int-array hernimmst, dann passt das so. ^^

(Natürlich fehlt am Ende noch eine geschweifte Klammer zu } , aber ich denke die hast du einfach nur beim rüberkopieren vergessen :D )

0

Ein 2D-Array oder gar ein 1D-Array (wo du dann eben die Kombination von Zeile und Spalte auf einen Index umrechnest)

Ozlemm0306 
Fragesteller
 30.05.2021, 14:50

ich würd gerne einen Weg ohne Array finden wollen

0
MrAmazing2  30.05.2021, 14:58
@Ozlemm0306

Warum das?

Falls du Daten speichern willst (was bei TicTacToe der Fall ist) wirst du ein Array brauchen..

1

Brauchst du eine grafische Oberfläche?

Woher ich das weiß:Hobby – Beschäftige mich schon länger damit!
Ozlemm0306 
Fragesteller
 30.05.2021, 14:49

Ich bin mir leider nicht ganz sicher. In meiner Aufgabe steht nur erzeugt ein Spielbrett .

0
Regex20921518  30.05.2021, 14:50
@Ozlemm0306

Dann loop dich einmal durch eine Array Liste durch und erzeuge durch Print ein Spielbrett...

0