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á christopher.cano@hotmail.com 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á mello_1114@hotmail.com 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