Programación General > Java

 Tres en Raya Problema

(1/1)

Flashtlk:
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

--- Código: Java --- import java.awt.*;import java.awt.event.*;;  public class principal extends Frame implements ActionListener{     Button  arreglobotones[][];    logica obj = new logica();    String sfiguras[];    int tablero[][];    Label l1;    Button b1 = new Button("Empezar Partida");  principal()  {       setVisible(true);        setSize(600,400);        setLayout(null);        iniciarcomponentes();        b1.addActionListener(this);  }    public void iniciarcomponentes()  {       l1= new Label("");      arreglobotones= new Button[3][3];      sfiguras=new String[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);        }    public void actionPerformed(ActionEvent ev)  {      tablero=obj.tableros;      Object boton= ev.getSource();      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] + " ");               }         System.out.println();      }      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();          obj.addWindowListener(new WindowAdapter(){           public void windowClosing(WindowEvent e){             System.exit(0);           }        }        );            } }     


--- Código: Java ---  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 v=Integer.MIN_VALUE;              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 v =Integer.MIN_VALUE;          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 v =Integer.MAX_VALUE;          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;      }}             

Navegación

[0] Índice de Mensajes

Ir a la versión completa