Advertisement
richigarza

IA.java

Nov 26th, 2012
1,155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.30 KB | None | 0 0
  1. package ajedrez;
  2.  
  3. import java.util.*;
  4.  
  5. class IA{
  6.  
  7. int valorNecesario = -1;
  8. int x = 0;
  9. int y = 0;
  10. int coorX = 0;
  11. int coorY = 0;
  12. boolean movimiento = false;
  13. Random random = new Random();
  14. int atributoFinal = 0;
  15.  
  16. /*IA(partida){
  17.     this.partida = partida;
  18. }*/
  19.  
  20. //metodo que busca una pieza dentro de la matriz
  21. void getCoordenadas(){
  22.     int i, j;
  23.     int [][]temp = null;
  24.     for(i = 0; i < 8; i++){
  25.         for(j = 0; j < 8; j++){
  26.         if((valorNecesario <= 0) && (valorNecesario >= -16)){
  27.             if(temp[j][i] == valorNecesario){
  28.             x = i;
  29.             y = j;
  30.             this.evaluacion(x, y);
  31.             valorNecesario = valorNecesario - 1;
  32.             }
  33.             else{
  34.             valorNecesario = valorNecesario - 1;
  35.             }
  36.         }}
  37.     }
  38. }
  39.  
  40. void evaluacion(int coordx, int coordy){
  41.     int i, j;
  42.     int [][]temp = null;
  43.     int nuevoAtributo = 0;
  44.     for(i = coordx; i >= 0; i--){
  45.         for(j = 7; j >= 0; j--){
  46.             //movimiento = checarColisiones();
  47.             if((temp[j][i] == 1)||(temp[j][i] == 2)||(temp[j][i] == 3)||(temp[j][i] == 4)||(temp[j][i] == 5)||(temp[j][i] == 6)||(temp[j][i] == 7)||(temp[j][i] == 8)){
  48.             nuevoAtributo = ganarAtributo(1);
  49.             this.compararAtributo(nuevoAtributo, j, i);
  50.             }
  51.             if(temp[j][i] == 2){
  52.                 nuevoAtributo = ganarAtributo(2);
  53.                 this.compararAtributo(nuevoAtributo, j, i);
  54.             }
  55.             if(temp[j][i] == 3){
  56.                 nuevoAtributo = ganarAtributo(3);
  57.                 this.compararAtributo(nuevoAtributo, j, i);                
  58.             }
  59.             if(temp[j][i] == 4){
  60.                 nuevoAtributo = ganarAtributo(4);
  61.                 this.compararAtributo(nuevoAtributo, j, i);                
  62.             }
  63.             if(temp[j][i] == 5){
  64.                 nuevoAtributo = ganarAtributo(5);
  65.                 this.compararAtributo(nuevoAtributo, j, i);                
  66.             }
  67.             if(temp[j][i] == 6){
  68.                 nuevoAtributo = ganarAtributo(6);
  69.                 this.compararAtributo(nuevoAtributo, j, i);                
  70.             }
  71.         }
  72.     }
  73. }
  74.  
  75. void compararAtributo(int puntos, int x, int y){
  76.     if(puntos > atributoFinal){
  77.         atributoFinal = atributoFinal + puntos;
  78.         this.destinoX(x);
  79.         this.destinoY(y);
  80.     }
  81.     if((puntos == atributoFinal) && (puntos > 0) && (atributoFinal > 0)){
  82.         this.destinoX(x);
  83.         this.destinoX(y);
  84.     }
  85.     if((puntos == atributoFinal) && (puntos == 0) && (atributoFinal == 0)){
  86.         this.destinoX(this.coordenadaRandom());
  87.         this.destinoY(this.coordenadaRandom());
  88.     }
  89.    
  90. }
  91.  
  92. void destinoX(int X){
  93.     coorX = X;
  94. }
  95.  
  96. void destinoY(int Y){
  97.     coorY = Y;
  98. }
  99.  
  100. int getCoordX(){
  101.     return coorX;
  102. }
  103.  
  104. int getCoordY(){
  105.     return coorY;
  106. }
  107.  
  108. /*boolean checarColisiones(){
  109.     return true;
  110. }*/
  111. //en caso de no haber algun movimiento que beneficie a la computadora genera coordenadas random
  112. int coordenadaRandom(){
  113. return random.nextInt(8);
  114. }
  115.  
  116. int ganarAtributo(int a){
  117.     int atributo;
  118.     if(a == 1){
  119.         atributo = 1;
  120.     }
  121.     if(a == 2){
  122.         atributo = 2;
  123.     }
  124.     if(a == 3){
  125.         atributo = 3;
  126.     }
  127.     if(a == 4){
  128.         atributo = 4;
  129.     }
  130.     if(a == 5){
  131.         atributo = 5;
  132.     }
  133.     if(a == 6){
  134.         atributo = 6;
  135.     }
  136.     else{
  137.         atributo = 0;
  138.     }
  139.     return atributo;
  140. }
  141. }
  142.  
  143. /* En caso de que ningun puntaje sea mayor a 0 se genera un random y que suelte cualquier movimiento sin importar cual sea
  144. int obtieneCoordenadas(int coordx, int coordy){
  145.     mi variable x  = coordx
  146.     mi variable y = coordy
  147. }
  148.  
  149. int generomoviemiento(){
  150.    
  151.     if(mis coordenasSonValidas)
  152.         generomovimientoaleatorio()
  153.         if(movimientoaleatoriovalido == true)
  154.         while(colision != true) //colision se refiere a chocar con los limites del tablero o encontrar una pieza enemiga o aliada
  155.             sumarpuntajeporcasilla() //las piezas amigas sumaran negatvos al puntage las piezas enemigas sumaran enteros
  156.         do
  157.     if(puntajeNuevo > puntajeActual){
  158.         puntajeActual = puntajeNuevo
  159.         puntajeNuevo = 0;
  160.         coordenadasFavorables = coordenadasGeneradas}
  161.     else{
  162.         puntajeNuevo = 0;
  163.         coordenadasGeneradas = borrar //se igualan a cero o null
  164.         }
  165.  
  166. regresarCoordenadas();
  167.     regreso coordenadasFavorables()
  168. }
  169.  
  170.  
  171.  
  172.  
  173.   boolean mover( Posicion origen, Posicion destino, int turno){
  174.     if( Posicion.esIgual(origen,destino)) return false;
  175.     if( tablero[destino.x][destino.y] != 0) return false;
  176.     if( (origen.x == destino.x) && (origen.y+turno==destino.y)) return true;
  177.     return false;
  178.   }
  179.  
  180.   boolean atacar( Posicion origen, Posicion destino, int turno){
  181.     if( Posicion.esIgual(origen,destino)) return false;
  182.     if( (tablero[destino.x][destino.y] == 0) ||
  183.          ( ( tablero[destino.x][destino.y] != 0) &&  
  184.            ( (tablero[destino.x][destino.y]/Math.abs(tablero[destino.x][destino.y])) == turno )
  185.            )
  186.         )return false;
  187.                
  188.     if(  ((origen.x+1 == destino.x) || (origen.x-1 == destino.x) ) &&
  189.        ( origen.y+turno == destino.y)
  190.        )return true;
  191.  
  192.     return false;
  193.   }
  194. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement