Boucle while fais crash le jeu
alexp23
Messages postés
88
Date d'inscription
Statut
Membre
Dernière intervention
-
alexp23 Messages postés 88 Date d'inscription Statut Membre Dernière intervention -
alexp23 Messages postés 88 Date d'inscription Statut Membre Dernière intervention -
Bonjour, Je poste (encore) un post car j'ai un soucis: Je customise le jeu mario sokoban en java qui est fais dans pas mal de tuto. Je rencontre un soucis dans la méthode Move() de mario, normalement mario se déplace 34px par 34px et je veux qu'il bouge pixel par pixels grâce à une boucle et erreur, la fenêtre crash : (méthode juste pour la direction "bas")
Le code me parait plutôt bien pourtant ...
ps: quand j'enlève la boucle, il se déplace bien à 1 px à chaque fois que appuis sur "bas";
Merci de m'aider.
public void Move(){ if (MarioDir == "bas"){ while (true){ this.y += 1; try { Thread.sleep(100); } catch (InterruptedException e) {e.printStackTrace();} } }
Le code me parait plutôt bien pourtant ...
ps: quand j'enlève la boucle, il se déplace bien à 1 px à chaque fois que appuis sur "bas";
Merci de m'aider.
A voir également:
- Boucle while fais crash le jeu
- 94 jeu - Télécharger - Puzzle & Réflexion
- 94 degrés jeu - Télécharger - Divers Jeux
- Jeu zuma - Télécharger - Jeux vidéo
- Logo jeu - Télécharger - Jeux vidéo
- Jeu google - Guide
2 réponses
MarioDir == "bas"
Il ne faut pas comparer deux objets avec == mais avec la méthode equals.
Remarque, une fois que le bouton bas aura été détecté une fois, avec ta boucle while (true) Mario descendra toujours sans s'arrêter, même si le bouton bas est relâché, je pense que c'est une erreur.
public void Move() { if (MarioDir.equals("bas")) { this.y += 1; try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }
Merci mais le code que tu m'as donner donne le même résultat que :
Sauf qu'il à 100 millis de décalage, ce code aussi le fais crash :
et même, il bouge même pas, il crash directe ...
if (MarioDir == "bas"){ this.x += 1; }
Sauf qu'il à 100 millis de décalage, ce code aussi le fais crash :
if (MarioDir == "bas"){ while ((MarioDir == "bas")){ this.y += 1; try { Thread.sleep(100); } catch (InterruptedException e) {e.printStackTrace();} } }
et même, il bouge même pas, il crash directe ...
Il faudrait voir comment cette méthode s'insert dans le reste du code, mais j'ai l'impression que c'est du séquentiel, c'est à dire que tant que cela boucle, avec notamment le temps de pause, le reste du programme ne fait rien. Or normalement il faudrait gérer plusieurs threads de manière à ce que la fenêtre puisse au moins se rafraîchir régulièrement, or si ton programme est fait comme je le pense, la fenêtre ne pourra pas être redessinée avant la fin de tous les traitements et ça freeze. Mais ce n'est avec un petit morceau de code que je pourrais t'aider, c'est toute la gestion d'action qu'il faut revoir.