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;
}
}