IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques en Java Discussion :

problème déplacement java


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 42
    Par défaut problème déplacement java
    Bonjour, voila en fait je développe un jeu en java, j'ai une grille et un bonhomme qui se déplace par l'intermédiaire des flèches du clavier, et en fait j'ai mis des obstacles sur des cases de la grille, mon problème est que je n'arrive pas à stopper les déplacements du bonhomme lorsque ces coordonnées rencontrent ceux d'un obstacle.

    Voila le bout de code concerné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    public void keyPressed(KeyEvent k) 
    	{
    		boolean avance = true;
     
    		 //traitement permettant de bloquer l'avancement du grinch en la venue d'un obstacle
    		 for(int j=0; j<tableauXObstacle.size(); j++)
    		 {	
    			//variable permettant de ralonger la zone de touché de l'obstacle
    			int lTabX = tableauXObstacle.get(j)+50;
    			int lTabY = tableauYObstacle.get(j)+50;
     
    			//si les coordonnées du grinch sont égaux avec ceux d'un obstacle
    			if(((grinch.getX()>=tableauXObstacle.get(j)-20)&&(grinch.getX()<=lTabX))
    					&&((grinch.getY()>=tableauYObstacle.get(j)-20)&&(grinch.getY()<=lTabY)))
    			{
    				avance = false;
    			}
    		 }
     
    		 if(avance)
    		 {
    			int Caract = k.getKeyCode();
     
    			//on fait bouger l'image vers le haut
    			if(Caract==KeyEvent.VK_UP)
    			 {
    				if(y>5)
    					y = y - 5;
    				grinch.setLocation(x, y);
    			 }
     
    			//on fait bouger l'image vers le bas
    			 if(Caract==KeyEvent.VK_DOWN) 
    			 {
    				 if(y<470)
    					 y = y + 5;
    				 grinch.setLocation(x, y);
    			 }
     
    			 //on fait bouger l'image vers la droite
    			 if(Caract==KeyEvent.VK_RIGHT) 
    			 {
    				 if(x<525)
    					 x = x + 5;
    				 grinch.setLocation(x, y);
    			 }
     
    			 //on fait bouger l'image vers la gauche
    			 if(Caract==KeyEvent.VK_LEFT) 
    			 {
    				 if(x>5)
    					 x = x - 5;
    				 grinch.setLocation(x, y);
    			 }
    		 }
    ...
    }
    J'ai utilisé un booléan met le problème c'est que dès que le bonhomme rencontre un obstacle, le bonhomme ne bouge plus du tout, je ne peux plus le faire bouger.

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Par défaut
    Ton algorithme est faux car ton bonhomme n'est pas bloqué d'entrer dans les obstacles. Et après il est entrée dans eux la variable 'avance' sera toujours faux. Faire le test d'intersection pour le nouveau position et ne pas change la position de grinch si le test retourne faux.

    Une autre méthode, plus bonne mais plus compliquée aussi que la première est de calculer le plus prés positionne valide ou le bonhomme peut se placer. Pour ça tu dois projeter le sommet d'un des rectangles (celui qui a causé la collision) sur tous les cotés de l'autre. Tu trouve la plus prés coté et avec le vecteur formé avec les deux points tu faire un translation de le premier rectangle. C'est pas très complique quand les rectangles sont alignés avec les axes.

Discussions similaires

  1. Problème de java.lang.NoClassDefFoundError
    Par nramariavelo dans le forum Hibernate
    Réponses: 5
    Dernier message: 13/06/2006, 14h54
  2. problème sous java
    Par lazzeroni dans le forum Oracle
    Réponses: 4
    Dernier message: 12/04/2006, 15h16
  3. Problème Applet Java et Win XP SP2
    Par octal dans le forum Applets
    Réponses: 4
    Dernier message: 04/02/2006, 09h57
  4. divers problème avec Java et jdbc
    Par chti_juanito dans le forum JDBC
    Réponses: 28
    Dernier message: 31/10/2005, 16h54
  5. problème déplacement entre formulaire
    Par estancha dans le forum IHM
    Réponses: 6
    Dernier message: 07/10/2004, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo