Mi problema es que no se ponen la ficha del ordenador 
Si hago el primer movimiento en el centro no me aparece la figurita X T_T pero si al comienzo hago click en otro lado si que aparece ...esta ahi pero no se muestra ahi dejo el code haha el algoritmo min y max lo copie del Video de Jorge Rubira  haha XD ....espero que me ayuden 
-   
- import java.awt.*; 
- import java.awt.event.*;; 
-   
-   
-   
-     logica obj = new logica(); 
-     int tablero[][]; 
-   principal() 
-   { 
-        setVisible(true); 
-         setSize(600,400); 
-         setLayout(null); 
-         iniciarcomponentes(); 
-         b1.addActionListener(this); 
-   } 
-    
-   public void iniciarcomponentes() 
-   { 
-       arreglobotones = new Button[3][3];
-       sfiguras[0]=""; 
-       sfiguras[1]="0"; 
-       sfiguras[2]="X"; 
-        
-       for(int i =0 ;i<arreglobotones.length;i++) 
-      { 
-   
-          for(int j =0 ;j<arreglobotones[i].length;j++) 
-          { 
-              arreglobotones [- i ][- j ]= new Button();
-              arreglobotones[i][j].addActionListener(this); 
-              arreglobotones[i][j].setBounds(80+(80*j),80+(80*i),80,80); 
-              add(arreglobotones[i][j]); 
-              arreglobotones[i][j].setLabel(sfiguras[0]); 
-           } 
-           
-       } 
-       l1.setBounds(200,60,100,20); 
-       add(l1); 
-       b1.setBounds(350,120,100,25); 
-       add(b1); 
-        
-   } 
-   
-   
-   { 
-       tablero=obj.tableros; 
-       for(int i =0 ;i<arreglobotones.length;i++) 
-           { 
-   
-          for(int j =0 ;j<arreglobotones[i].length;j++) 
-           { 
-              if(tablero[i][j]==-1 && arreglobotones[i][j]==boton) 
-               { 
-                  obj.pulsaboton(i,j); 
-                  obj.ponerfichaordenador(); 
-                  arreglobotones[i][j].setLabel(sfiguras[tablero[i][j]+1]); 
-                   
-                
-             
-               } 
-               for(int k =0 ;k<arreglobotones.length;k++){ 
-   
-                    for(int l=0 ;l<arreglobotones[i].length;l++) 
-                { 
-                        if(tablero[k][l]==1) 
-                        { 
-                            arreglobotones[i][j].setLabel(sfiguras[tablero[i][j]+1]); 
-                        } 
-                } 
-                   } 
-               
-               
-              ganas(); 
-              System- . out- . print(- tablero [- i ][- j ] + " ");
 
-           
-       } 
-       } 
-       if(boton==b1) 
-       { 
-           obj.empezarpartida(); 
-           empieza(); 
-       } 
-   } 
-   
-   public void ganas() 
-   { 
-       int gano = obj.nganador; 
-               if(gano==0) 
-               { 
-                   l1.setText("Has Ganado"); 
-               } 
-               else if (gano==1) 
-               { 
-                   l1.setText("Has perdido"); 
-               } 
-   } 
-   
-   public void empieza() 
-   { 
-       l1.setText(""); 
-       for(int i =0 ;i<arreglobotones.length;i++) 
-      { 
-   
-          for(int j =0 ;j<arreglobotones[i].length;j++) 
-          { 
-             arreglobotones[i][j].setLabel(sfiguras[0]); 
-   
-   
-   
-          } 
-   
-       } 
-   } 
-   
-   
-   
-   
-   
-   
-     public static void-  main (String[]-  args )
 
