Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// partage de liens //// une carte des membres//// (apéros) codelab


#1 2017-10-23 14:51:44 problème d'arret de musique sur Processing

Kyokoju
nouveau membre
Date d'inscription: 2017-10-23
Messages: 2

problème d'arret de musique sur Processing



Bonjour,
je suis en train de coder un jeu de Pong sur Processing et je n'arrive pas a arrêter correctement la musique,
je m'explique: j'ai 4 écrans différents : un d'accueil, un de jeu, un de Game Over, et un de You Win;

avant le setup() j'ai:
import ddf.minim.*;
Minim minim;
AudioPlayer Musique_gagnante;
AudioPlayer Musique_game_over;

dans le setup() j'ai:
minim = new Minim(this);
  Musique_gagnante = minim.loadFile("feel the swag.mp3");
  Musique_game_over = minim.loadFile("YOU ARE A LOSER.mp3");

dans le draw() j'ai:
void ecran_game_over() {
  effacer_ecran_game_over();
  afficher_perdu();
  bouton_rejouer_apres_un_game_over();
  mettre_la_musique_game_over();
  souris_sur_bouton_rejouer_apres_un_game_over_donc_affichage_accueil();
}
void effacer_ecran_game_over() {
  background(img2);
}
void afficher_perdu() {
  fill(#5D0707);
  textSize(100);
  text("game over", width/8-20, (height/8)*7.5);
}
void mettre_la_musique_game_over () {
  Musique_game_over.play();
}
void bouton_rejouer_apres_un_game_over() {
  fill(#5D0707);
  rect(x_bouton_rejouer_apres_un_game_over, y_bouton_rejouer_apres_un_game_over, longueur_bouton, largeur_bouton, 15);
  fill(0);
  textSize(20);
  text("Rejouer", x_bouton_rejouer_apres_un_game_over-35, y_bouton_rejouer_apres_un_game_over+8 );
  rectMode(CENTER);
}
void souris_sur_bouton_rejouer_apres_un_game_over_donc_affichage_accueil() {
  if (mouseX>x_bouton_rejouer_apres_un_game_over-longueur_bouton/2 && mouseX<x_bouton_rejouer_apres_un_game_over+longueur_bouton/2) {
    if (mouseY>y_bouton_rejouer_apres_un_game_over-largeur_bouton/2 && mouseY<y_bouton_rejouer_apres_un_game_over+largeur_bouton/2) {
      if (mousePressed == true) {
        stop();
        nombre_de_rebonds_sur_palet=0;
        nombre_de_rebonds_gagnants=0;
        rebond_game_over=0;
        x_balle=320;
        y_balle=180;
        affichage=0;
      }
    }
  }
}
void stop() {
  Musique_gagnante.close();
  Musique_game_over.close();
  minim.stop();
}

quand on lance le programme l'écran d'accueil s'affiche avec un bouton ''jouer'', si on clique dessus l'écran de jeu s'affiche la balle rebondie,rebondie et si elle touche le bord gauche de la fenêtre, on a perdu:
->Si on perd , l'écran de Game Over s'affiche et la musique_game_over démarre puis si on appuie sur le bouton rejouer, la musique s’arrête et on revient a l'écran d'accueil
->Si on gagne , l'écran de You Win s'affiche et la musique_gagnante démarre puis si on appuie sur le bouton rejouer, la musique s’arrête et on revient a l'écran d'accueil (jusque là tout va bien)

Mais si on re-appuie sur le bouton ''jouer'' et qu'on perd ou qu'on gagne, l'écran de Game Over ou de You Win (selon si on a perdu ou gagné) s'affiche MAIS la musique ne démarre pas que ce soit le même écran(perdu ou gagné) que la première partie ou pas... une idée de ce qui ne va pas?


Merci d'avance
Kyokoju

PS: il faut que je finisse mon jeu pour le 05/11/17 au plus tard donc si vous tombé sur ce message après cette date pas la peine de me répondre:)

Hors ligne

 

#2 2017-10-24 09:50:15 Re : problème d'arret de musique sur Processing

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 790

Re: problème d'arret de musique sur Processing



Bonjour,

C'est tout à fait normal, car lorsque que tu appelles la méthode stop(), elle détruit les objets que tu as initialisés.

Je te propose une nouvelle méthode stop() :

void stop() {
  Musique_gagnante.pause();
  Musique_gagnante.rewind();
  Musique_game_over.pause();
  Musique_game_over.rewind();
}

Dis-nous si cela fonctionne.

Je te renvoie à la documentation pour que tu aies une idée des méthodes disponibles pour Minim :
http://code.compartmental.net/minim/

Tu aurais pu aussi utiliser la librairie Sound intégrer à Processing.

Dernière modification par Mushussu (2017-10-24 09:52:14)

Hors ligne

 

#3 2017-10-24 17:42:21 Re : problème d'arret de musique sur Processing

Kyokoju
nouveau membre
Date d'inscription: 2017-10-23
Messages: 2

Re: problème d'arret de musique sur Processing



Re-bonjour
merci d'avoir essayer de m'aider :)mais j'ai essayé votre méthode et elle n'a pas fonctionnée, la musique redémarre au début quand je clique sur le bouton ''rejouer'' et continue jusqu'à la fin de l'extrait de musique...
mais ce n'est pas grave entre temps j'ai trouvé une autre solution:) sans modifier le stop() :
dans la boucle qui gère mes affichages j'ai redéfini les musiques à chaque boucle, ça donne ça:

if (affichage==0) {
    ecran_accueil();      //si on clique sur le bouton affichage=affichage+1
  } else if (affichage==1) {
    ecran_de_jeu();         //si on gagne ; affichage=affichage+1   si on perd; affichage=affichage+3
  } else if (affichage==2) {
   Musique_gagnante = minim.loadFile("feel the swag.mp3");      //la musique est redéfinie
    affichage=affichage+1;
  }
    else if (affichage==3){
    ecran_score();
   Musique_gagnante.play();
  }
  else if (affichage==4) {
    Musique_game_over = minim.loadFile("YOU ARE A LOSER.mp3");      //la musique est redéfinie
    affichage=affichage+1;
  }
  else if (affichage==5){
    ecran_game_over();
    Musique_game_over.play();
  }

comme ça la musique est redéfinie a chaque boucle puis re-détruite etc etc...
et ça marche!!!! la musique se déclenche bien à chaque fois que l'on arrive sur l'écran de Game over ou de You win .

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2018