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

Python Discussion :

Syntaxe pour que des sons se lisent à tour de rôle


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Septembre 2021
    Messages : 7
    Par défaut Syntaxe pour que des sons se lisent à tour de rôle
    Bien le bonjour,

    depuis peu en formation sur studi pour devenir développeur android fullstack, je m'intéresse au python et est en train de reprendre un code appli du jeu flappy bird pour m'entrainer à développer

    j'aimerais pouvoir présenter cette appli dans mon évaluation pour mon projet formation, cependant j'ai un problème sur l'intégration d'une suite de son lors du passage de mes obstacles :

    ps : actuellement j'ai déjà réussis à mettre en place mon système de playlist avec un système random comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            playerMidPos = playerx + IMAGES['player'][0].get_width() / 2
            for pipe in upperPipes:
                pipeMidPos = pipe['x'] + IMAGES['pipe'][0].get_width() / 2
                if pipeMidPos <= playerMidPos < pipeMidPos + 4:
                    score += 1
                    playlist = ["assets/audio/sonbip.wav", "assets/audio/sonbipbip.wav"]
                    choix = random.choice(playlist)
                    continuer = 0
                    pygame.mixer.music.load(choix)
                    pygame.mixer.music.play(0)
    j'ai tenté plusieurs manipulations pour que les sons se lisent de façon à ce que lors du passage du premier obstacle, ça joue le son "bip" et à l'obstacle suivant le "bipbip"
    sauf que dès que je retire le random.choice, il me lit un autre son qui provient du lancement du jeu.
    Je n'ai trouver aucun palliatif à cette commande random ce qui me bloque pour la suite...

    Dans mes cours je n'ai malheureusement pas eu d'explications à ce sujet alors j'espère trouver réconfort ici

    Merci à vous d'avance pour vos réponses, Antony

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par pyrrha67 Voir le message
    j'ai tenté plusieurs manipulations pour que les sons se lisent de façon à ce que lors du passage du premier obstacle, ça joue le son "bip" et à l'obstacle suivant le "bipbip"
    sauf que dès que je retire le random.choice, il me lit un autre son qui provient du lancement du jeu.
    Je n'ai trouver aucun palliatif à cette commande random ce qui me bloque pour la suite...
    La programmation ce n'est pas "je mets des trucs au hasard en espérant que ça tombera dans le bon ordre". C'est "je découpe une solution en instructions élémentaires puis je remplace ces instructions par leur équivalent Python.

    Déjà est-ce que tu sais ce que fait random.choice() ? Il choisit un élément au hasard dans la liste qu'on lui donne (ici deux fichiers sons). Si tu l'enlèves alors plus de choix (et là je ne sais pas où ton code va récupérer cet "autre son"...) mais si tu le laisses, alors pas de séquentiel. C'est à chaque tour du for pipe un son pris au hasard.

    Si maintenant tu veux un son puis l'autre, alors il faut trouver l'algo qui au premier tour de boucle prend le premier fichier, puis au second tour de boucle prend le second fichier, puis au 3° tour de boucle le 1er fichier (ce qui veut dire que quelque part un compteur est revenu au début) etc.

    Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    liste=("a", "b", "c", "d", "e")
     
    fic=0
    for pipe in range(12):
    	print(pipe, liste[fic])
    	fic+=1
    	if fic == len(liste): fic=0
    # for

    Résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    0 a
    1 b
    2 c
    3 d
    4 e
    5 a
    6 b
    7 c
    8 d
    9 e
    10 a
    11 b
    Voilà, algo de départ à la portée de n'importe quel débutant qui a pris le temps d'apprendre à débuter. Ensuite, quand on connait Python, on a alors accès à certains outils qui peuvent raccourcir ou combiner certaines instructions. Exemple
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    liste=("a", "b", "c", "d", "e")
     
    for (fic, pipe) in enumerate(range(12)):
    	print(pipe, liste[fic%len(liste)])
    ...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 925
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    Dans ce type de cas, j'aime bien utiliser la méthode cycle() du module itertools:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> import itertools
    >>> it = itertools.cycle(("/chemin_image1", "/chemin_image2"))
    >>> print(next(it))
    /chemin_image1
    >>> print(next(it))
    /chemin_image2
    >>> print(next(it))
    /chemin_image1
    >>>

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Dans ce type de cas, j'aime bien utiliser la méthode cycle() du module itertools:
    Joli, je ne la connaissais pas

    C'est un petit peu le souci de Python. Il y a tellement de modules qui font tous papa+maman dans tous les sens que c'est difficile de s'y retrouver. Ok je l'admets, itertools est quand-même un fondamental et je devrais m'y mettre.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 925
    Billets dans le blog
    8
    Par défaut
    Faudrait aussi voir du coté de pygame.mixer (puisque utilisé) qui permet de faire beaucoup de chose...
    https://www.pygame.org/docs/ref/music.html

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par roboxo Voir le message
    itertools c'est un cycle
    Non, c'est un module !!!

    Citation Envoyé par roboxo Voir le message
    en tous cas le titre ''lire un son a tour de rôle " ne correspond clairement pas a ton code
    Ben oui, c'est pour ça qu'il est venu ici demander comment créer un code qui traite différents items (ie des fichiers sons) à tour de rôle...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 7] Besoin d'aide pour ma syntaxe
    Par Stroow dans le forum Langage
    Réponses: 4
    Dernier message: 31/08/2017, 14h22
  2. [MySQL] Besoin d'aide pour corriger ma syntaxe
    Par pierrot10 dans le forum Général Python
    Réponses: 1
    Dernier message: 15/01/2017, 13h58
  3. [XL-2007] Besoin d'aide pour la syntaxe d'une formule
    Par Joseph67 dans le forum Excel
    Réponses: 3
    Dernier message: 26/07/2009, 21h01
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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