Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/12/2014, 23:29
Avatar de floppy-dj
floppy-dj
 
Fecha de Ingreso: diciembre-2006
Ubicación: Huelva
Mensajes: 25
Antigüedad: 17 años, 5 meses
Puntos: 0
Respuesta: ¿Como introducir piezas? Juego "básico" en Java

No se si he entendido muy bien los requisitos del programa, pero para hacer un tetris, yo lo que haría seria crear un tablero haciendo un array bidimensional de 8x8, cada pieza para mí seria un array bidimensional de 3x3.
una vez que una pieza entra al tablero, va pintando hasta que encuentre que no puede bajar mas (se comprueba si la pieza se ha quedado entera dentro), y empezaría a entrar la otra pieza, una vez que la pieza se queda colocada se comprueba si se queda alguna linea horizontal completa para eliminarla y si es así, mueves todos los caracteres hacia abajo (machacando esa linea completada con la superior).


yo empezaría con algo como esto:


Tablero
Código:
public class Tablero {

    private int i;
    private int j;
    private char matrizTablero[][];
    private int x = 8, y = 8;//Tamaño del tablero

//método que imprime el tablero vacío
    public void creacionTablero() {
        this.matrizTablero = new char[x][y];
        this.i = 0;
        this.j = 0;

        for (i = 0; i < x; i++) {
            for (int j = 0; j < y; j++) {
                this.matrizTablero[i][j] = '-';
            }
        }
    }

    public void mostrartablero() {
        for (int k = 0; k < 20; k++) {/////////////////ESTE BUCLE ES PARA QUE DE LA SENSACION////////////////////
            System.out.println("");   ////////////////////DE QUE SE HA MOVIDO LA PIEZA///////////////////////////
        }                             ////REALMENTE PINTA 20 RENGLONES EN BLANCO Y VUELVE A PINTAR EL TABLERO////

        for (i = 0; i < x; i++) {
            for (int j = 0; j < y; j++) {
                System.out.print(this.matrizTablero[i][j]);
            }
            System.out.println("");
        }
    }

    public void meterpieza(Pieza pieza) {
        //aqui tienes que pensar como hacerlo
    }
}

Pieza
Código:
public class Pieza {

    private int i;
    private int j;
    private char m[][];

    public Pieza asignarPieza() {
        int n = 0;
        n = (int) Math.floor(Math.random() * 6 + 1);
        this.i = 0;
        this.j = 0;
        this.m = new char[3][3];
        //System.out.println(n);
        switch (n) {
            case 1:
                for (i = 0; i < m.length; i++) {
                    for (j = 0; j < m.length; j++) {
                        if (i < 3 && j == 0) {
                            m[i][j] = '*';
                        } else {
                            m[i][j] = ' ';
                        }
                    }
                }
                break;
            case 2:
                for (i = 0; i < m.length; i++) {
                    for (j = 0; j < m.length; j++) {
                        if ((i == 1 && j == 0) || (i == 2 && j < 3)) {
                            m[i][j] = '*';
                        } else {
                            m[i][j] = ' ';
                        }
                    }
                }
                break;
            case 3:
                //rellena con tu codigo
            case 4:
                //rellena con tu codigo
            case 5:
                //rellena con tu codigo
            case 6:
                //rellena con tu codigo
        }

        return this;

    }
}

Partida
Código:
public class Partida{
    
    public static void main(String[] args) {
        Tablero t = new Tablero();
        t.creacionTablero();
        t.mostrartablero();
        funcionEnter();
        
        Pieza pieza;
        
        do {
            pieza=new Pieza();
            pieza.asignarPieza();
            t.meterpieza(pieza);
            t.mostrartablero();
        } while (funcionEnter());

    }

    private static boolean funcionEnter() {
        Scanner leeCadena = new Scanner(System.in);
        System.out.println("<Pulse enter>");
        leeCadena.nextLine();
        return true;
    }

}