2048

Descargar como txt, pdf o txt
Descargar como txt, pdf o txt
Está en la página 1de 4

package players;

import gui.GUI_2048;
import java.awt.EventQueue;
import java.sql.Statement;
import java.util.Random;

import javax.swing.text.TableView.TableRow;

public class Jugador {

private static final String ABA = "abajo";


private static final String DER = "derecha";
private static final String ARR = "arriba";
private static final String IZQ = "izquierda";
static final GUI_2048 juego = new GUI_2048();
public static final String[] KONAMI_CODE = {ARR, ARR, ABA, ABA, IZQ, DER, IZQ,
DER};

public static void main(String[] args) throws InterruptedException {

EventQueue.invokeLater(new Runnable() {
public void run() {
try {
juego.getFrame().setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
System.out.println("Inicio el juego");
boolean code = false;
while(!juego.gameOver()){
int Espera = 500;
//El valor de Espera indica la velocidad del juego. Entre m�s peque�o,
menos tiempo va a tomar la partida.
Thread.sleep(Espera);

//juego.hacer_movimiento(siguiente_movimiento());
if (!code) {
primerPaso(Espera);
code = true;
}
juego.hacer_movimiento(mover(juego.tablero));

}
System.err.println("Juego Terminado.");
}

//Retorna una de cuatro cadenas: "izquierda", "derecha", "arriba" o "abajo",


indicando el movimiento a realizar dado el tablero encontrado
//en la matriz juego.tablero.

//Actualmente, alterna entre los cuatro movimientos.

static int mov = 0;

static String siguiente_movimiento0(){


String[] movs = {IZQ, ARR, DER, ABA};
mov = (mov+1)%4;
return movs[mov];
}

static void primerPaso(int delay) throws InterruptedException{


for (int i = 0; i < KONAMI_CODE.length; i++) {
juego.hacer_movimiento(KONAMI_CODE[i]);
Thread.sleep(delay);
}
}

private static String mover(int[][] tablero) {


// TODO Auto-generated method stub
int max = 2048;
int[] inicio = encontrarMayor(max, tablero);
int[] ok = cruz(inicio[0], inicio[1], tablero);
System.out.println("Inicia IA");
while(ok != null && 1 < max){
max /= 2;
inicio = encontrarMayor(max, tablero);
ok = cruz(inicio[0], inicio[1], tablero);
}
if (1 < max && ok != null) {
System.out.println("x0 " + inicio[0]);
System.out.println("y0 " + inicio[1]);
System.out.println("x1 " + ok[0]);
System.out.println("y1 " + ok[1]);

}
return KONAMI_CODE[new Random().nextInt(7)];
}

static int[] encontrarMayor(int mayor, int[][] tablero){


int x = -1;
int y = -1;
int [] res = {x, y};
int limite = mayor;
int max = 0;
System.out.println("Mayor entre: " + max + " y " + limite);
for (int i = 0; i < tablero.length; i++) {
for (int j = 0; j < tablero.length; j++) {
int espacio = tablero[i][j];
if (espacio < limite && max < espacio ) {
x = i;
y = j;
}
}
}
res[0] = x;
res[1] = y;
return res;
}

static int[] cruz(int x, int y, int[][] tablero){

int[] res= new int[2];


System.out.println("x");
for (int i = 0; i < tablero.length/2; i++) {
int antX = 0;
int desX = 0;
try {
antX = tablero[x - 1][y];
} catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception

}
try {
desX = tablero[x + 1][y];
} catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception
}

if (antX != 0 && antX == tablero[x][y]) {


res[0] = x - 1;
res[1] = y;
return res;
}
else if (desX != 0 && desX == tablero[x][y]) {
res[0] = x + 1;
res[1] = y;
return res;
}
else if ((antX != 0 && antX == tablero[x][y]) ||
(desX != 0 && desX == tablero[x][y])) {
i = tablero.length;
}
}

for (int j = y; j < tablero.length/2; j++) {


int antY = 0;
int desY = 0;
try {
antY = tablero[x][y - 1];
} catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception

}
try {
desY = tablero[x][y + 1];
} catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception
}

if (0 < y - 1 && antY != 0 && antY == tablero[x][y]) {


res[1] = y - 1;
res[0] = x;
return res;
}
else if (0 < y + 1 && desY != 0 && desY == tablero[x][y]) {
res[1] = y +- 1;
res[0] = x;
return res;
}
else if ((antY != 0 && antY == tablero[x][y]) ||
(desY != 0 && desY == tablero[x][y])) {
j = tablero.length;
}
}

return null;
}

También podría gustarte