Download Tetris en Java - Club de Robótica UTP

Document related concepts
no text concepts found
Transcript
Tetris en Java
Christopher Cano
Universidad Tecnológica de Panamá
[email protected]
Resumen- Este proyecto consiste en el desarrollo de un juego
de tetris con una interfaz grafica agradable al usuario utilizando el
lenguaje de programación en java. Además de intentar utilizar la
maquina virtual de java para emularlo en múltiples sistemas
operativos.
Palabras claves- clase , herencia , Java , Programación,
Tetris,
1. Introducción
El tetris es un videojuego popular en el que se trata de
completar filas utilizando diferentes figuras geométricas de
diferentes formas siempre de lados cuadrados. Con esto se busca
lograr completar tantas filas como sea posible para acumular
puntos. Todo esto debe ser logrado sin que se acumulen tantos
bloques que se salga de la pantalla destinada a las figuras. A
medida que se hacen más puntos avanza la velocidad del juego.
Para crear esto utilizamos java que es un lenguaje dirigido a
objetos . En esta plataforma se escribe la aplicación en un
lenguaje universal entendido por la maquina virtual de java y así
puede ser utilizado en una variedad de equipos ya que el
programa interactúa con la maquina virtual y no con el sistema
operativo del sistema.
César Valdés
Universidad Tecnológica de Panamá
[email protected]
La estructura de un programa en java está basada en dos
conceptos fundamentales.
Clase: es una agrupación de datos y de funciones que operan
sobre esos mismos datos. A esta agrupación se le denomina
variables y métodos. Así, un programa en java se construye de un
conjunto de clases.
Herencia: La permite que se puedan definir nuevas clases
basadas en clases existentes. Esto permite reutilizar el código
previamente desarrollado. La clase derivada hereda todas las
variables y métodos e incluso puede modificar o añadir nuevas
variables de la clase de la cual se proviene.
2. Objetivos
Generales:
 Crear una aplicación capaz de correr en múltiples sistemas
operativos
 Crear un juego de Tetris completamente funcional.
 Demostrar las ventajas de este lenguaje frente a otros
Específicos:
 Mejorar las habilidades de programación y desarrollo de
software
 Aprender a utilizar Java como lenguaje de programación.
