Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Movimento oggetti in un Jpanel
Forum - Java - Movimento oggetti in un Jpanel

Avatar
frank87 (Normal User)
Newbie


Messaggi: 20
Iscritto: 10/03/2011

Segnala al moderatore
Postato alle 17:10
Lunedì, 23/04/2012
Salve a tutti,sono impegnato nella realizzazione di un piccolo videogioco. Essendo agli inizi,ho creato un JFrame,che contiene un pannello,dentro il quale ho collocato la mia macchinina con la quale giocare. Ora,dopo aver reso guidabile la macchinina non so come gestire il fatto che la mia macchina sia sempre visibile nel JPanel,perchè per come è impostato ora, quando la macchina supera i bordi del pannello la perdo di vista. Quindi vorrei fare in modo che quando la macchina si avvicina troppo al bordo l'inquadradura del Jpanel si sposti. Potete suggerirmi qualche modo per fare ciò? Grazie a tutti in anticipo:k::k::k:

PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 21:20
Lunedì, 23/04/2012
Dipende da come implementi gli elementi del gioco......
Non si capisce comè impostato il progetto...

La automobile cos'è un immagine incollata nel JPanel che si muove all'evento KeyListener, aggiornando la GUI con il metodo paint()?!?!

PM Quote
Avatar
frank87 (Normal User)
Newbie


Messaggi: 20
Iscritto: 10/03/2011

Segnala al moderatore
Postato alle 9:39
Martedì, 24/04/2012
Si esattamente,faccio muovere la macchina in base agli eventi del keyListener e nel metodo paint() disegno la mia macchina cosi:
Codice sorgente - presumibilmente Plain Text

  1. gr2.drawImage(immagine,(int)car.getX(),(int)car.getY(), this);



PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 11:42
Martedì, 24/04/2012
L'unica cosa che puoi fare è controllare se la macchina resta dentro la larghezza del JPanel per esempio se il JPanel gli setti una dimensione panel.setPreferredSize(new Dimension(600,600)),
nel KeyListener fai una cosa del genere:
Codice sorgente - presumibilmente Java

  1. if(freccia sinistra){
  2.          if(car.getX() > 0)car.x--;
  3.    }else if(freccia destra){
  4.          if ( (car.getX() + car.immagine.getWidth()) < 600)car.x++;
  5.    }


PM Quote
Avatar
davide94 (Member)
Rookie


Messaggi: 23
Iscritto: 09/11/2011

Segnala al moderatore
Postato alle 19:33
Venerdì, 27/04/2012
Se vuoi fare una cosa semplice come già detto puoi vedere quando raggiunge il limite dello schermo e da lì fermarlo ( per le collisioni c'è anche un bellissimo oggetto Rectangle e il metodo intersects).
Dopodichè se vuoi fare in modo che si sposti la "vista" che equivale a dire l'immagine di sfondo la cosa è un pò più complicata.
Dovresti fare in modo che l'immagine di sfondo si sposti a seconda di quanto si sposta la macchina(cosa difficile da gestire quando arriva in fondo e in verità non si muove più ).
Questo effetto si chiama parrallax :
ecco un video di esempio :
      http://www.youtube.com/watch?v=l3wq67W3fFg
     lo sfondo si ripete e si sposta creando la sensazione di movimento
Però forse volevi fare qualcosa di più semplice !

PM Quote