import java.util.Scanner; class TrippTrappTresko { public static void main (String[] args) { Brett b = new Brett(); while (! b.erFerdig()) { b.velgTrekk(); b.skrivBrett(); if (b.harVunnet('X')) { System.out.println("Maskinen vant!"); System.exit(0); } if (b.erFerdig()) break; b.lesBrukersTrekk(); if (b.harVunnet('O')) { System.out.println("Du vant!"); b.skrivBrett(); System.exit(0); } } System.out.println("Det ble uavgjort!"); } } class Brett { private char[] ruter; private Scanner tastatur; Brett () { ruter = new char[9+1]; for (int i = 1; i <= 9; ++i) ruter[i] = ' '; tastatur = new Scanner(System.in); } void skrivBrett () { System.out.println("+---+---+---+"); for (int i = 1; i <= 9; i +=3) { for (int j = i; j <= i+2; ++j) System.out.print("| " + ruter[j] + " "); System.out.println("|"); System.out.println("+---+---+---+"); } System.out.println(); } boolean erFerdig () { for (int i = 1; i <= 9; ++i) if (ruter[i] == ' ') return false; return true; } boolean harVunnet (char x) { return trePaaRad(1, +1, x) || trePaaRad(4, +1, x) || trePaaRad(7, +1, x) || trePaaRad(1, +3, x) || trePaaRad(2, +3, x) || trePaaRad(3, +3, x) || trePaaRad(1, +4, x) || trePaaRad(3, +2, x); } private boolean trePaaRad (int p, int inkr, char m) { return ruter[p]==m && ruter[p+inkr]==m && ruter[p+2*inkr] == m; } void velgTrekk () { int valgt; do { valgt = (int)(Math.random()*9) + 1; } while (ruter[valgt] != ' '); System.out.println("Maskinen valgte rute " + valgt); ruter[valgt] = 'X'; } void lesBrukersTrekk () { System.out.print("Ditt trekk? "); int svar = tastatur.nextInt(); while (ruter[svar] != ' ') { System.out.print("Ulovlig trekk. Nytt trekk? "); svar = tastatur.nextInt(); } ruter[svar] = 'O'; } }