Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Immagini Casuali

  1. #1

    Immagini Casuali

    Salve, sto implementando un gioco in java.
    Mi spiego meglio, sto realizzando un gioco in java simile a questo http://www.gioco.it/gioco/Flying-Monkey.html . Il problema è che non so come generare casualmente degli uccelli.
    Voglio che n uccelli volino contemporaneamente in posizioni diverse (partendo da destra dello schermo ed uscire a sinistra dello schermo). Come posso fare idee???

  2. #2
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    La classe dedicata alla generazione di valori casuali è la java.util.Random:
    http://download.oracle.com/javase/1....il/Random.html

    Come farlo... per esempio potresti fargli generare un boolean per decidere la direzione (verso destra oppure verso sinistra) e successivamente un integer per decidere la "quota" di volo. In alternativa, naturalmente, le stesse informazioni possono essere estratte anche tramite un'unica generazione casuale

  3. #3
    Ho già provato con la classe random, ma ogni volta che estraggo un numero è uguale per tutti gli uccelli che creo.
    E poi non riesco a creare casualmente un numero di uccelli diversi. Questi uccelli poi devono attraversare tutto lo schermo e poi scomparire, nel frattempo da destra devono partire altri uccelli con posizioni diverse

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da gianluca1987
    Ho già provato con la classe random, ma ogni volta che estraggo un numero è uguale per tutti gli uccelli che creo.
    Hai SICURAMENTE sbagliato qualcosa. Non è che usi lo stesso seme ogni volta?

    Originariamente inviato da gianluca1987
    E poi non riesco a creare casualmente un numero di uccelli diversi. Questi uccelli poi devono attraversare tutto lo schermo e poi scomparire, nel frattempo da destra devono partire altri uccelli con posizioni diverse
    E cosa vorresti da noi? Il codice per fare questo?
    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
    Io utilizzo la funzione random che mi restituisce un numero che faccio si che sia compreso tra o e l'altezza dello schermo.
    Questo vale solo per un oggetto.
    Io voglio replicare questo per tanti oggetti che anch'essi sono casuali.

    Ho provato a semplificare il problema dicendo che 2 oggetti devono attraversare lo schermo da destra a sinistra, ma quando vado ad utilizzare la funzione random nel paintcomponent questo mi da lo stesso valore per entrambi gli oggetti.
    Ho provatoa creare una funzione adhoc che utilizza la funzione random e viene richiamata dai due oggetti, ma è la stessa cosa.
    Allora per risolvere ho estratto questo numero e al secondo oggetto assegno questo numero casuale + un numero costante 100.
    Così funziona, ma non va bene, perchè non fa neanche lontanamente quello che ho pensato all'inizio.
    Mi sono spiegato???
    Qualcuno sa come risolvere???

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da gianluca1987
    Ho provato a semplificare il problema dicendo che 2 oggetti devono attraversare lo schermo da destra a sinistra, ma quando vado ad utilizzare la funzione random nel paintcomponent questo mi da lo stesso valore per entrambi gli oggetti.
    Non siamo indovini, mostra il codice che hai scritto così vediamo cosa c'è di sbagliato...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Non siamo indovini, mostra il codice che hai scritto così vediamo cosa c'è di sbagliato...
    Che posso fare? Ovviamente sottoscrivo

    Comunque fidati, la classe Random funziona: hai sicuramente commesso qualche errore nel codice.

  8. #8
    Ecco il codice:

    codice:
    public void disegnaoggetti (Graphics g) {
    		Graphics2D g2=(Graphics2D)g;
    		g2.drawImage(cielo,0,0,this.getWidth(),this.getHeight(),this); 
    		
    		g2.drawImage(montagne,0-m.getposizionemontagnax(),this.getHeight()-500,this.getWidth(),450,this); 
    		g2.drawImage(montagne, this.getWidth()-m.getposizionemontagnax(),this.getHeight()-500,(this.getWidth()),450, this);
    		//g2.drawImage(sfondo,0,0,this.getWidth(),this.getHeight(),this); 
    		g2.drawImage(prato,0-m.getposizionepratox(),this.getHeight()-200,this.getWidth(),200,this); 
    		g2.drawImage(prato, this.getWidth()-m.getposizionepratox(),this.getHeight()-200,(this.getWidth()),200, this);
    		g2.drawImage(nuvola, (this.getWidth())-m.getposizionenuvolex(), 20,200,100,this);
    		g2.drawImage(nuvola, this.getWidth()+400-m.getposizionenuvolex(), 10,240,100,this);
    		g2.drawImage(nuvola, (this.getWidth()+800)-m.getposizionenuvolex(), 20,200,100,this);
    		
    	    g2.drawImage(uccello.get(m.getI()), this.getWidth()-m.getposizioneuccellox()+400,(int)(p*this.getHeight()), (this.getWidth()*150)/989,(this.getHeight()*70)/593,this);        
    	    g2.drawImage(uccello.get(m.getI()), this.getWidth()-m.getposizioneuccellox(),(int)(p*this.getHeight()+250), (this.getWidth()*150)/989,(this.getHeight()*70)/593,this);        
    	    if (s.wasClicked()&&(m.getPosizionescimmiay()-10>0)) {
    	    m.setPosizioneScimmiacliccata();	 
    	    g2.drawImage(scimmia.get(m.getI()), m.getPosizionescimmiax(),m.getPosizionescimmiay(),(this.getWidth()*70)/989,(this.getHeight()*150)/593,this);	
    	    }
    	    else 
    	    if (!(s.wasClicked())&&(m.getPosizionescimmiay()+10<this.getHeight()-180))
    	    {
    	    m.setPosizioneScimmianoncliccata();	 
    	  	g2.drawImage(scimmia.get(m.getI()), m.getPosizionescimmiax(),m.getPosizionescimmiay(),(this.getWidth()*70)/989,(this.getHeight()*150)/593,this);	
    	  	}
    	    else
    	    {
    		 g2.drawImage(scimmia.get(m.getI()), m.getPosizionescimmiax(),m.getPosizionescimmiay(),(this.getWidth()*70)/989,(this.getHeight()*150)/593,this);	
    	
    	    }
    		if ((this.getHeight()-m.getmverticalen()<0)&&(m.getmverticalen()==m.getmverticales())) {
    			m.setmverticales(0);
    		}
    		if (this.getHeight()-m.getmverticalen()<0) {
    			g2.drawImage(palla,this.getWidth()-m.getPosizionepallax(),m.getmverticales(), (this.getWidth()*50)/989,(this.getHeight()*50)/593,this); 
    
    		}
    		else {
    			g2.drawImage(palla,this.getWidth()-m.getPosizionepallax(),this.getHeight()-m.getmverticalen(), (this.getWidth()*50)/989,(this.getHeight()*50)/593,this); 
    		
    		}
    		
    	}
    	public void paintComponent(Graphics g){
    		super.paintComponents(g);	
    		if ((this.getWidth()-m.getposizioneuccellox())+150<0) {
    				m.setposizioneuccellox(0);
    			}
    		if ((this.getWidth()+950-m.getposizionenuvolex())<0) {
    			m.setposizionenuvolex(0);
    		}
    		if ((this.getWidth()-m.getposizionepratox())<0) {
    			m.setposizionepratox(0);
    		}
    		if ((this.getWidth()-m.getposizionemontagnax())<0) {
    			m.setposizionemontagnax(0);
    		}
    		if ((m.getposizioneuccellox()==0))
    			 p= Math.random();
    		
    		
    		disegnaoggetti(g);
    		
    	
    	}

  9. #9
    Utente di HTML.it L'avatar di desa
    Registrato dal
    Oct 2008
    Messaggi
    569
    Per entrambi i pennuti fai riferimento alla stessa variabile "p", settata nel paintComponent(): ovvio che il valore sia lo stesso.
    Per ogni volatile che hai in giro per la finestra devi memorizzare una variabile - inizializzata random solo in fase di creazione - che ne indica la "quota". In realtà, credo che sarebbe molto opportuno procedere a modellare ogni uccello in termini di oggetto.

  10. #10
    Cioè, creare una classe uccello???
    E poi come faccio a generare casualmente tra 0 e n oggetti di questo tipo con posizioni diverse???

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.