TicTacToe

master
3009594 2024-11-08 17:01:20 +01:00
parent 8df2afc8cc
commit e8a38a501e
3 changed files with 148 additions and 0 deletions

View File

@ -0,0 +1,148 @@
package Übungen.TicTac;
import java.util.Random;
import java.util.Scanner;
public class TicTacToe {
static String[][] spielField = new String[3][3];
static String zufälligeZuges = "X";
static String menschlichenZuges = "O";
public static void Spielfelde() {
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
spielField[i][j] = " ";
}
public static void SpielfeldeAusgeben() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
System.out.print("[" + spielField[i][j] + "]");
System.out.println();
}
}
public static void zufälligKreuz() {
Random rand = new Random();
while (true) {
int x = rand.nextInt(3);
int y = rand.nextInt(3);
if (spielField[x][y].equals(" ")) {
spielField[x][y] = zufälligeZuges;
break;
} else
continue;
}
}
public static void menschlichenZuges(int x, int y) {
while (true) {
if (spielField[x][y].equals(" ")) {
spielField[x][y] = menschlichenZuges;
break;
} else {
System.out.println("Falsche Eingabe, Versuche bitte nochmal!");
continue;
}
}
}
public static boolean checkGewinner() {
// Zeilen überprüfen
for (int i = 0; i < 3; i++) {
if ((spielField[i][0].equals(zufälligeZuges) && spielField[i][1].equals(zufälligeZuges)
&& spielField[i][2].equals(zufälligeZuges))
|| (spielField[i][0].equals(menschlichenZuges) && spielField[i][1].equals(menschlichenZuges)
&& spielField[i][2].equals(menschlichenZuges))) {
return true;
}
}
// Spalten überprüfen
for (int i = 0; i < 3; i++) {
if ((spielField[0][i].equals(zufälligeZuges) && spielField[1][i].equals(zufälligeZuges)
&& spielField[2][i].equals(zufälligeZuges))
|| (spielField[0][i].equals(menschlichenZuges) && spielField[1][i].equals(menschlichenZuges)
&& spielField[2][i].equals(menschlichenZuges))) {
return true;
}
}
// Diagonalen überprüfen
if ((spielField[0][0].equals(zufälligeZuges) && spielField[1][1].equals(zufälligeZuges)
&& spielField[2][2].equals(zufälligeZuges))
|| (spielField[0][0].equals(menschlichenZuges) && spielField[1][1].equals(menschlichenZuges)
&& spielField[2][2].equals(menschlichenZuges))) {
return true;
}
if ((spielField[0][2].equals(zufälligeZuges) && spielField[1][1].equals(zufälligeZuges)
&& spielField[2][0].equals(zufälligeZuges))
|| (spielField[0][2].equals(menschlichenZuges) && spielField[1][1].equals(menschlichenZuges)
&& spielField[2][0].equals(menschlichenZuges))) {
return true;
}
return false;
}
public static boolean istSpielfeldVoll() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (spielField[i][j].equals(" ")) {
return false;
}
}
}
return true;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("<< Willkommen in Tic Tac Toe >> ");
Spielfelde();
SpielfeldeAusgeben();
boolean aktiv = true;
while (aktiv) {
System.out.println("Gib bitte Position x und Position y ein: ");
int x = scan.nextInt();
int y = scan.nextInt();
menschlichenZuges(x, y);
SpielfeldeAusgeben();
if (checkGewinner()) {
System.out.println("Spieler O hat gewonnen!");
aktiv = false;
} else if (istSpielfeldVoll()) {
System.out.println("Unentschieden!");
aktiv = false;
}
if (aktiv) {
System.out.println("Ein Kreuz wird zufällig gesetzt");
zufälligKreuz();
SpielfeldeAusgeben();
if (checkGewinner()) {
System.out.println("Spieler X hat gewonnen!");
aktiv = false;
} else if (istSpielfeldVoll()) {
System.out.println("Unentschieden!");
aktiv = false;
}
}
}
scan.close();
}
}