1
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / Ejercicio java juego bola rebota contra barra mueve usuario precursor pong atari
« en: 14 de Octubre 2023, 13:17 »
Hola me gustaría recabar ayuda con el ejercicio siguiente en Java.
Arcade retro basics
Debe iniciar un programa con una ventana gráfica que ocupe aproximadamente la mitad de la pantalla del usuario, centrada sobre la misma. La ventana tendrá un panel izquierdo con borde marcado donde tendrá lugar la animación gráfica, que ocupará aproximadamente 4/5 partes de la ventana gráfica. Y un panel derecho con cinco botones: "Iniciar", "Acelerar", "Frenar", "Detener/Continuar" y "Resetear" que será 1/5 parte aproximadamente de la ventana gráfica.
Inicialmente deben aparecer dos elementos gráficos sobre el tablero: uno circular ("la bola") centrado sobre el borde superior del panel de animación o tablero. Otro rectangular ("la barra") centrado sobre el borde inferior del panel de animación o tablero. El comportamiento debe ser el siguiente:
1. Si se pulsa "Iniciar", la bola deberá moverse hacia abajo en una dirección aleatoria con una velocidad inicial predeterminada y avanzar. Si alcanza una pared lateral o la superior, debe rebotar. Si alcanza la parte inferior y choca con la barra, debe rebotar. En cambio si alcanza la parte inferior y no choca con la barra debe detenerse el movimiento y aparecer el mensaje "Game over". Inicialmente la bola va hacia abajo y rebota hacia abajo, con lo cual no podrá volver a la pared superior si antes no ha rebotado en la barra.
2. La barra deberá moverse hacia izquierda o derecha cuando el usuario pulse las teclas del cursor "flecha derecha" (la barra se mueve hacia la derecha mientras pueda. Cuando alcanza la pared, ya no se puede mover más.) o "flecha izquierda" (idem pero hacia la izquierda). De esta manera, el jugador tiene que intentar que la bola rebote en la barra para seguir jugando. Si no lo logra, llega al game over y termina el juego (aunque podrá iniciar otro juego pulsando en iniciar).
3. Si se pulsa "Acelerar" la bola incrementa su velocidad. Sucesivas pulsaciones generarán nuevos incrementos de velocidad hasta el valor tope que se determine.
4. Si se pulsa "Frenar" el comportamiento es análogo al de acelerar, pero en este caso disminuyendo la velocidad hasta el valor límite que se determine.
5. Si se pulsa "Detener/Continuar" la bola quedará quieta (detener) o reanudará su movimiento si estaba quieta (continuar)
6. Si se pulsa "Resetear" se vuelve al estado inicial (bola y barra centradas sobre el panel de animación y a la espera de que se pulse un botón).
Las pulsaciones sin sentido no generarán ninguna respuesta. Por ejemplo si la bola no ha iniciado su movimiento o si está en pausa, al pulsar en acelerar no habrá ninguna respuesta puesto que no se puede acelerar. Si se pulsa detener/continuar antes de "Iniciar" no habrá respuesta, etc.
Deberá realizar un diseño orientado a objetos con las clases que estime oportunas respetando siempre:
a) Que exista orientación a objetos (distintas clases con distintas responsabilidades)
b) Funcionalidad: un elemento circular que se mueve por la pantalla y rebota en los bordes.
Arcade retro basics
Debe iniciar un programa con una ventana gráfica que ocupe aproximadamente la mitad de la pantalla del usuario, centrada sobre la misma. La ventana tendrá un panel izquierdo con borde marcado donde tendrá lugar la animación gráfica, que ocupará aproximadamente 4/5 partes de la ventana gráfica. Y un panel derecho con cinco botones: "Iniciar", "Acelerar", "Frenar", "Detener/Continuar" y "Resetear" que será 1/5 parte aproximadamente de la ventana gráfica.
Inicialmente deben aparecer dos elementos gráficos sobre el tablero: uno circular ("la bola") centrado sobre el borde superior del panel de animación o tablero. Otro rectangular ("la barra") centrado sobre el borde inferior del panel de animación o tablero. El comportamiento debe ser el siguiente:
1. Si se pulsa "Iniciar", la bola deberá moverse hacia abajo en una dirección aleatoria con una velocidad inicial predeterminada y avanzar. Si alcanza una pared lateral o la superior, debe rebotar. Si alcanza la parte inferior y choca con la barra, debe rebotar. En cambio si alcanza la parte inferior y no choca con la barra debe detenerse el movimiento y aparecer el mensaje "Game over". Inicialmente la bola va hacia abajo y rebota hacia abajo, con lo cual no podrá volver a la pared superior si antes no ha rebotado en la barra.
2. La barra deberá moverse hacia izquierda o derecha cuando el usuario pulse las teclas del cursor "flecha derecha" (la barra se mueve hacia la derecha mientras pueda. Cuando alcanza la pared, ya no se puede mover más.) o "flecha izquierda" (idem pero hacia la izquierda). De esta manera, el jugador tiene que intentar que la bola rebote en la barra para seguir jugando. Si no lo logra, llega al game over y termina el juego (aunque podrá iniciar otro juego pulsando en iniciar).
3. Si se pulsa "Acelerar" la bola incrementa su velocidad. Sucesivas pulsaciones generarán nuevos incrementos de velocidad hasta el valor tope que se determine.
4. Si se pulsa "Frenar" el comportamiento es análogo al de acelerar, pero en este caso disminuyendo la velocidad hasta el valor límite que se determine.
5. Si se pulsa "Detener/Continuar" la bola quedará quieta (detener) o reanudará su movimiento si estaba quieta (continuar)
6. Si se pulsa "Resetear" se vuelve al estado inicial (bola y barra centradas sobre el panel de animación y a la espera de que se pulse un botón).
Las pulsaciones sin sentido no generarán ninguna respuesta. Por ejemplo si la bola no ha iniciado su movimiento o si está en pausa, al pulsar en acelerar no habrá ninguna respuesta puesto que no se puede acelerar. Si se pulsa detener/continuar antes de "Iniciar" no habrá respuesta, etc.
Deberá realizar un diseño orientado a objetos con las clases que estime oportunas respetando siempre:
a) Que exista orientación a objetos (distintas clases con distintas responsabilidades)
b) Funcionalidad: un elemento circular que se mueve por la pantalla y rebota en los bordes.