jump to navigation

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.