/* * Main.java * Created on 28 dicembre 2006, 13.43 */ package Tris; /** * @author Babel */ public class Main { private static int[] board = new int[9]; public static void main(String[] args) throws Exception{ System.out.println("\n\t\t TRIS by Babel\n"); showMap(); while (true) { System.out.println("\n\t giocatore 1:"); System.in.skip(1); board[System.in.read()-49] = 1; showMap(); if(winn(1)) { System.out.println("\n\t giocatore 1 vince!"); return; } board[bestMove(-1)]=-1; showMap(); if(winn(-1)){ System.out.println("\n\t CPU vince!"); return; } } } private static boolean winn(int ng) { if ((board[0] == ng && board[1] == ng && board[2] == ng) || (board[3] == ng && board[4] == ng && board[5] == ng) || (board[6] == ng && board[7] == ng && board[8] == ng) || (board[0] == ng && board[3] == ng && board[6] == ng) || (board[1] == ng && board[4] == ng && board[7] == ng) || (board[2] == ng && board[5] == ng && board[8] == ng) || (board[0] == ng && board[4] == ng && board[8] == ng) || (board[2] == ng && board[3] == ng && board[6] == ng) ) return true; return false; } private static void showMap() { char[] map = new char[9]; for (byte i=0 ; i<9 ; i++) map[i]=(board[i] == 0) ? ' ' : (board[i] == 1 ? 'x' : 'o'); System.out.println("\t " + map[0] + "|" + map[1] + "|" + map[2]); System.out.println("\t--+-+--"); System.out.println("\t " + map[3] + "|" + map[4] + "|" + map[5]); System.out.println("\t--+-+--"); System.out.println("\t " + map[6] + "|" + map[7] + "|" + map[8]); } private static int bestMove(int ng) { int bestVal = -200; int tempVal; int best= 0; for (int i=0 ; i<9 ; i++) { if (board[i]!=0) continue; board[i] = ng; tempVal = -minMax(-ng); board[i] = 0; if (tempVal > bestVal) { bestVal = tempVal; best = i; } } return best; } private static int minMax(int ng) { if(winn(ng)) return 1000; int bestVal = -200; int tempVal; for (int i=0 ; i<9 ; i++) { if (board[i]!=0) continue; board[i] = ng; tempVal = -minMax(-ng); board[i] = 0; if (tempVal > bestVal) bestVal = tempVal; } return bestVal/2; } }