EJERCICIO 3 Agosto 10, 2008
Posted by beceoca in 1.trackback
BEATRIZ GARCIA
ENUNCIADO EJERCICIO 3
En este ejercicio lo que hay que hacer es programar un pequeño juego que consiste en que el jugador debe mantener una pelota rebotando de pared en pared sin dejarla caer al suelo.
Para lograrlo, el jugador moverá una raqueta o pala o paleta(como se quiera llamar) en horizontal, a lo largo del borde inferior de la pantalla de juego.
En definitiva, se trata de programar una versión simple del típico machaca-ladrillos(como por ejemplo el Arkanoid) pero sin ladrillos.
A la hora de hacerlo hay que olvidarse de menús y similares. La partida comienza nada más arrancar el juego, esto es, aparece en pantalla una pelota moviéndose por la zona de juego y rebotando contra las paredes , y un rectángulo en la parte inferior de la zona de juego que el jugador podrá mover de derecha a izquierda mediante las flechas correspondientes al teclado. Si la pelota llega a rebotar en la parte inferior(suelo), querrá decir que el jugador no logró interceptar la trayectoria de la pelota con la pala y se acabará la partida. Para completar un poco más el juego, en algún lugar de la pantalla (preferiblemente fuera de la zona de juego), habrá un marcador que lleve la cuenta de cuántas veces ha rebotado hasta el momento la pelota contra la raqueta.
Aquí se muestra un dibujo de la interfaz gráfica:
|
|
||||
|
|
|
|
||
|
|
||||
|
|
|
|
||
SOLUCIÓN EJERCICIO 3
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Juego extends JFrame{
private JPanel abajo,arriba;
private JLabel rebotesPala;
private int TAMAÑO=20;
private int numRebotesPala=0;
private JLabel tablero[][]= new JLabel[TAMAÑO][TAMAÑO];
private Timer reloj;
private int x=19;
private int y=TAMAÑO/2;
private int xx=14;
private int yy=14;
public Juego(){
super();
abajo= new JPanel();rebotesPala= new
JLabel(“CONTADOR:”+Integer.toString(numRebotesPala));
abajo.add(rebotesPala);
arriba=new JPanel(new GridLayout(TAMAÑO,TAMAÑO));
arriba.setSize(TAMAÑO*TAMAÑO,TAMAÑO*TAMAÑO);
for(int i=0;i<TAMAÑO;i++){
for(int j=0;j<TAMAÑO;j++){
tablero[i][j]=new JLabel();
tablero[i][j].setOpaque(true);
tablero[i][j].setBackground(Color.BLACK);
arriba.add(tablero[i][j]);
}
}
getContentPane().setLayout(new BorderLayout());
getContentPane().add(arriba,BorderLayout.CENTER);
getContentPane().add(abajo,BorderLayout.SOUTH);
pintarJugador();
pintarPelota();
Manejadores manejador= new Manejadores();
addKeyListener(manejador);
reloj=new Timer(250,manejador);
reloj.start();
}
public void pintarJugador(){
for(int y=8;y<12;y++){
tablero[x][y].setBackground(Color.WHITE);
}
}
public void pintarPelota(){
tablero[xx][yy].setBackground(Color.YELLOW);
}
public void visualizar(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setSize(635,400);
setResizable(false);
setVisible(true);
}
class Manejadores extends KeyAdapter implements ActionListener {
public void KeyPressed(KeyEvent e){
int x=19;
switch(e.getKeyCode()){
case KeyEvent.VK_RIGHT:
int numVeces=0;
int j=0;
if (tablero[x][j].getBackground() == Color.WHITE) {
if(numVeces<4){
j++;
tablero[x][j].setBackground(Color.WHITE);
numVeces++;
}
}
else{
tablero[x][j].setBackground(Color.BLACK);
}
case KeyEvent.VK_LEFT:
int numVeces=0;
int j=19;
if (tablero[x][j].getBackground() == Color.WHITE) {
if(numVeces<4){
j–;
tablero[x][j].setBackground(Color.WHITE);
numVeces++;
}
}else{
tablero[x][j].setBackground(Color.BLACK);
}
}
}
public void actionPerformed(ActionEvent e){
int w=19;
int h=0;
if(yy!=0){
if(xx!=19){
tablero[xx][yy].setBackground(Color.BLACK);
xx–;
yy–;
tablero[xx][yy].setBackground(Color.YELLOW);
}else if(xx==19&&tablero[xx][yy].getBackground()!=Color.WHITE ){
System.exit(0);
}else
if(xx==18&&tablero[w][yy].getBackground()==Color.WHITE){
numRebotesPala++; tablero[xx][yy].setBackground(Color.BLACK);
xx–;
yy++;
tablero[xx][yy].setBackground(Color.YELLOW);
reloj.start();
}
}
else{
reloj.stop();
tablero[xx][yy].setBackground(Color.BLACK);
xx++;
tablero[xx][yy].setBackground(Color.YELLOW);
reloj.start();
}
}
}
public static void main(String [] args){
Juego juego= new Juego();
juego.visualizar();
}
}
CONCEPTOS EJERCICIO 3
En este tercer ejercicio los conceptos que se han tratado han sido:
-El concepto de interfaces gráficas(swing)
-El concepto de programación orientada a Eventos
-El concepto de arrays bidimensionales
Comentarios»
No comments yet — be the first.