Actividad 1: Los Sprites
Descripción
En esta actividad, crearemos la clase Sprite que representa un objeto gráfico en la pantalla. Un Sprite tiene una posición, una imagen y un tamaño. La clase Sprite también tiene métodos para mover el sprite y para dibujarlo en la pantalla.
Así mismo definiremos una estructura de herencia para los sprites que se mueven y los que no se mueven. De igual manera definiremos una estructura de herencia para clases de sprites como el Brick, Paddle y Ball.
Objetivos
Crear la clase
Sprite.Crear la clase
MovingSpriteque hereda deSprite.Crear las clases
Brick,PaddleyBallque heredan deStaticSpriteySprite.Crear el tipo enumerado
BrickTypeque define los tipos de ladrillos.Crear el tipo enumerado
BallTypeque define los tipos de pelotas.Crear el tipo enumerado
PaddleTypeque define los tipos de paletas.
Diagrama de clases
El siguiente diagrama de clases muestra la estructura de clases de los sprites:
Implementación
Clase Sprite
La clase Sprite representa un objeto gráfico en la pantalla. Un Sprite tiene una posición, una imagen y un tamaño.
Clase MovingSprite
La clase MovingSprite hereda de Sprite y representa un sprite que se mueve en la pantalla. Un MovingSprite tiene una velocidad en las direcciones x e y.
En este caso debemos de tener en cuenta que si los atributos dx y dy son positivos el sprite se moverá hacia la derecha y hacia abajo respectivamente. Si son negativos se moverá hacia la izquierda y hacia arriba respectivamente.
Por consiguiente, deberás implementar la función move para que el sprite se mueva en la pantalla.
Clase Ball
La clase Ball hereda de MovingSprite y representa una pelota en el juego. La clase Ball tiene un atributo speed que representa la velocidad de la pelota.
En este caso debes de completar los atributos dx y dy de la clase Ball para que la pelota se mueva en la pantalla. Toma en cuenta que la velocidad de la pelota es constante y se define en el constructor. Y que si se mueve a una velocidad de 3, esto quiere decir que se movera 3 pixeles en cada dirección. Por lo tanto, si la pelota se mueve hacia la derecha, dx será igual a 3 y si se mueve hacia arriba, dy será igual a -3.
Pos consiguiente la tabla de movimientos de la pelota es la siguiente:
Dirección |
|
|
|---|---|---|
Arriba | 0 | -3 |
Abajo | 0 | 3 |
Izquierda | -3 | 0 |
Derecha | 3 | 0 |
Arriba-Izquierda | -3 | -3 |
Arriba-Derecha | 3 | -3 |
Abajo-Izquierda | -3 | 3 |
Abajo-Derecha | 3 | 3 |
Además, la pelota tiene un atributo stop que indica si la pelota está detenida y un atributo dxStop que indica la dirección en la que se moverá sobre el eje x cuando se detenga. Por ejemplo, si dxStop es igual a -1, la pelota se moverá hacia la izquierda cuando se invoque el método move. Mientras que si dxStop es igual a 1, la pelota se moverá hacia la derecha. Y si dxStop es igual a 0, la pelota no se moverá.
Clase Missile
La clase Missile hereda de MovingSprite y representa un misil en el juego. La clase Missile tiene un atributo speed que representa la velocidad del misil y un atributo destroyed que indica si el misil ha sido destruido.
En este caso debes de completar los atributos dx y dy de la clase Missile para que el misil se mueva en la pantalla. Toma en cuenta que la velocidad del misil es constante y se define en el constructor. Y que si se mueve a una velocidad de 5, esto quiere decir que se moverá 5 píxeles hacia arriba desde donde fue lanzado.
Por consiguiente, deberás implementar la función move para que el misil se mueva en la pantalla.
Clase BrickType
El tipo enumerado BrickType define los tipos de ladrillos que se pueden utilizar en el juego. Los tipos de ladrillos son YELLOW, RED, BLUE y GREEN. Cada ladrillo tiene un color, una cantidad de vidas y un puntaje asociado.
Para la entrega deberás modificar el enumerado BrickType para que cada tipo de ladrillo tenga una cantidad de vidas y un puntaje asociado, distintos a los propuestos en el ejemplo.
Clase Brick
La clase Brick hereda de StaticSprite y representa un ladrillo en el juego. La clase Brick tiene un atributo type que indica el tipo de ladrillo, un atributo life que indica la cantidad de vidas del ladrillo, un atributo score que indica el puntaje asociado al ladrillo y un atributo destroyed que indica si el ladrillo ha sido destruido.
En este caso debes de completar el método hit de la clase Brick para que disminuya la vida del ladrillo cuando sea golpeado. Si la vida del ladrillo llega a 0, el ladrillo debe ser destruido.
Clase PaddleType
El tipo enumerado PaddleType define los tipos de paletas que se pueden utilizar en el juego. Los tipos de paletas son SMALL, MEDIUM, LARGE y SHOOTER.
Clase Paddle
La clase Paddle hereda de StaticSprite y representa una paleta en el juego. La clase Paddle tiene un atributo type que indica el tipo de paleta.
En este caso debes de completar el método shoot de la clase Paddle para que dispare un misil en el juego. Toma en cuenta que solo deberá disparar un misil si la paleta es de tipo SHOOTER.
Conclusión
En esta actividad, hemos creado la clase Sprite que representa un objeto gráfico en la pantalla. También hemos creado las clases StaticSprite y MovingSprite que heredan de Sprite y representan sprites estáticos y móviles, respectivamente. Además, hemos creado las clases Brick, Paddle y Ball que heredan de StaticSprite y MovingSprite y representan ladrillos, paletas y pelotas en el juego. También hemos definido los tipos enumerados BrickType, PaddleType y BallType que definen los tipos de ladrillos, paletas y pelotas que se pueden utilizar en el juego.
En la próxima actividad trabajaremos con otros Sprites como los bordes del juego y el fondo del juego.
Actividad
Implementa las clases
Sprite,MovingSprite,Ball,Missile,BrickType,Brick,PaddleTypeyPaddlesiguiendo las especificaciones dadas.Modifica el enumerado
BrickTypepara que cada tipo de ladrillo tenga una cantidad de vidas y un puntaje asociado, distintos a los propuestos en el ejemplo.Completa el método
hitde la claseBrickpara que disminuya la vida del ladrillo cuando sea golpeado. Si la vida del ladrillo llega a 0, el ladrillo debe ser destruido.Completa el método
shootde la clasePaddlepara que dispare un misil en el juego. Toma en cuenta que solo deberá dispar un misil si la paleta es de tipo `SHOOTER.Realiza pruebas unitarias para verificar el correcto funcionamiento de las clases implementadas.
Realiza pruebas de integración para verificar la interacción entre las clases implementadas.
Toma capturas de pantalla de las pruebas realizadas y agrégalas a la documentación de la actividad.
Comprime el proyecto en un archivo ZIP y envíalo a través de la plataforma.
Entrega
La entrega de la actividad se realizará a través de la plataforma y deberá contener los siguientes elementos:
Archivo ZIP con el proyecto de Java que contenga las clases implementadas.
Portada con datos de identificación de los miembros del equipo.
Documentación de clases y tipos enumerados.
Criterios de evaluación
Criterio | Descripción | Puntaje |
|---|---|---|
Portada | Contiene los datos de identificación de los integrantes del equipo (nombres completos, grupo, número de control). | 5% |
Documentación | Contiene la documentación de las clases y tipos enumerados implementados. | 5% |
Implementación | Las clases y tipos enumerados implementados cumplen con las especificaciones dadas. | 60% |
Pruebas unitarias | Se han realizado pruebas unitarias para verificar el correcto funcionamiento de las clases implementadas. | 10% |
Pruebas de integración | Se han realizado pruebas de integración para verificar la interacción entre las clases implementadas. | 10% |
Entrega | El archivo ZIP contiene todos los elementos solicitados. | 10% |
Total | 100% |
Fecha de entrega
La fecha límite de entrega es el lunes 10 de marzo de 2025 a las 23:59 hrs.