import java.io.*; import java.awt.geom.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; import java.util.Random; class TicTacToe1 extends JPanel { //int [][] board; int [] values; JButton [][] buttons; public static final int KEEP_PLAYING=0; public static final int O_WINS=1; public static final int X_WINS=2; public static final int O_VALUE=-1; public static final int X_VALUE=1; public static final int NIL_VALUE=0; public static final int TIE=3; TicTacToe1() { super(new GridLayout(3,3)); //board = new int[3][3]; values = new int[8]; //values for each winning row, column or diagonal buttons = new JButton[3][3]; for (int r=0;r<3;r++) { for (int c=0;c<3;c++) { buttons[r][c] = new JButton(""); add(buttons[r][c]); } } System.out.println(""); } private int getBoard(int r,int c) { String txt = buttons[r][c].getText(); if (txt.equals("X")) { return X_VALUE; } else if (txt.equals("O")) { return O_VALUE; } else { return NIL_VALUE; } } private void setBoard(int r,int c, int val) { if (val==X_VALUE) { buttons[r][c].setText("X"); } else if (val==O_VALUE) { buttons[r][c].setText("O"); } else { buttons[r][c].setText(""); } } public void reset() { System.out.println(""); for (int r=0;r<3;r++) { for (int c=0;c<3;c++) { //board[r][c]=0; buttons[r][c].setText(""); } } } public String toString() { StringBuffer sb = new StringBuffer(); sb.append(stringFromPos(0,0) + "|" + stringFromPos(0,1) + "|" + stringFromPos(0,2)); sb.append(" 1|2|3\n"); sb.append("----- -----\n"); sb.append(stringFromPos(1,0) + "|" + stringFromPos(1,1) + "|" + stringFromPos(1,2)); sb.append(" 4|5|6\n"); sb.append("----- -----\n"); sb.append(stringFromPos(2,0) + "|" + stringFromPos(2,1) + "|" + stringFromPos(2,2)); sb.append(" 7|8|9\n"); return sb.toString(); } public void updateValues() { //updates values //row values for (int r=0;r<3;r++) { values[r]=0; for (int c=0;c<3;c++) { values[r]+=getBoard(r,c); } } //column values for (int c=0;c<3;c++) { values[c+3]=0; for (int r=0;r<3;r++) { values[c+3]+=getBoard(r,c); } } //diag values values[6]= getBoard(0,0) + getBoard(1,1) + getBoard(2,2); values[7]= getBoard(0,2) + getBoard(1,1) + getBoard(2,0); } public int evalBoard() { updateValues(); for (int i=0;i "); try { input = in.readLine(); } catch (IOException e) { System.err.println(e); } if (input.equals("Q")) { System.exit(0); } int mv=-1; try { mv=Integer.parseInt(input); } catch (NumberFormatException e) { //nothing here necessary } if (mv>0 && mv<10) { int result = t.doHumanMove(mv); if (result!=0) { System.out.println("\nEssayez encore\n"); } else { t.doComputerMove(); } } else { System.out.println("\nEssayez encore\n"); } } } }