Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7

    [JAVA] Aiuto con minigioco

    Salve a tutti, sto facendo un minigioco e mi servirebbe un aiutino.
    Il gioco consiste nel cliccare su dei bersagli con il mouse e una volta cliccati devono scomparire (una sorta di tiro al bersaglio); i bersagli devono essere generati randomicamente, con posizione casuale appena fuori dallo schermo e possono avere 3 tipi di movimenti: orizzontale, verticale e diagonale.
    I bersagli che nascono a destra o a sinistra dello schermo devono muoversi orizzontalmente verso il lato opposto dello schermo e stessa cosa per quelli che nascono in alto o in basso dello schermo ma con senso verticale.
    Quelli che si muovono diagonalmente invece devono essere generati agli angoli dello schermo.
    Gli obiettivi non devono essere generati tutti insieme ma deve passare qualche secondo tra la generazione di ogni bersaglio.

    Io ho scritto questo codice ma non so come generare i bersagli in modo random e con direzioni diverse (orizzontale,verticale, diagonale). Sapreste aiutarmi e darmi qualche consiglio?
    codice:
    class GiocoPanel extends JPanel{
    			Dimension myGioco = new Dimension(750, 530);
    			Color myColor = new Color(9, 64, 32);
    			Timer t,t1;
    			ArrayList bersagli;
    			
    			public GiocoPanel(){
    				setPreferredSize(myGioco);
    				setBackground(myColor);
    				Genera();
    				
    				t = new Timer(20, new ActionListener(){
    						public void actionPerformed(ActionEvent event){
    							if(bersagli != null){
    								for(int i=0; i<bersagli.size(); i++){
    									((Bersaglio)(bersagli.get(i))).move();
    								}
    							}
    						repaint();
    					}
    				});
    				t.start();
    			}
    			public void Genera(){
    				bersagli = new ArrayList();
    				t1 = new Timer(1200, new ActionListener(){
    						public void actionPerformed(ActionEvent event){
    							bersagli.add(new Bersaglio(0,0));
    							((Bersaglio)bersagli.get(bersagli.size()-1)).setSpeed(2);
    							((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,1);
    						}
    				});
    				t1.start();
    			}							
    			
    			public void paintComponent(Graphics g){
    				super.paintComponent(g);
    				Graphics2D g2 = (Graphics2D)g;
    				    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    				if(bersagli==null)
    					bersagli = new ArrayList();
    				else
    					disegna(g2);
    					g2.setColor(new Color(9,64,32));
    			}
    			
    			public void disegna(Graphics2D g2){
    				for(int i=0; i<bersagli.size(); i++){
    					((Bersaglio)bersagli.get(i)).disegna(g2);
    				}
    			}
    		}
    }
    
    class Bersaglio{
    	Ellipse2D.Double cerchio1, cerchio2, cerchio3, cerchio4, cerchio5;
    	double raggio;
    	double G = 30;
    	Point2D centro;
    	Color cBersaglioRosso, cBersaglioBianco;
    	Vector2 direzione;
    	double speed;
    	
    	public Bersaglio(double x, double y){		
    		centro = new Point2D.Double(x, y);
    		cBersaglioRosso = new Color(210, 0 ,5);
    		cBersaglioBianco = new Color(255,255,255);
    		
    		direzione = new Vector2(0,0);
    		speed = 0;
    	
    		raggio = G;
    		cerchio1 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2,  raggio*2);
    		
    		raggio = (4*G)/5;
    		cerchio2 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (3*G)/5;
    		cerchio3 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (2*G)/5;
    		cerchio4 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = G/5;
    		cerchio5 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    	}
    	
    	public void disegna(Graphics2D figura){
    				figura.setColor(cBersaglioRosso);
    				figura.fill(cerchio1);
    				figura.setColor(cBersaglioBianco);
    				figura.fill(cerchio2);
    				figura.setColor(cBersaglioRosso);
    				figura.fill(cerchio3);
    				figura.setColor(cBersaglioBianco);
    				figura.fill(cerchio4);
    				figura.setColor(cBersaglioRosso);
    				figura.fill(cerchio5);
    			}
    		public void setSpeed(double s) {speed = s;	}
    		public double getSpeed()       { return speed;  }
    		public void setDirection(Vector2 v) {direzione = v; }
    		public void setDirection(double dx, double dy) { direzione = new Vector2(dx,dy); direzione.normalize(); }
    		public Vector2 getDirection()	{ return direzione; }
    		
    		public void move(){
    			double raggio = G;
    			centro = new Point2D.Double(centro.getX()+(direzione.getX()*speed), centro.getY()+(direzione.getY()*speed) );
    			cerchio1.setFrame( centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (4*G)/5;
    			cerchio2.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (3*G)/5;
    			cerchio3.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (2*G)/5;
    			cerchio4.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = G/5;
    			cerchio5.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			}
    		public void directTo(Point2D p){
    			direzione = new Vector2( p.getX() - centro.getX(), p.getY() - centro.getY() );
    			direzione.normalize();
    		}	
    }
    
    class Vector2{
    	
    	private double x,y;
    	
    	public Vector2(double a, double b){
    		x = a;
    		y = b;
    	}
    	
    	public double getX() {return x; }
    	public void setX(double a) { x = a; }
    	public double getY() {return y; }
    	public void setY(double b) { y = b; }
    	
    	
    	public double length(){
    		return (Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));
    	}
    	
    	public void normalize(){
    		double l = length();
    		x = x/l;
    		y = y/l;
    	}
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    Ciao, puoi dare uno sguardo alla classe java.util.Random (http://docs.oracle.com/javase/1.4.2/...il/Random.html).
    Ad esempio con un
    codice:
    new Random().nextInt(3)
    ottieni un numero casuale 0 e 2 a cui potresti assegnare una direzione...

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    Mi dice "bersagli.get(bersagli.size()-1).setCentro(CentroRandom());" errore cannot find symbol
    symbol: method setCentro(Point2D)
    location: Class Object

    non riesco a utilizzare il centro che mi restituisci il metodo CentroRandom()
    codice:
    class GiocoPanel extends JPanel{
    			Dimension myGioco = new Dimension(0, 0);
    			Color myColor = new Color(22, 43, 86);	 //COLORE PANNELLO MYGIOCO;
    			Timer t,t1;
    			ArrayList bersagli;
    			
    			public GiocoPanel(){
    				setPreferredSize(myGioco);
    				setBackground(myColor);
    				Genera();
    				
    				t = new Timer(20, new ActionListener(){
    						public void actionPerformed(ActionEvent event){
    							if(bersagli != null){
    								for(int i=0; i<bersagli.size(); i++){
    									((Bersaglio)(bersagli.get(i))).move();
    								}
    							}
    						repaint();
    					}
    				});
    				t.start();
    			}
    			public void Genera(){
    				bersagli = new ArrayList();
    				t1 = new Timer(1200, new ActionListener(){
    						public void actionPerformed(ActionEvent event){
    							bersagli.add(new Bersaglio(0,0));
    							((Bersaglio)bersagli.get(bersagli.size()-1)).setSpeed(2);
    							bersagli.get(bersagli.size()-1).setCentro(CentroRandom());
    						}
    				});
    				t1.start();
    			}
    			
    			public Point2D CentroRandom(){
    			 	Point2D punto = new Point2D.Double(0,0);
    				switch((int)Math.round(Math.random()*8+1)){
    					
    				case 1: punto = new Point2D.Double(-30,-30);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,1);
    					break;
    				case 2: punto = new Point2D.Double(0,30+NRandom());
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,0);
    					break;
    				case 3: punto = new Point2D.Double(30+NRandom(),0);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(0,1);
    					break;
    				case 4: punto = new Point2D.Double(530,530);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,-1);
    					break;
    				case 5: punto = new Point2D.Double(520,0);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,1);
    					break;
    				case 6: punto = new Point2D.Double(-15,430);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,-1);
    					break;
    				case 7: punto = new Point2D.Double(30+NRandom(),485);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(0,-1);
    					break;
    				case 8: punto = new Point2D.Double(530,30+NRandom());
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,0);
    					break;
    				}
    				return punto;				
    			}
    			public int NRandom(){
    				int nrand = (int)(Math.round((Math.random())*300+1));
    				return nrand;
    			}
    			
    			public void paintComponent(Graphics g){
    				super.paintComponent(g);
    				Graphics2D g2 = (Graphics2D)g;
    				g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    				if(bersagli==null)
    					bersagli = new ArrayList();
    				else
    					disegna(g2);
    					g2.setColor(new Color(22,43,86));
    			}
    			
    			public void disegna(Graphics2D g2){
    				for(int i=0; i<bersagli.size(); i++){
    					((Bersaglio)bersagli.get(i)).disegna(g2);
    				}
    			}
    		}
    		
    		class DatiPanel extends JPanel{
    			private JLabel StageLabel, ObiettiviLabel, PuntiLabel;
    			private int myStage, myObiettivi, myPunti;
    		
    			public int getStage() 		{ return myStage; }
    			public int getObiettivi()	{ return myObiettivi; }
    			public int getPunti()		{ return myPunti; }
    			public void setStage(int value)		{ myStage = value; }
    			public void setObiettivi(int value)	{ myObiettivi = value; }
    			public void setPunti(int value)		{ myPunti = value; }
    			
    			public DatiPanel(){
    			int Stage=1; int Obiettivi=0; int Punti=0;
    			StageLabel = new JLabel("Stage:\t"+myStage);
    			ObiettiviLabel = new JLabel("Obiettivi:\t"+myObiettivi);
    			PuntiLabel = new JLabel("Punti:\t"+myPunti);
    			
    			add(StageLabel);
    			add(ObiettiviLabel);
    			add(PuntiLabel);
    			}
    		}
    }
    
    class Bersaglio{
    	Ellipse2D.Double cerchio1, cerchio2, cerchio3, cerchio4, cerchio5;
    	double raggio;
    	double G = 30;
    	Point2D centro;
    	Color cBersaglioRosso, cBersaglioBianco;
    	Vector2 direzione;
    	double speed;
    	
    	public Bersaglio(double x, double y){		
    		centro = new Point2D.Double(x, y);
    		cBersaglioRosso = new Color(210, 0 ,5);   //Colore circonferenza rossa
    		cBersaglioBianco = new Color(255,255,255); //Colore circonferenza bianca
    		
    		direzione = new Vector2(0,0);
    		speed = 0;
    	
    		raggio = G;
    		cerchio1 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (4*G)/5;
    		cerchio2 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (3*G)/5;
    		cerchio3 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (2*G)/5;
    		cerchio4 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = G/5;
    		cerchio5 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    	}
    	
    	public void disegna(Graphics2D figura){
    				figura.setColor(cBersaglioRosso);	// 1° circonferenza
    				figura.fill(cerchio1);
    				figura.setColor(cBersaglioBianco);	// 2° circonferenza
    				figura.fill(cerchio2);
    				figura.setColor(cBersaglioRosso);	// 3° circonferenza
    				figura.fill(cerchio3);
    				figura.setColor(cBersaglioBianco);	// 4° circonferenza
    				figura.fill(cerchio4);
    				figura.setColor(cBersaglioRosso);	// 5° circonferenza
    				figura.fill(cerchio5);
    			}
    		public void setSpeed(double s) {speed = s;	}
    		public double getSpeed()       { return speed;  }
    		public void setCentro(double x, double y)     { centro = new Point2D.Double(x,y);  }
    		public Point2D getCentro()	{ return centro; }
    		public void setDirection(Vector2 v) {direzione = v; }
    		public void setDirection(double dx, double dy) { direzione = new Vector2(dx,dy); direzione.normalize(); }
    		public Vector2 getDirection()	{ return direzione; }
    		
    		public void move(){
    			double raggio = G;
    			centro = new Point2D.Double(centro.getX()+(direzione.getX()*speed), centro.getY()+(direzione.getY()*speed) );
    			cerchio1.setFrame( centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (4*G)/5;
    			cerchio2.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (3*G)/5;
    			cerchio3.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (2*G)/5;
    			cerchio4.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = G/5;
    			cerchio5.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			}
    		public void directTo(Point2D p){
    			direzione = new Vector2( p.getX() - centro.getX(), p.getY() - centro.getY() );
    			direzione.normalize();
    		}	
    }
    
    class Vector2{
    	
    	private double x,y;
    	
    	public Vector2(double a, double b){
    		x = a;
    		y = b;
    	}
    	
    	public double getX() {return x; }
    	public void setX(double a) { x = a; }
    	public double getY() {return y; }
    	public void setY(double b) { y = b; }
    	
    	
    	public double length(){
    		return (Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));
    	}
    	
    	public void normalize(){
    		double l = length();
    		x = x/l;
    		y = y/l;
    	}
    }

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da herahoc
    Mi dice "bersagli.get(bersagli.size()-1).setCentro(CentroRandom());" errore cannot find symbol
    symbol: method setCentro(Point2D)
    location: Class Object

    non riesco a utilizzare il centro che mi restituisci il metodo CentroRandom()
    Beh, il metodo è definito

    public void setCentro(double x, double y)

    tu invece gli stai passando un CentroRandom...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    e come faccio a passargli il CentroRandom? Io avevo pensato a due possibilità ma mi danno tutte e due problemi, o metto nell'ultima riga del timer che li genera "bersagli.get( bersagli.size()-1).setCentro( CentroRandom() );" oppure dentro il metodo CentroRandom(){} prima del return punto faccio la stessa cosa ma invece di settarlo con "CentroRandom()" lo setto proprio come "punto"

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    Ok ho risolto la parte della generazione dei bersagli, ora devo fare in modo che quando un bersaglio viene cliccato scompare.
    Consigli su come fare? Mi conviene usare il metodo contains?
    codice:
    class GiocoPanel extends JPanel implements MouseListener, MouseMotionListener{
    			Dimension myGioco = new Dimension(0, 0);
    			Color myColor = new Color(22, 43, 86);	 //COLORE PANNELLO MYGIOCO;
    			Timer t,t1;
    			ArrayList bersagli;
    			double x,y;
    			
    			public GiocoPanel(){
    				setPreferredSize(myGioco);
    				setBackground(myColor);
    				setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
    				Genera();
    				
    				t = new Timer(20, new ActionListener(){
    						public void actionPerformed(ActionEvent event){
    							if(bersagli != null){
    								for(int i=0; i<bersagli.size(); i++){
    									((Bersaglio)(bersagli.get(i))).move();
    								}
    							}
    						repaint();
    					}
    				});
    				t.start();
    			}
    			public void Genera(){
    				bersagli = new ArrayList();
    				t1 = new Timer(2000, new ActionListener(){
    						public void actionPerformed(ActionEvent event){
    							bersagli.add(new Bersaglio(0,0));
    							((Bersaglio)bersagli.get(bersagli.size()-1)).setSpeed(2);
    							((Bersaglio)(bersagli.get(bersagli.size()-1))).setCentro(CentroRandom());
    						}
    				});
    				t1.start();
    			}
    			
    			public Point2D CentroRandom(){
    			 	Point2D punto = new Point2D.Double(0,0);
    				switch((int)Math.round(Math.random()*7+1)){
    					
    				case 1: punto = new Point2D.Double(-30,-30);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,1);
    					break;
    				case 2: punto = new Point2D.Double(0,30+NRandom());
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,0);
    					break;
    				case 3: punto = new Point2D.Double(30+NRandom(),0);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(0,1);
    					break;
    				case 4: punto = new Point2D.Double(530,530);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,-1);
    					break;
    				case 5: punto = new Point2D.Double(520,0);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,1);
    					break;
    				case 6: punto = new Point2D.Double(-15,520);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(1,-1);
    					break;
    				case 7: punto = new Point2D.Double(30+NRandom(),485);
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(0,-1);
    					break;
    				case 8: punto = new Point2D.Double(530,30+NRandom());
    					((Bersaglio)bersagli.get(bersagli.size()-1)).setDirection(-1,0);
    					break;
    				}
    				return punto;				
    			}
    			public int NRandom(){
    				int nrand = (int)(Math.round((Math.random())*300+1));
    				return nrand;
    			}
    			
    			public void paintComponent(Graphics g){
    				super.paintComponent(g);
    				Graphics2D g2 = (Graphics2D)g;
    				g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
    				if(bersagli==null)
    					bersagli = new ArrayList();
    				else
    					disegna(g2);
    					g2.setColor(new Color(22,43,86));
    			}
    			
    			public void disegna(Graphics2D g2){
    				for(int i=0; i<bersagli.size(); i++){
    					((Bersaglio)bersagli.get(i)).disegna(g2);
    				}
    			}
    						
    			//METODI MOUSE LISTENER
    			public void mouseMoved(MouseEvent e){
    				x = e.getX();
    				y = e.getY();
    			}
    			public void mouseReleased(MouseEvent e){
    			}
    			public void mousePressed(MouseEvent e){	}
    			public void mouseClicked(MouseEvent e){ }
    			public void mouseEntered(MouseEvent e){ }
    			public void mouseDragged(MouseEvent e) { }
    			public void mouseExited(MouseEvent e){ }
    		}
    		
    		class DatiPanel extends JPanel{
    			private JLabel StageLabel, ObiettiviLabel, PuntiLabel;
    			private int myStage, myObiettivi, myPunti;
    		
    			public int getStage() 		{ return myStage; }
    			public int getObiettivi()	{ return myObiettivi; }
    			public int getPunti()		{ return myPunti; }
    			public void setStage(int value)		{ myStage = value; }
    			public void setObiettivi(int value)	{ myObiettivi = value; }
    			public void setPunti(int value)		{ myPunti = value; }
    			
    			public DatiPanel(){
    			int Stage=1; int Obiettivi=0; int Punti=0;
    			StageLabel = new JLabel("Stage:\t"+myStage);
    			ObiettiviLabel = new JLabel("Obiettivi:\t"+myObiettivi);
    			PuntiLabel = new JLabel("Punti:\t"+myPunti);
    			
    			add(StageLabel);
    			add(ObiettiviLabel);
    			add(PuntiLabel);
    			}
    		}
    }
    
    class Bersaglio{
    	Ellipse2D.Double cerchio1, cerchio2, cerchio3, cerchio4, cerchio5;
    	double raggio;
    	double G = 30;
    	Point2D centro;
    	Color cBersaglioRosso, cBersaglioBianco;
    	Vector2 direzione;
    	double speed;
    	
    	public Bersaglio(double x, double y){		
    		centro = new Point2D.Double(x, y);
    		cBersaglioRosso = new Color(210, 0 ,5);   //Colore circonferenza rossa
    		cBersaglioBianco = new Color(255,255,255); //Colore circonferenza bianca
    		
    		direzione = new Vector2(0,0);
    		speed = 0;
    	
    		raggio = G;
    		cerchio1 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (4*G)/5;
    		cerchio2 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (3*G)/5;
    		cerchio3 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = (2*G)/5;
    		cerchio4 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    		
    		raggio = G/5;
    		cerchio5 = new Ellipse2D.Double(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    	}
    	
    	public void disegna(Graphics2D figura){
    				figura.setColor(cBersaglioRosso);	// 1° circonferenza
    				figura.fill(cerchio1);
    				figura.setColor(cBersaglioBianco);	// 2° circonferenza
    				figura.fill(cerchio2);
    				figura.setColor(cBersaglioRosso);	// 3° circonferenza
    				figura.fill(cerchio3);
    				figura.setColor(cBersaglioBianco);	// 4° circonferenza
    				figura.fill(cerchio4);
    				figura.setColor(cBersaglioRosso);	// 5° circonferenza
    				figura.fill(cerchio5);
    			}
    		public void setSpeed(double s) {speed = s;	}
    		public double getSpeed()       { return speed;  }
    		public void setCentro(Point2D centroNew)     { centro = centroNew;  }
    		public Point2D getCentro()	{ return centro; }
    		public void setDirection(Vector2 v) {direzione = v; }
    		public void setDirection(double dx, double dy) { direzione = new Vector2(dx,dy); direzione.normalize(); }
    		public Vector2 getDirection()	{ return direzione; }
    		
    		public void move(){
    			double raggio = G;
    			centro = new Point2D.Double(centro.getX()+(direzione.getX()*speed), centro.getY()+(direzione.getY()*speed) );
    			cerchio1.setFrame( centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (4*G)/5;
    			cerchio2.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (3*G)/5;
    			cerchio3.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = (2*G)/5;
    			cerchio4.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			raggio = G/5;
    			cerchio5.setFrame(centro.getX()-raggio, centro.getY()-raggio, raggio*2, raggio*2);
    			}
    		public void directTo(Point2D p){
    			direzione = new Vector2( p.getX() - centro.getX(), p.getY() - centro.getY() );
    			direzione.normalize();
    		}	
    }
    
    class Vector2{
    	
    	private double x,y;
    	
    	public Vector2(double a, double b){
    		x = a;
    		y = b;
    	}
    	
    	public double getX() {return x; }
    	public void setX(double a) { x = a; }
    	public double getY() {return y; }
    	public void setY(double b) { y = b; }
    	
    	
    	public double length(){
    		return (Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));
    	}
    	
    	public void normalize(){
    		double l = length();
    		x = x/l;
    		y = y/l;
    	}
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    7
    Si può chiudere

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 © 2025 vBulletin Solutions, Inc. All rights reserved.