Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    12

    movimento java

    ho urgentemente bisogno di una mano! ho fatto questo programma/gioco in java ora però dovrei far muovere i quadratini verso la barra. come faccio a farl muovere?

    ecco il codice

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.Vector;
    
    import javax.imageio.ImageIO;
    import javax.swing.*;
    
    public class PerEsame extends JPanel implements ActionListener,MouseListener ,MouseMotionListener,KeyListener{
    	
    	static Shape barra;
    	static int y = 400;
    	static int x=0;
    	static JTextField punti;
    	static Vector proiettiliX;
        static Vector proiettiliY;
        static final int raggioProiettile = 5;
        static  int punteggio = 0;
        static Vector brick;
        //static Vector navi;
        static int tempoMax = 3000;
    	
    	
    	public static void main(String [] a){
    		
    		JFrame finestra = new JFrame();
            finestra.setSize(800,800);
            finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            JPanel principale = new JPanel();
            JPanel comandi = new JPanel();
            
            punti = new JTextField();
            punti.setText(punteggio+"");
            punti.setPreferredSize(new Dimension(100,20));
            
            proiettiliX = new Vector();
            proiettiliY = new Vector();
            brick = new Vector();
            
            comandi.add(punti);
            
            
            PerEsame pe=new PerEsame();
            
            pe.setFocusable(true);
            pe.addMouseMotionListener(pe);
            pe.addMouseListener(pe);
            pe.addKeyListener(pe);
    
            pe.setBackground(Color.WHITE);
            principale.setLayout(new BorderLayout());
            principale.add(pe,BorderLayout.CENTER);
            principale.add(comandi,BorderLayout.SOUTH);
            
            
            
            
            finestra.getContentPane().add(principale);
            finestra.setVisible(true);
            
            riempiBrick(pe);
            Timer t = new Timer(5,pe);
            t.start();
            
    	}
    	
    	public void paint(Graphics g){
    		
    		super.paint(g);
    		Graphics2D g2 = (Graphics2D)g;
    		
    		
    		try{
    			
    			barra= new Rectangle2D.Double(this.getWidth()-20,y,10,50);
    			
    			g2.setColor(Color.BLACK);
                g2.fill(barra);
    			
    			
    			
    		}catch(Exception e){
    			
    		}
    		
    		for (int i=0;i<proiettiliX.size();i++){
    
                int x1 = ((Integer) proiettiliX.elementAt(i)).intValue();
                int y1 = ((Integer) proiettiliY.elementAt(i)).intValue();
    
                Shape circle = new Ellipse2D.Double(x1,y1,raggioProiettile,raggioProiettile);
                boolean preso = false;
                
                
                
                
                //crea proiettili e intersezione con asteroidi
                for (int j=0;j<brick.size();j++){
                    Shape rect = (Rectangle2D) brick.elementAt(j);
                    if (circle.intersects((Rectangle2D) rect)){
                        preso = true;
                        brick.remove(j);
                        proiettiliX.remove(i);
                        proiettiliY.remove(i);
                        punteggio++;
                    }    
                }
                if (!preso){
                    g2.fill(circle);
                }
            }
                
             //crea asteroidi   
            
            for (int j=0;j<brick.size();j++){
                g2.setColor(Color.RED);
                Shape rect = (Rectangle2D) brick.elementAt(j);
                g2.fill(rect);
                
            }
    	}
    	
    	 public static void riempiBrick(JPanel p){
    	    	
    	    	//crea asteroidi
    
    	        for (int i=0;i<50;i++){
    	            int y = (int) (Math.random() * p.getWidth());
    	            int x = (i*3);
    	            Shape b = new Rectangle2D.Double(x,y,10,10);
    
    	            brick.add(b);
    	        }
    	        
    	    }
    
    
    	
    	public void mouseClicked(MouseEvent e) {
    		
    	}	
    	public void mouseEntered(MouseEvent e) {
    		
    	}
    
    	public void mouseExited(MouseEvent e) {
    		
    	}
    
    	public void mousePressed(MouseEvent e) {
    				
    	}
    
    	public void mouseReleased(MouseEvent e) {
    				
    	}
    
    	public void mouseDragged(MouseEvent e) {
    				
    	}
    
    	public void mouseMoved(MouseEvent e) {		
    		
    	}
    	
    	
    	public void keyPressed(KeyEvent e) {
    		
    		if (e.getKeyCode() == KeyEvent.VK_UP){
    			y=y-10;
    			
    		}if (e.getKeyCode() == KeyEvent.VK_DOWN){
    			y=y+10;
    			
    		}
    		
    		if (e.getKeyCode()== KeyEvent.VK_SPACE){
    			
    			proiettiliX.add(new Integer(this.getWidth()-20));
    	        proiettiliY.add(new Integer(y+25-(raggioProiettile/2)));
    
    		}
    
    		 this.repaint();	
    	}
    
    
    	public void keyReleased(KeyEvent e) {	
    		
    	}
    
    	public void keyTyped(KeyEvent e) {
    				
    	}
    	
    	
    	public void actionPerformed(ActionEvent arg0) {
    		
    		
    		
    	
    		 for (int i=0;i<proiettiliX.size();i++){
    
    
    	            int x1 = ((Integer) proiettiliX.elementAt(i)).intValue();
    	            x1--;
    	            if (x1>0){
    	                proiettiliX.setElementAt(new Integer(x1), i);
    	            } else {
    	                proiettiliY.remove(i);
    	                proiettiliX.remove(i);
    	            }
    	        }
    		 
    		/* for(int j=0;j<brick.size();j++){
    			 
    			 int x2=((Integer) brick.elementAt(j)).intValue();
    			 x2++;
    			 if (x2<0){
    	                brick.setElementAt(new Integer(x2), j);
    	            } else {
    	                brick.remove(j);
    	                //proiettiliX.remove(i);
    	            }
    		 }*/
    		 
    		 
    	        punti.setText(punteggio + "");
    	        tempoMax--;
    	        if (tempoMax==0){
    	            JOptionPane.showMessageDialog(null, "Tempo massimo scaduto: punteggio ottenuto "+punteggio+" punti");
    	            System.exit(0);
    	        }
    	        this.repaint();
    		
    		
    	}
    
    }

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,188

    Moderazione

    Come segnalato nell'altra discussione, prendi visione del Regolamento interno.

    Il codice va postato usando gli appositi tag CODE.
    I titoli delle discussioni devono essere quanto più indicativi possibile
    Le discussioni hanno tutte la medesima urgenza.

    Inoltre, sei tu che devi indicare quali sono gli eventuali errori che ottieni, dove li ottieni (compilazione, esecuzione), se vi sono discrepanze fra risultato sperato e risultato ottenuto e, soprattutto, non puoi richiedere lo sviluppo di codice conto terzi.

    Puoi chiedere dei suggerimenti, come intendo in questo caso.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.