Hallo Leute ich habe mich an einem simplen tic-tac-toe spiel versucht.
Leider erkennt das Spiel nicht wenn ein Feld schon belegt ist.
Hier ist der Source:
TicTacToe.java
game.java
Das problem ist das diese Zeile nicht erkennt wenn ein feld belegt ist:
Wär super von euch wenn ihr euch mein problem ansehen würdet
Leider erkennt das Spiel nicht wenn ein Feld schon belegt ist.
Hier ist der Source:
TicTacToe.java
Java:
package tictactoe;
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
int i = 0;
while(i<1) {
//main loop
System.out.println("----------------------");
System.out.println("-(1) Start Game -");
System.out.println("-(2) Exit Game -");
System.out.println("----------------------");
Scanner sc = new Scanner(System.in);
int choose = sc.nextInt();
switch (choose) {
case 1:
startGame();
case 2:
i++;
}
}
}
private static void startGame() {
Scanner gm = new Scanner(System.in);
System.out.println("Please enter name1:");
String name1 = gm.nextLine();
System.out.println("Please enter name2:");
String name2 = gm.nextLine();
game g = new game(name1,name2);
g.StartGame();
}
}
game.java
Java:
package tictactoe;
import java.util.Scanner;
public class game {
private String[] field = {"","1","2","3","4","5","6","7","8","9"};
private int turn = 1;
private String name1u,name2u;
public game(String name1,String name2) {
name1u=name1;
name2u=name2;
}
public void StartGame() {
Scanner gm = new Scanner(System.in);
int i = 0;
while(i<1) {
System.out.println("===========");
System.out.println("=["+field[1]+"]["+field[2]+"]["+field[3]+"]=");
System.out.println("=["+field[4]+"]["+field[5]+"]["+field[6]+"]=");
System.out.println("=["+field[7]+"]["+field[8]+"]["+field[9]+"]=");
System.out.println("===========");
if(fieldFull()) {
i++;
}
if(turn==1){
move(name1u,"X");
}
else{
move(name2u,"O");
}
}
}
private void move(String name,String symbol) {
Scanner gm = new Scanner(System.in);
System.out.println("Player "+name+"'s turn!");
System.out.println("Enter a Number:");
String in = gm.nextLine();
if(in.equals("1")||in.equals("2")||in.equals("3")||in.equals("4")||in.equals("5")||in.equals("6")||in.equals("7")||in.equals("8")||in.equals("9")){
if(!field[Integer.parseInt(in)].equals("X")||!field[Integer.parseInt(in)].equals("O")) {
field[Integer.parseInt(in)]=symbol;
if(symbol.equals("X")) {turn=2;}
else {turn = 1;}
}
else {
System.out.println("This Field is alredy in use!");
if(symbol.equals("X")) {turn=1;}
else {turn = 2;}
}
}
else {
System.out.println("You have to use numbers between 1 and 9 !");
if(symbol.equals("X")) {turn=1;}
else {turn = 2;}
}
}
private Boolean fieldFull() {
int i = 1,ff=0;
while(i<8) {
if(field[i].equals("X")||field[i].equals("O")) {
ff+=1;
}
i++;
}
if(ff>9) {
return true;
}
return false;
}
}
Das problem ist das diese Zeile nicht erkennt wenn ein feld belegt ist:
Java:
if(!field[Integer.parseInt(in)].equals("X")||!field[Integer.parseInt(in)].equals("O")) {
Wär super von euch wenn ihr euch mein problem ansehen würdet