Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Name: Jason Hoteit
- package ArayTicTacToe;
- import java.util.Scanner;
- import java.util.Random;
- public class ArayTicTacToe {
- public static Random Rnd = new Random();
- // *************************************
- // Aufgabe: Soll den nächsten Spieler
- // auswählen
- //
- // Datentyp: char
- // *************************************
- public static char NächsterSpieler(char Spieler) {
- if (Spieler == 'X') { // Wenn Spieler X dran war...
- return 'O'; // kommt Spieler O dran.
- } else {
- return 'X'; // Nach Spieler O kommt Spieler X
- }
- }
- // *************************************
- // Aufgabe: Soll den Spieler der startet
- // zufällig festlegen
- //
- // Datentyp: int
- // *************************************
- public static char RandomSpieler() {
- int Zahl = Rnd.nextInt(2);
- if (Zahl == 0) {
- return 'X';
- } else {
- return 'O';
- }
- }
- // ******************************************
- // Aufgabe: Soll eine Level Auswahl
- // bieten (vs. Spieler, PC oder KI)
- //
- // Datentyp:
- // ******************************************
- public static void LevelAuswahl() {
- }
- // *************************************
- // Aufgabe: Soll eine Runde Spieler vs.
- // PC erlauben
- //
- // Datentyp: int, char, char [][]
- // *************************************
- public static void Fall2() {
- int r = 0;
- char[][] z = new char[5][5];
- char p = RandomSpieler();
- // Fall 2 Spieler vs. PC
- while (r == 0) {
- System.out.println(p + " ist am zug");
- Eingabe(z, p);
- Ausgabe(z);
- r = Auswertung(z);
- p = NächsterSpieler(p);
- }
- if (r == 1) {
- System.out.println("Spieler X hat gewonnen");
- } else if (r == 2) {
- System.out.println("Spieler O hat gewonnen");
- } else {
- System.out.println("Unentschieden");
- }
- }
- // *************************************
- // Aufgabe: Soll eine Runde Spieler vs.
- // Spieler erlauben
- //
- // Datentyp: int, char, char [][]
- // *************************************
- public static void Fall1() {
- int r = 0;
- char[][] z = new char[5][5];
- char p = RandomSpieler();
- // Fall 1 Spieler vs. Spieler
- while (r == 0) {
- System.out.println(p + " ist am zug"); // Sagt welcher Spieler dran ist
- Eingabe(z, p);
- Ausgabe(z);
- r = Auswertung(z);
- p = NächsterSpieler(p);
- }
- if (r == 1) {
- System.out.println("Spieler X hat gewonnen");
- } else if (r == 2) {
- System.out.println("Spieler O hat gewonnen");
- } else {
- System.out.println("Unentschieden");
- }
- }
- // ********************************************
- // Aufgabe: Wenn 1 zurück, ist das Feld belegt
- // Wenn 0 zurück, ist das Feld frei
- //
- // Datentyp: char[][], int
- // *************************************
- public static int TestFeld(char[][] x, int a, int b) {
- if ((x[a][b] == 'X') || (x[a][b] == 'O')) {
- System.out.println("Das Feld ist belegt, bitte wähle ein anderes.");
- return 1;
- } else { // Checkt ob das Feld belegt ist oder nicht, Feld belegt = 1, nicht belegt = 0
- return 0;
- }
- }
- // **************************************************
- // Rückagabe Integere: 0: Keiner hat gewonnen
- // 1: Spieler 1 (X) hat gewonnen
- // 2: Spieler 2 (O) hat gewonnen
- // **************************************************
- public static int Auswertung(char[][] x) {
- int h = 0;
- int erg = 0;
- if ((x[0][0] == 'X') && (x[1][0] == 'X') && (x[2][0] == 'X')) {
- erg = 1;
- }
- if ((x[0][1] == 'X') && (x[1][1] == 'X') && (x[2][1] == 'X')) {
- erg = 1;
- }
- if ((x[0][2] == 'X') && (x[1][2] == 'X') && (x[2][2] == 'X')) { // 3 gleiche Zeichen in einer Zeile
- erg = 1;
- }
- if ((x[0][0] == 'X') && (x[0][1] == 'X') && (x[0][2] == 'X')) {
- erg = 1;
- }
- if ((x[1][0] == 'X') && (x[1][1] == 'X') && (x[1][2] == 'X')) {
- erg = 1;
- }
- if ((x[2][0] == 'X') && (x[2][1] == 'X') && (x[2][2] == 'X')) { // 3 gleiche Zeichen in einer Reihe
- erg = 1;
- }
- if ((x[0][0] == 'X') && (x[1][1] == 'X') && (x[2][2] == 'X')) {
- erg = 1;
- }
- if ((x[2][0] == 'X') && (x[1][1] == 'X') && (x[0][2] == 'X')) { // 3 gleiche Zeichen senkrecht
- erg = 1;
- }
- if ((x[0][0] == 'O') && (x[1][0] == 'O') && (x[2][0] == 'O')) {
- erg = 2;
- }
- if ((x[0][1] == 'O') && (x[1][1] == 'O') && (x[2][1] == 'O')) {
- erg = 2;
- }
- if ((x[0][2] == 'O') && (x[1][2] == 'O') && (x[2][2] == 'O')) { // 3 gleiche Zeichen in einer Zeile
- erg = 2;
- }
- if ((x[0][0] == 'O') && (x[0][1] == 'O') && (x[0][2] == 'O')) {
- erg = 2;
- }
- if ((x[1][0] == 'O') && (x[1][1] == 'O') && (x[1][2] == 'O')) {
- erg = 2;
- }
- if ((x[2][0] == 'O') && (x[2][1] == 'O') && (x[2][2] == 'O')) { // 3 gleiche Zeichen in einer Reihe
- erg = 2;
- }
- if ((x[0][0] == 'O') && (x[1][1] == 'O') && (x[2][2] == 'O')) {
- erg = 2;
- }
- if ((x[2][0] == 'O') && (x[1][1] == 'O') && (x[0][2] == 'O')) { // 3 gleiche Zeichen senkrecht
- erg = 2;
- }
- h = 0; // Alle Felder sind voll
- for (int j = 0; j < 3; j++) {
- for (int i = 0; i < 3; i++) { // Wiedergabe vom Feld
- if (x[i][j] == 'X') {
- } else if (x[i][j] == 'O') {
- } else {
- h = 1; // Habe ein leeres Feld
- }
- }
- }
- if (erg == 0) { // In erg steht 0 = Unentschieden, 1 = Spieler X hat gewonnen, 2 = Spieler O hat
- // gewonnen
- if (h == 1) {
- return erg;
- } else {
- System.out.println("Das Spiel ist zu ende");
- return 3; // Spiel zu Ende
- }
- } else { // In erg steht 1 oder 2
- return erg;
- }
- }
- // *****************************************
- // Aufgabe: Soll dem Spieler eine Eingabe
- // zum platzieren eines Zeichens
- // ermöglichen
- //
- // Datentyp: char [][]
- // *****************************************
- public static void Eingabe(char[][] x, char c) {
- int h = 0; // Variable vom Typ Integer
- int Fall; // Variable vom Typ Integer
- String inData; // variable vom typ String
- char[][] y = new char[3][3]; // Hilfsaray zur Ausgabe der Zahlen je Feld
- y[0][0] = '1';
- y[1][0] = '2';
- y[2][0] = '3';
- y[0][1] = '4';
- y[1][1] = '5';
- y[2][1] = '6';
- y[0][2] = '7';
- y[1][2] = '8';
- y[2][2] = '9'; // Ausgabe des Spielfeldes mit Nummern
- Scanner scan = new Scanner(System.in); // Neues objekt vom Typ Scanner erstellen
- do { // Hier hin zurück wenn Feld besetzt
- Ausgabe(y);
- System.out.print("Bitte wähle ein Feld zwischen 1-9 aus: ");
- inData = scan.nextLine(); // Dateneingabe
- Fall = Integer.parseInt(inData); //
- switch (Fall) {
- case 1:
- h = TestFeld(x, 0, 0);
- break;
- case 2:
- h = TestFeld(x, 1, 0);
- break;
- case 3:
- h = TestFeld(x, 2, 0);
- break;
- case 4:
- h = TestFeld(x, 0, 1);
- break;
- case 5:
- h = TestFeld(x, 1, 1);
- break;
- case 6:
- h = TestFeld(x, 2, 1);
- break;
- case 7:
- h = TestFeld(x, 0, 2);
- break;
- case 8:
- h = TestFeld(x, 1, 2);
- break;
- case 9:
- h = TestFeld(x, 2, 2);
- break;
- }
- } while (h == 1); // Testen ob das Feld noch frei ist
- switch (Fall) {
- case 1:
- x[0][0] = c;
- break;
- case 2:
- x[1][0] = c;
- break;
- case 3:
- x[2][0] = c;
- break;
- case 4:
- x[0][1] = c;
- break;
- case 5:
- x[1][1] = c;
- break;
- case 6:
- x[2][1] = c;
- break;
- case 7:
- x[0][2] = c;
- break;
- case 8:
- x[1][2] = c;
- break;
- case 9:
- x[2][2] = c;
- break;
- }
- scan.close();
- }
- // *************************************************
- // Aufgabe : Soll ein Tic Tac Toe Feld ausgeben
- //
- // Datentyp: char [][]
- // *************************************************
- public static void Ausgabe(char[][] x) {
- char[][] a = new char[5][5];
- a[0][0] = x[0][0];
- a[1][0] = '│'; // Alt + 179 = │
- a[2][0] = x[1][0];
- a[3][0] = '│';
- a[4][0] = x[2][0]; // Erste Zeile des Feldes
- a[0][1] = '─'; // Alt + 196 = ─
- a[1][1] = '┼'; // Alt + 197 = ┼
- a[2][1] = '─';
- a[3][1] = '┼';
- a[4][1] = '─'; // Zweite Zeile des Feldes
- a[0][2] = x[0][1];
- a[1][2] = '│';
- a[2][2] = x[1][1];
- a[3][2] = '│';
- a[4][2] = x[2][1]; // Dritte Zeile des Feldes
- a[0][3] = '─';
- a[1][3] = '┼';
- a[2][3] = '─';
- a[3][3] = '┼';
- a[4][3] = '─'; // Vierte Zeile des Feldes
- a[0][4] = x[0][2];
- a[1][4] = '│';
- a[2][4] = x[1][2];
- a[3][4] = '│';
- a[4][4] = x[2][2];// Fünfte Zeile des Feldes
- for (int j = 0; j < 5; j++) {
- for (int i = 0; i < 5; i++) { // Wiedergabe vom Feld
- System.out.print(a[i][j]);
- }
- System.out.println();
- }
- }
- // *****************************************
- // Name: TicTacToe
- //
- // Aufgabe: Soll das Spiel Tic Tac Toe mit
- // 3 Leveln spielbar machen
- // *****************************************
- public static void main(String[] args) {
- LevelAuswahl();
- Fall1();
- Fall2();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement