Código
import java.util.Random; import java.util.Scanner; import javax.swing.JOptionPane; public class Tablero { private Celda[][] cuadros=new Celda [4][4]; private int score; private boolean gano, perdio; public Tablero(){ this.score = 0; this.gano = false; this.perdio = false; } //Constructor con parametros. //Se inicializa el tablero. public Tablero(int[]celda){ if(celda.length==0){ this.generarNumero(); this.generarNumero(); int count = 0; for (int i=0;i<this.cuadros.length; i++){ for (int j=0;j<this.cuadros[i].length;j++){ if(this.cuadros[i][j] == null) this.cuadros[i][j]= new Celda(0); if(!(i==this.cuadros.length-1 && j==this.cuadros[i].length-1)){ count++; } } } } else{ int count = 0; for (int j=0;j<this.cuadros.length; j++){ for (int k=0;k<this.cuadros[j].length;k++){ this.cuadros[j][k]= new Celda(celda[count]); if(!(j==this.cuadros.length-1 && k==this.cuadros[j].length-1)){ count++; } } } } this.score = 0; this.gano = false; this.perdio = false; } //Genera dos numeros random en el tablero 2 o 4. public void generarNumero(){ int i = r.nextInt(this.cuadros.length-1); int j = r2.nextInt(this.cuadros[i].length-1); this.cuadros[i][j]=new Celda(); } //Imprime el tablero en consola. public void imprimeTablero(){ for(int i=0;i<this.cuadros.length;i++){ for(int j=0;j<this.cuadros[i].length;j++){ } } } //Detecta el movimiento conforme a la letra, acepta mayusculas y minusculas. w es arriba, s es abajo, a es izquierda, d es derecha. public void pedirMovimiento(){ if(result.equals("w")||result.equals("W")){ arriba(); } if(result.equals("s")||result.equals("S")){ this.generarNumero(); abajo(); } if(result.equals("a")||result.equals("A")){ this.generarNumero(); izquierda(); } if(result.equals("d")||result.equals("D")){ this.generarNumero(); derecha(); } } //Metodos de arriba,abajo,izquierda y derecha. public void arriba(){ int c = 0; boolean move = false; for(int z=0;z<3;z++){ int zz = z +1; for(int t=0;t<3;t++){ Celda celdaActual = this.cuadros[z][t]; Celda celdaSuperior = this.cuadros[zz][t]; if (celdaActual.getValor() == celdaSuperior.getValor()){ if(celdaActual.getValor() != 0 && celdaSuperior.getValor() != 0){ //incrementa celdaSuperior.incrementa(); c++; } move = true; } else if(celdaSuperior.getValor() == 0){ this.cuadros[zz][t] = celdaActual; if(z > 0) this.cuadros[z][t] = this.cuadros[z-1][t]; } } } if(move){ this.generarNumero(); } } public void abajo(){ } public void izquierda(){ } public void derecha(){ } public boolean pierde(){ return false; } public boolean gano(int [][] a){ for(int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { if(a[i][j]==2048){ gano=true; } else{ gano=false; } } } return gano; } int [] arreglo={}; Tablero juego=new Tablero(arreglo); juego.imprimeTablero(); for(int i=0; i<16; i++){ juego.pedirMovimiento(); juego.imprimeTablero(); } } } -------------------------------------------------------------------------------------- import java.awt.Point; import java.util.Random; import java.util.Random; //Clase Celda. public class Celda{ private int valor; //Constructor por default. public Celda(){ this.valor = (valor2o4.nextInt(2)+1)*2; } //Constructor con parametros. public Celda (int valorPoner){ this.valor = valorPoner; } //Getter y Setter de Valor. public int getValor(){ return this.valor; } public void setValor(int valor){ this.valor=valor; } //Metodo que incrementa el doble de cualquier valor. public int incrementa(){ return this.valor*=2; } }
Quisiera saber en que estoy mal y que me falta, muchas gracias.