diff --git a/Programmierung2/src/Algorithmus/SortierAlgorithmus/Determiniert & Terminierend & Deterministisch.pdf b/Programmierung2/src/Algorithmus/SortierAlgorithmus/Determiniert & Terminierend & Deterministisch.pdf new file mode 100644 index 0000000..dd3d700 Binary files /dev/null and b/Programmierung2/src/Algorithmus/SortierAlgorithmus/Determiniert & Terminierend & Deterministisch.pdf differ diff --git a/Programmierung2/src/Algorithmus/SortierAlgorithmus/In-place & Stabil.pdf b/Programmierung2/src/Algorithmus/SortierAlgorithmus/In-place & Stabil.pdf new file mode 100644 index 0000000..118e175 Binary files /dev/null and b/Programmierung2/src/Algorithmus/SortierAlgorithmus/In-place & Stabil.pdf differ diff --git a/Programmierung2/src/Übungen/TicTac/TicTacToe.java b/Programmierung2/src/Übungen/TicTac/TicTacToe.java new file mode 100644 index 0000000..50f63c8 --- /dev/null +++ b/Programmierung2/src/Übungen/TicTac/TicTacToe.java @@ -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(); + } + +}