3. Herramientas y Conceptos
Para interactuar con el lenguaje de java debemos disponer del
programa NetBeans IDE. Su entorno se muestra en la figura1.
NetBeans es un proyecto de código abierto que permite compilar,
depurar y ejecutar programas. Está basado en java, pero se puede
utilizar cualquier otro lenguaje de programación.
Figura 1. NetBeans.
4. Procesos
Para llevar a cabo el desarrollo del código, él mismo se dividió
en las siguientes clases: Clase Celda, Clase Bloque, Clase Mapa,
Clase Escenario Grafico, Clase Score, Clase Ventana de detalles,
Clase Ventana Pieza Siguiente, Clase GUI.
A continuación desarrollaremos de forma concreta y concisa la
lógica utilizada en las clases más relevantes.
4.1 Clase Celda
Esta clase tiene como objetivo crear el tablero sobre el cual se
desarrolla el juego de tetris. El tablero se declara como una matriz
de “celdas”. Cada una de estas celdas tiene lo que denominamos
estados. El estado vacio hace referencia a una celda que no lleva
imagen. El estado bloque muestra una imagen en las celdas. El
Jornada de Actualización Tecnológica 2011
Facultad de Ingeniería Eléctrica
estado ladrillo muestra una imagen en las celdas y la misma no
puede moverse.
de juego con celdas específicas en estado ladrillo y aumento en la
velocidad de caída de los bloques.
4.2 Clase Bloque
4.4 Otras Clases
La clase bloque crea las figuras o los tipos de bloque con los
que se desarrolla el juego tetris. Aquí nos referimos a las figuras
que tienen la forma del cuadrado, “L”, “T”, Z”. Las formas descritas
se muestran en la figura 2.
Estos tipos de bloques se forman de una agrupación de cuatro
celdas que tienen una posición dentro del tablero de juego y una
imagen. Los tipos de bloque son seleccionados de manera al
azar mediante un método o función específica llamado “random”,
una función en java que devuelve un número aleatorio.
Clase Escenario Grafico: esta clase nos permite ubicar el
conjunto de bloques dentro de la interfaz gráfica.
Clase Score: consiste en un contador el cual suma un punto por
cada fila que se rompe. El código de esta es bastante sencillo y se
muestra en la figura 3.
Figura 3. Código de la Clase Score.
Clase Ventana de Detalles: muestra los botones de los que
dispone el usuario y además presenta etiquetas que indican el
puntaje y el nivel actual. Las etiquetas y botones se muestran en
la figura 4.
Figura 2. Resultado de Clases Bloque y Celda.
4.3 Clase Mapa
Mapa contiene las acciones que pueden suceder durante el
desarrollo del juego.
Mover bloque y girar bloque: el bloque actual podrá siempre
estar en movimiento al menos que la agrupación de celdas que
forman el tipo de bloque pasen al estado ladrillo. Se consigue el
estado ladrillo cuando el bloque llega a la última línea de celdas
del tablero de juego y también cuando el bloque toque alguno
previamente en ese estado.
Fin del juego: sucede cuando en la primera línea de celdas del
tablero se encuentra al menos una celda en estado ladrillo.
Fila completa: una línea o fila completa de celdas se encuentra en
estado ladrillo. Esta fila de celdas se rompe lo que significa que
vuelven al estado vacio.
Aumentar nivel: se cambia la dificultad del juego cuando se
rompen veinte filas. La nueva dificultad presenta un nuevo tablero
Figura 4. Ventana de Detalles.
Clase Venta Pieza Siguiente: muestra el tipo de bloque que
sigue, lo hace mediante el método de “random”.
Jornada de Actualización Tecnológica 2011
Facultad de Ingeniería Eléctrica
Figura 6. Presentación final del juego tetris.
5. Resultados
Figura 5. Código de la Clase Ventana Pieza Siguiente.
4.5 Clase GUI
Como resultado logramos crear un juego de tetris mediante el
lenguaje de Java.
En éste implementamos lógica de vectores y posicionamientos
para lograr hacer funcionar el juego. Aparte de esto se obtuvo una
aplicación capaz de correr en todos los sistemas operativos de
Windows y de llamativos colores e interfaz fácil de utilizar al
usuario.
6. Conclusiones
Esta es la clase principal y es la encargada de hacer el llamado
a todas otras las clases para que el programa se ejecuta de
manera correcta. GUI ejecutara el programa de la siguiente
manera:
Paso1: Se crea un bloque mediante el método de random.
Paso2: Verifica el movimiento del bloque dentro de los límites del
tablero de juego.
Paso3: Si el bloque no puede moverse, pasa al estado ladrillo y y
el bloque siguiente aparece.
Paso4: Verifica si existe alguna fila completa.
Paso5: Si existe una fila completa se rompe y me suma un punto.
Paso6: Verifica si hay suficientes puntos para el cambio de nivel.
De suceder se crea el mapa con la nueva dificultad y aumento de
velocidad.
Paso7: Se crea el entorno del juego donde se muestra el tablero y
todos los detalles de la ventana con la que el usuario puede
interactuar.
Paso8: Este paso se refiere a fin del juego, que sucede cuando
alguna celda en la primera fila esta en el estado ladrillo.
En la Figura 6 se muestra la ventana del juego tetris con todas sus
figuras y detalles con las que interactúa el usuario.
Al realizar este proyecto logramos entender mas sobre la
metodología que se utiliza para el diseño de software. Aquí
utilizamos el lenguaje de java que es muy versátil y fácil de
aprender debido a que viene derivado de una compilación de
lenguajes populares como C++ y C.
Gracias a la utilización de este lenguaje fuimos capaces de
crear una interfaz grafica agradable para los usuarios dado que
pudimos utilizar objetos en este caso imágenes para desarrollar
una aplicación llamativa. En este tipo de desarrollo de programas
es importante que sea del agrado del usuario final.
7. Referencias
[1] Aprenda Java Escuela Superior de Ingenieros de Campus
Tecnológico de Navarra. Primera Edición.
[2] Publicación sobre códigos y lógicas de programación de en
Java tetris por Peter Parmesant.
[3] Netbeans IDE 7.0.1 JDK compilador de código
Jornada de Actualización Tecnológica 2011
Facultad de Ingeniería Eléctrica