186 lines
4.7 KiB
Java
186 lines
4.7 KiB
Java
import java.util.Scanner;
|
|
public class Tik_Tak_Toe {
|
|
|
|
public String[][] Spielfeld = new String[3][3];
|
|
|
|
Spieler1 spieler;
|
|
Spieler1 spieler2;
|
|
|
|
public Scanner sc = new Scanner(System.in);
|
|
|
|
public Tik_Tak_Toe(String name, String name2)
|
|
{
|
|
spieler = new Spieler1(name);
|
|
spieler2 = new Spieler1(name2);
|
|
for(int a = 0; a < 3;a++ )
|
|
{
|
|
for(int b = 0; b < 3; b++)
|
|
{
|
|
Spielfeld[a][b] = " ";
|
|
}
|
|
}
|
|
}
|
|
|
|
public void game()
|
|
{
|
|
int pX;
|
|
int pY;
|
|
newGame();
|
|
feldAusgeben();
|
|
while(spielVorbei() == false)
|
|
{
|
|
System.out.println(spieler.getName()+" ist an der Reihe!");
|
|
pX = sc.nextInt();
|
|
pY = sc.nextInt();
|
|
setzeKreuz(pX,pY);
|
|
if(spielVorbei() == false)
|
|
{
|
|
System.out.println(spieler2.getName()+" ist an der Reihe!");
|
|
pX = sc.nextInt();
|
|
pY = sc.nextInt();
|
|
setzeKreis(pX,pY);
|
|
}
|
|
}
|
|
if(hatGewonnen_x() == true)
|
|
{
|
|
spieler.sieg();
|
|
spieler2.niederlage();
|
|
System.out.println(spieler.getName()+" hat gewonnen!");
|
|
}
|
|
if(hatGewonnen_o() == true)
|
|
{
|
|
spieler2.sieg();
|
|
spieler.niederlage();
|
|
System.out.println(spieler2.getName()+" hat gewonnen!");
|
|
}
|
|
if(unentschieden() == true)
|
|
{
|
|
System.out.println("Keiner hat gewonnen!");
|
|
}
|
|
}
|
|
|
|
public boolean spielVorbei()
|
|
{
|
|
if(unentschieden() == true || hatGewonnen_x() == true || hatGewonnen_o() == true)
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void newGame()
|
|
{
|
|
for(int a = 0; a < 3;a++ )
|
|
{
|
|
for(int b = 0; b < 3; b++)
|
|
{
|
|
System.out.print(Spielfeld[a][b] = " ");
|
|
}
|
|
System.out.println();
|
|
}
|
|
}
|
|
|
|
public void setzeKreis(int pX, int pY)
|
|
{
|
|
if(prüfen(pX, pY) == true)
|
|
{
|
|
Spielfeld[pX-1][pY-1] = "o";
|
|
feldAusgeben();
|
|
}
|
|
}
|
|
|
|
public void setzeKreuz(int pX, int pY)
|
|
{
|
|
if(prüfen(pX, pY) == true)
|
|
{
|
|
Spielfeld[pX-1][pY-1] = "x";
|
|
feldAusgeben();
|
|
}
|
|
}
|
|
|
|
public boolean prüfen(int pX, int pY)
|
|
{
|
|
if(Spielfeld[pX-1][pY-1] == " ")
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public boolean hatGewonnen_x()
|
|
{
|
|
for(int i = 0; i < 3;i++)
|
|
{
|
|
if(Spielfeld[i][0] == "x" && Spielfeld[i][1] == "x" && Spielfeld[i][2] == "x")
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
for(int i = 0; i < 3;i++)
|
|
{
|
|
if(Spielfeld[0][i] == "x" && Spielfeld[1][i] == "x" && Spielfeld[2][i] == "x")
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
if(Spielfeld[0][0] == "x" && Spielfeld[1][1] == "x" && Spielfeld[2][2] == "x" || Spielfeld[0][2] == "x" && Spielfeld[1][1] == "x" && Spielfeld[2][0] == "x")
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public boolean hatGewonnen_o()
|
|
{
|
|
for(int i = 0; i < 3;i++)
|
|
{
|
|
if(Spielfeld[i][0] == "o" && Spielfeld[i][1] == "o" && Spielfeld[i][2] == "o")
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
for(int i = 0; i < 3;i++)
|
|
{
|
|
if(Spielfeld[0][i] == "o" && Spielfeld[1][i] == "o" && Spielfeld[2][i] == "o")
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
if(Spielfeld[0][0] == "o" && Spielfeld[1][1] == "o" && Spielfeld[2][2] == "o" || Spielfeld[0][2] == "o" && Spielfeld[1][1] == "o" && Spielfeld[2][0] == "o")
|
|
{
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public boolean unentschieden()
|
|
{
|
|
for(int a = 0; a < 3;a++ )
|
|
{
|
|
for(int b = 0; b < 3; b++)
|
|
{
|
|
if(Spielfeld[a][b] == " ")
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
System.out.println();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public void feldAusgeben()
|
|
{
|
|
for(int a = 0; a < 3;a++ )
|
|
{
|
|
for(int b = 0; b < 3; b++)
|
|
{
|
|
System.out.print(Spielfeld[a][b] +" | ");
|
|
}
|
|
System.out.println();
|
|
System.out.println("------------");
|
|
|
|
}
|
|
}
|
|
}
|