Hallo. Ich habe schon eine ganze Menge geschafft. Ich habe nur das Problem, dass ich ab nun nicht mehr weiter weiss.
Und zwar möchte ich, dass ein Spieler gewinnt, sobald er drei seiner zeichen in einer reihe, spalte oder diagonalen besitzt. Bisher habe ich nur den sehr ungünstigen fall (wie unten zu sehen ist) das immer eine bestimmte anzahl von zügen erlaubt sind und dass das spiel nicht aufhört, auch wenn einer drei in einer reihe, spalte, usw. hat.
Kannst du mir vielleicht etwas auf die sprünge helfen. wäre sehr nett!!
Und zwar möchte ich, dass ein Spieler gewinnt, sobald er drei seiner zeichen in einer reihe, spalte oder diagonalen besitzt. Bisher habe ich nur den sehr ungünstigen fall (wie unten zu sehen ist) das immer eine bestimmte anzahl von zügen erlaubt sind und dass das spiel nicht aufhört, auch wenn einer drei in einer reihe, spalte, usw. hat.
Kannst du mir vielleicht etwas auf die sprünge helfen. wäre sehr nett!!
Code:
import java.io.*; // wird von der Eingabe benötigt
public class Spielfeld {
//Eigenschaften
private Kaestchen[][] feld;
private static BufferedReader in; // Eingabe
public static void main(String args[]) {
Spielfeld spielfeld = new Spielfeld();
spielfeld.spieleEineRunde();
}
//Konstruktor
public Spielfeld() {
feld = new Kaestchen[3][3];
for (int i=0;i<3;i++){// senkrecht
for (int j=0;j<3;j++){// waagerecht
feld[j][i]=new Kaestchen();
}
}
// Vorbereitung für die Eingabe
in = new BufferedReader(new InputStreamReader(System.in));
}
//Methoden
public void setzeSpielstein(int x, int y, String stein){
feld[x][y].setzeStein(stein);
}
public void gibSpielAus(){
System.out.println("\n 012");
for (int i=0;i<3;i++){
System.out.print(i+" ");
for (int j=0;j<3;j++){
System.out.print(feld[j][i].getZeichen());
}
System.out.println(); // Zeilenumbruch nach 3 Kaestchen
}
}
public void spieleEineRunde(){
// unguenstig: Starre Anzahl von Zügen, immer 10 Züge
int x,y;
for (int i=1;i<5;i++){
gibSpielAus();
System.out.print("Spieler X bitte die x-Koordinate (0-2)");
try {
x=liesInt();
}
catch(IOException e) {
x=-1;
}
System.out.print("Spieler X bitte die y-Koordinate (0-2)");
try {
y=liesInt();
}
catch(IOException e) {
y=-1;
}
setzeSpielstein(x, y, "X");
gibSpielAus();
System.out.print("Spieler O bitte die x-Koordinate (0-2)");
try {
x=liesInt();
}
catch(IOException e) {
x=-1;
}
System.out.print("Spieler O bitte die y-Koordinate (0-2)");
try {
y=liesInt();
}
catch(IOException e) {
y=-1;
}
setzeSpielstein(x, y, "O");
}
}
// Methode für die Eingabe
public int liesInt() throws IOException {
try {
return Integer.parseInt(in.readLine());
}
catch(IOException e) {
return (-1);
}
}
}
Code:
public class Kaestchen {
String zeichen;
public Kaestchen() {
zeichen=" "; // Am Anfang leer
}
public void setzeStein(String pZeichen) {
if (!zeichen.equals(" ")) {System.out.println("Besetzt!");}
else {
if (pZeichen.equals("X") || pZeichen.equals("O")) {zeichen=pZeichen;}
else System.out.println("Ungueltige Eingabe, bitte X oder O waehlen!");
}
}
public String getZeichen(){
return zeichen;
}
}