This commit is contained in:
Tim Tersch
2020-09-03 11:09:17 +02:00
parent cc9fa6cb45
commit c47a4a6515
4 changed files with 100 additions and 14 deletions

View File

@@ -0,0 +1,46 @@
package main;
public class Board {
private char[][] board;
private final int BOARD_SIZE = 8;
private char[][] symbols;
public Board() {
board = new char[BOARD_SIZE * 3 + 1][BOARD_SIZE * 3 + 1];
for (int x = 0; x < board.length; x++) {
for (int y = 0; y < board[0].length; y++) {
if (x % BOARD_SIZE == 0) {
board[x][y] = '-';
}
if (y % BOARD_SIZE == 0) {
board[x][y] = '|';
}
if (x % BOARD_SIZE == 0 && y % BOARD_SIZE == 0) {
board[x][y] = '+';
}
}
}
symbols = new char[3][3];
}
public void place(int field, char playerSymbol) {
field--;
int row = field % 3;
int col = field / 3;
symbols[row][col] = playerSymbol;
}
public void draw() {
for (int x = 0; x < board.length; x++) {
for (int y = 0; y < board[0].length; y++) {
if (x % BOARD_SIZE == BOARD_SIZE / 2 && y % BOARD_SIZE == BOARD_SIZE / 2) {
System.out.print(symbols[y / BOARD_SIZE][x / BOARD_SIZE]);
} else {
System.out.print(board[x][y]);
}
}
System.out.println();
}
}
}

View File

@@ -3,26 +3,55 @@ package main;
import java.util.Scanner; import java.util.Scanner;
public class Input { public class Input {
private static Scanner s; private static Scanner s;
static { static {
s = new Scanner(System.in); s = new Scanner(System.in);
} }
public static int scanFieldInput() { public static int scanFieldInput() {
String input; String input;
do { int intInput = 0;
input = s.next();
if (!input.contains("[0-9]+")) { input = s.next();
System.out.println("Bitte eine Zahl eingeben!"); if (!inputOnlyNumbers(input)) {
} System.out.println("Bitte eine Zahl eingeben!");
} while (!input.contains("[0-9]+")); return scanFieldInput();
return Integer.parseInt(input); }
intInput = Integer.parseInt(input);
if (intInput > 9 || intInput < 1) {
System.out.println("Die Zahl muss zwischen 1 und 9 liegen!");
return scanFieldInput();
}
switch (intInput) {
case 1:
intInput = 7;
break;
case 2:
intInput = 8;
break;
case 3:
intInput = 9;
break;
case 7:
intInput = 1;
break;
case 8:
intInput = 2;
break;
case 9:
intInput = 3;
break;
}
return intInput;
}
private static boolean inputOnlyNumbers(String input) {
return input.matches("[0-9]+");
} }
public static void close() { public static void close() {
s.close(); s.close();
} }
//gesundheittttttt
} }

View File

@@ -8,9 +8,14 @@ public class Player {
this.symbol = symbol; this.symbol = symbol;
} }
public void makeTurn() { public int makeTurn() {
System.out.println(symbol + " ist am Zug!"); System.out.println(symbol + " ist am Zug!");
int in = Input.scanFieldInput(); return Input.scanFieldInput();
}
public char getSymbol() {
return symbol;
} }
} }

View File

@@ -2,12 +2,16 @@ package main;
public class TicTacToe { public class TicTacToe {
Board board;
Player player1, player2; Player player1, player2;
Player turn; Player turn;
private boolean running; private boolean running;
public TicTacToe() { public TicTacToe() {
board = new Board();
player1 = new Player('X'); player1 = new Player('X');
player2 = new Player('O'); player2 = new Player('O');
turn = player1; turn = player1;
@@ -20,7 +24,9 @@ public class TicTacToe {
} }
public void loop() { public void loop() {
turn.makeTurn(); board.draw();
int field = turn.makeTurn();
board.place(field, turn.getSymbol());
if (turn.equals(player1)) { if (turn.equals(player1)) {
turn = player2; turn = player2;
}else { }else {