import java.util.Scanner; public class aufgabe34 { static enum Status { FREI, SPIELER1, SPIELER2; public String toString() { switch(this) { case FREI: return "_"; case SPIELER1: return "x"; case SPIELER2: return "o"; } return " "; } } static class Spielfeld { Status[][] feld = new Status[3][3]; Spielfeld() { for(int x = 0; x < feld.length; ++x) for(int y = 0; y < feld[x].length; ++y) feld[x][y] = Status.FREI; } void set(int x, int y, Status status) { feld[x][y] = status; } Status get(int x, int y) { return feld[x][y]; } int gameover() { if(getGameOver(Status.SPIELER1) == true) return 1; if(getGameOver(Status.SPIELER2) == true) return 2; // noch am Laufen? for(int x = 0; x < feld.length; ++x) for(int y = 0; y < feld[x].length; ++y) if(feld[x][y] == Status.FREI) return -1; return 0; } private boolean getGameOver(Status s) { //vertikal if(feld[0][0] == s && feld[0][1] == s && feld[0][2] == s) return true; if(feld[1][0] == s && feld[1][1] == s && feld[1][2] == s) return true; if(feld[2][0] == s && feld[2][1] == s && feld[2][2] == s) return true; //horizontal if(feld[0][0] == s && feld[1][0] == s && feld[2][0] == s) return true; if(feld[0][1] == s && feld[1][1] == s && feld[2][1] == s) return true; if(feld[0][2] == s && feld[1][2] == s && feld[2][2] == s) return true; //diagonal if(feld[0][0] == s && feld[1][1] == s && feld[2][2] == s) return true; if(feld[2][0] == s && feld[1][1] == s && feld[0][2] == s) return true; return false; } public String toString() { String s = ""; for(int x = 0; x < feld.length; ++x) { for(int y = 0; y < feld[x].length; ++y) s += " " + feld[x][y].toString() + " "; s += "\n"; } return s; } } public static void main(String[] args) { Spielfeld feld = new Spielfeld(); boolean spieler1dran = true; while(feld.gameover() == -1) { System.out.println("Spieler " + (spieler1dran ? "1" : "2")); Scanner scan = new Scanner(System.in); int x = scan.nextInt(); int y = scan.nextInt(); if(x < 0 || x > 2 || y < 0 || y > 2) { System.out.println("Ungueltige Koordinaten!"); continue; } if(feld.get(x,y) != Status.FREI) { System.out.println("Feld nicht frei!"); continue; } feld.set(x, y, spieler1dran ? Status.SPIELER1 : Status.SPIELER2); System.out.println(feld); spieler1dran = !spieler1dran; } switch(feld.gameover()) { case 0: System.out.println("Niemand hat gewonnen!"); break; case 1: System.out.println("Spieler 1 hat gewonnen!"); break; case 2: System.out.println("Spieler 2 hat gewonnen!"); break; } } }