Java Mario Bros (débutant)

orie - 11 juil. 2017 à 15:34
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 20 juil. 2017 à 11:23
Bonjour,

Pour un projet destiné à mes études, j'ai produit sur Eclipse un jeu Mario Bros en java en suivant le tutoriel de Stephan Maurer sur Youtube.

Tout fonctionne, c'est super mais ce n'est pas assez complet.

Je souhaite rajouter des blocs mystères où lorsque Mario saute dessus, un objet y sort (traditionnellement un champignon).

J'ai réussi à m'occuper du blocmystère en faisant une ArrayList et en rajoutant une méthode permettant de supprimer l'ArrayList blocmystere pour qu'il laisse place à une ArrayList bloc (normal).

Or je n'arrive pas à faire en sorte que les objets (censé être caché dans les blocs) apparaissent lorsque Mario rentre en contact avec le blocmystère.

Autrement dit, je voudrais que les objets censé être cachés dans les blocs mystères soient désactivé de base (pour qu'on ne puisse pas les voir) mais que lorsque Mario rentre en contact avec un bloc mystère, alors l'objet apparait et se mette à bouger pour que Mario puisse le récupérer.

ps: pour ma part ce ne seront pas des objets types champignons mais des photos (cela se justifie pour mes études)

Pour l'instant, j'ai mis dans la classe photos, cette ligne:
public boolean photosactivated (photos photos, blocmystere blocmystere)
{if(Main.scene.mario.contactblocmystere(blocmystere)== true){return true;}else{return false;}}


Or je ne sais pas si cette méthode est correcte et surtout quelle méthode mettre dans la classe Scene pour répondre à mon objectif expliqué plus haut.

J'ai essayé ceci mais ca ne fonctionne pas
	for(int i = 0; i < this.tabblocmystere.size(); i++){
if(this.mario.proche(this.tabblocmystere.get(i))){
if(this.mario.contactblocmystere(this.tabblocmystere.get(i))){
this.photos.photosactivated(photos)(i);}}}


Si besoin voici mon arborescence:
package principal:
Main
Clavier
Scene
chrono
package objet
bloc (ArrayList)
blocmystere (ArrayList)
objet (super class)
package photos
photos (super class et aussi ArrayList)
photos1
photos2
package personnage
personnage (super class)
Mario

Pourriez-vous m'aider s'il vous plait ?
Merci d'avance.

1 réponse

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
20 juil. 2017 à 11:23
Salut,

Avant tout, je ne connais pas le tuto que tu as utilisé.

Le code suivant est hyper lourd
public boolean photosactivated (photos photos, blocmystere blocmystere)
{
  if(Main.scene.mario.contactblocmystere(blocmystere)== true){
    return true;
  }else{
    return false;}
}

Tu peux le remplacer par:
public boolean photosactivated (photos photos, blocmystere blocmystere)
{
  return Main.scene.mario.contactblocmystere(blocmystere);
}




je voudrais que les objets censé être cachés dans les blocs mystères soient désactivé de base

Tu dessines simplement l'objet avant le cube mystère comme ça il sera au dessus ...
Ensuite quand ton mario arrive au contact du cube mystère il suffit que tu animes l'objet en le faisant monter et se déplacer.


Je ne comprends pas la logique ici.
for(int i = 0; i < this.tabblocmystere.size(); i++){				
  if(this.mario.proche(this.tabblocmystere.get(i))){
    if(this.mario.contactblocmystere(this.tabblocmystere.get(i))){
      this.photos.photosactivated(photos)(i);
    }
  }
}

Si la méthode photosactivated appelée ici est bien celle qui retourne un boolean, l'appel ici est inutile.

Ne connaissant pas le reste du code, je ne peux pas t'en dire plus.


0
Rejoignez-nous