Saltar al contenido

Programando el Tetris con Java

julio 26, 2018
Programando Tetris Java

El Tetris es uno de los juegos de ordenador mas populares que existen. Originalmente se diseñó y programó por un ruso llamado Alexey Pajitnov en 1985. Desde entonces, el juego se ha adaptado a diferentes plataformas. En este caso os hablaré sobre una versión desarrollada en Java.

Introducción al Tetris en Java

En el juego del Tetris existen 7 figuras distintas llamadas tetrominos. Las figuras son S-shape, Z-shape, T-shape, L-shape, Line-shape, MirroredL-shape and a Square-shape. Todas estas figuras están formadas por 4 cuadrados cada una.

tetrominoes

No utilizaremos imágenes para el juego, dibujaremos los tetrominos utilizando la API de dibujo de Swing. Detrás de cada juego de ordenador hay un modelo matemático, en este caso también.

Ideas para desarrollar el juego del Tetris con Java

  • Utilizaremos la clase Timer para crear el ciclo del juego.
  • Dibujaremos los tetrominos en vez de utilizar imágenes.
  • Las figuras se moverán un cuadro cada vez en lugar de un pixel.
  • Matemáticamente representaremos el tablero como un listado de números.
  • El juego empezará inmediatamente cuando abramos la aplicación.
  • Podremos pausar el juego en cualquier momento pulsando p en el teclado.
  • La tecla de espacio hará que la figura caiga inmediatamente al fondo.
  • Con la tecla d podremos acelerar la caída del tetrominó.
  • El sistema se deberá mover a una velocidad constante independientemente de la cantidad de figuras y sin implementar ninguna aceleración.
  • La puntuación será la cantidad de lineas que hemos conseguido eliminar. 

Programando con Java

El panel principal del juego

En la clase Tetris arrancaremos el juego. Crearemos el tablero en el que se desarrollará el juego y la barra de estado. Utilizaremos el método start() para que el juego empieza inmediatamente cuando la ventana se muestre por pantalla.

package com.señoritopi.tetris;

import javax.swing.*;
import java.awt.*;

public class Tetris extends JFrame {
    JLabel barraEstado;

    public Tetris(){
        barraEstado = new JLabel(" 0");
        add(barraEstado, BorderLayout.SOUTH);
        Tablero tablero = new Tablero(this);
        add(tablero);
        tablero.start();

        setSize(200, 400);
        setTitle("Tetris");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public JLabel getBarraEstado(){
        return barraEstado;
    }

    public static void main(String[] args){
        Tetris juego = new Tetris();
        juego.setLocationRelativeTo(null);
        juego.setVisible(true);
    }
}
Tetris.java