-   
- {         principal obj = new principal(); 
-            } 
-         } 
-         ); 
-   
-   
-        
-     } 
-   
- } 
-   
-   
-   
-   
-   
-   
-   
- public class logica 
- { 
-       public int tableros[][]= new int[3][3]; 
-       public int nganador=-1; 
-       int ncontar=0; 
-   
-       public logica() 
-       { 
-           empezarpartida(); 
-           ncontar=0; 
-       } 
-       public void empezarpartida() 
-       { 
-            for(int i =0 ;i<tableros.length;i++) 
-       { 
-          for(int j =0 ;j<tableros[i].length;j++) 
-           { 
-   
-                 tableros[i][j]=-1; 
-           } 
-   
-   
-            } 
-            nganador=-1; 
-       } 
-   
-       public void pulsaboton(int i ,int j) 
-       { 
-           if(i>=0 && j>=0 && j<=3 && i<=3 && tableros[i][j]==-1) 
-           { 
-               if(nganador==-1) 
-               { 
-                   tableros[i][j]=0; 
-                   nganador=ganarpartida(); 
-                    
-               } 
-           } 
-       } 
-   
-       public int ganarpartida() 
-       { 
-           if(tableros[0][0]!=-1 && tableros[0][0]==tableros[1][1] && tableros[0][0]==tableros[2][2]) 
-   
-           { 
-               return tableros[0][0]; 
-           } 
-           if(tableros[0][2]!=-1 && tableros[0][2]==tableros[1][1] && tableros[0][2]==tableros[2][0]) 
-   
-           { 
-               return tableros[0][2]; 
-           } 
-           for(int i =0 ;i<tableros.length;i++) 
-           { 
-                if(tableros[i][0]!=-1 && tableros[i][0]==tableros[i][1] && tableros[i][0]==tableros[i][2]) 
-   
-                { 
-                    return tableros[i][0]; 
-                } 
-   
-                if(tableros[0][i]!=-1 && tableros[0][i]==tableros[1][i] && tableros[0][i]==tableros[2][i]) 
-   
-                { 
-                    return tableros[0][i]; 
-                } 
-   
-           } 
-   
-           return -1; 
-   
-   
-       } 
-   
-       //Algoritmo Minimax 
-       public boolean tablerocompleto() 
-       { 
-            for(int i =0 ;i<tableros.length;i++) 
-       { 
-          for(int j =0 ;j<tableros[i].length;j++) 
-           { 
-              if(this.tableros[i][j]==-1) 
-              { 
-              return false; 
-              } 
-   
-           } 
-   
-   
-            } 
-            return true; 
-       } 
-   
-       public boolean finpartida() 
-       { 
-            return tablerocompleto() || ganarpartida()!=-1; 
-       } 
-   
-       public void ponerfichaordenador(){ 
-           if(!finpartida()) 
-           { 
-               int f=0,c=0; 
-               int aux; 
-                 for(int i =0 ;i<tableros.length;i++){ 
-                 for(int j =0 ;j<tableros[i].length;j++){ 
-                  if(tableros[i][j]==-1) 
-                  { 
-                   tableros[i][j]=1; 
-                   aux=min(); 
-                   if(aux>v){ 
-                    v=aux; 
-                    f=i; 
-                    c=j; 
-                   } 
-                   tableros[i][j]=-1; 
-                  } 
-   
-             } 
-   
-            } 
-               tableros[f][c]=1; 
-           } 
-           nganador=ganarpartida(); 
-   
-   
-       } 
-   
-       private int max() 
-       { 
-           if(finpartida()) 
-           { 
-               if(ganarpartida()!=-1) return -1; 
-               else return 0; 
-   
-           } 
-           int aux; 
-           for(int i =0 ;i<tableros.length;i++){ 
-                 for(int j =0 ;j<tableros[i].length;j++){ 
-                     if(this.tableros[i][j]==-1){ 
-                        tableros[i][j]=1; 
-                        aux=min(); 
-                        if(aux>v) v=aux; 
-                        tableros[i][j]=-1; 
-   
-   
-   
-                     } 
-                 } 
-           } 
-           return v; 
-       } 
-   
-       private int min() 
-       { 
-           if(finpartida()) 
-           { 
-               if(ganarpartida()!=-1) return 1; 
-               else return 0; 
-   
-           } 
-           int aux; 
-           for(int i =0 ;i<tableros.length;i++){ 
-                 for(int j =0 ;j<tableros[i].length;j++){ 
-                     if(this.tableros[i][j]==-1){ 
-                        tableros[i][j]=0; 
-                        aux=max(); 
-                        if(aux<v) v=aux; 
-                        tableros[i][j]=-1; 
-                     } 
-                 } 
-           } 
-           return v; 
-       } 
- } 
-   
-   
-   
-   
-   
-   
-   
-   
-   
-   
-   
-   
-