import java.util.Random; import java.util.Scanner; /* Brettet: +---+---+---+ | 1 | 2 | 3 | +---+---+---+ | 4 | 5 | 6 | +---+---+---+ | 7 | 8 | 9 | +---+---+---+ Spillerne: X - maskinen O - brukeren */ class Brett { Rute[] ruter = new Rute[1+9]; Brett() { for (int i = 1; i <= 9; i++) ruter[i] = new Rute(i, ' '); } void spill() { while (true) { spillX(); if (harVunnet('X')) utropVinner('X'); if (erUavgjort()) utropUavgjort(); spillO(); if (harVunnet('O')) utropVinner('O'); if (erUavgjort()) utropUavgjort(); } } Random tilfeldig = new Random(); void spillX() { int p; do { p = tilfeldig.nextInt(9)+1; } while (ruter[p].merke != ' '); ruter[p].settMerke('X'); } Scanner tastatur = new Scanner(System.in); void spillO() { int p; skriv(); do { System.out.print("Hva spiller O? "); p = tastatur.nextInt(); } while (ruter[p].merke != ' '); ruter[p].settMerke('O'); } boolean likRad(int r1, int r2, int r3, char c) { return ruter[r1].merke==c && ruter[r2].merke==c && ruter[r3].merke==c; } boolean harVunnet(char c) { return likRad(1, 2, 3, c) || // Vannrett likRad(4, 5, 6, c) || likRad(7, 8, 9, c) || likRad(1, 4, 7, c) || // Loddrett likRad(2, 5, 8, c) || likRad(3, 6, 9, c) || likRad(1, 5, 9, c) || // Diagonal likRad(3, 5, 7, c); } boolean erUavgjort() { for (int i = 1; i <= 9; i++) if (ruter[i].merke == ' ') return false; return true; } void utropVinner(char s) { System.out.println("Vinneren er " + s + "!"); skriv(); System.exit(0); } void utropUavgjort() { System.out.println("Det ble uavgjort!"); skriv(); System.exit(0); } void skrivHorLinje() { System.out.println("+---+---+---+"); } void skrivBrettlinje(int p1, int p2, int p3) { System.out.println("| " + ruter[p1] + " | " + ruter[p2] + " | " + ruter[p3] + " |"); } void skriv() { skrivHorLinje(); skrivBrettlinje(1, 2, 3); skrivHorLinje(); skrivBrettlinje(4, 5, 6); skrivHorLinje(); skrivBrettlinje(7, 8, 9); skrivHorLinje(); } } class Rute { int pos; char merke; Rute(int p, char c) { pos = p; merke = c; } void settMerke(char c) { merke = c; } @Override public String toString() { if (merke == ' ') return "" + pos; return "" + merke; } } class TTT2 { public static void main(String[] args) { Brett b = new Brett(); b.spill(); } }