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

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : septembre 2021
    Messages : 7
    Points : 4
    Points
    4
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    9 386
    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 : 9 386
    Points : 25 831
    Points
    25 831
    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 «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  3. #3
    Membre confirmé
    Homme Profil pro
    occupé
    Inscrit en
    juin 2018
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : occupé

    Informations forums :
    Inscription : juin 2018
    Messages : 314
    Points : 450
    Points
    450
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    9 386
    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 : 9 386
    Points : 25 831
    Points
    25 831
    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 «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  5. #5
    Membre confirmé
    Homme Profil pro
    occupé
    Inscrit en
    juin 2018
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : occupé

    Informations forums :
    Inscription : juin 2018
    Messages : 314
    Points : 450
    Points
    450
    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
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    9 386
    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 : 9 386
    Points : 25 831
    Points
    25 831
    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 «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : septembre 2021
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci à tous pour vos réponse, après quelques recherches j'ai pu trouver le code nécessaire au bon fonctionnement de mes sons en lecture aléatoire grâce tout simplement à... Une playliste !! :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    playlist = ["assets/audio/soncrashlolo4.wav", "assets/audio/audiostarttest.wav",
                                "assets/audio/sondebutlolo.wav", "assets/audio/sonpointlolo6.wav",
                                "assets/audio/sondebutlolo1.wav"]
                    choix = random.choice(playlist)
                    pygame.mixer.music.load(choix)
                    pygame.mixer.music.play(0)
    Tout simple et comme le dit si bien sve@r à la porté de n'importe quel débutant ;p
    Quelle méchanceté les développeurs j'ai remarqué !!

    N'étant pas d'une filière informatique de base et comme la formation à commencer depuis peu, je n'était pas initié à toute les bases nécessaires à la compréhension de certains " outils ".
    Je sais que demander des lignes de code pour mieux appréhender une situation ne m'aide pas car cela fait que je ne trouve pas le résultat moi même, mais tout de même un forum est bien fait pour avoir des conseils !

    Merci encore en tout cas pour vos réponses elles m'ont tout de même aidée dans mes recherches

  8. #8
    Membre confirmé
    Homme Profil pro
    occupé
    Inscrit en
    juin 2018
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : occupé

    Informations forums :
    Inscription : juin 2018
    Messages : 314
    Points : 450
    Points
    450
    Par défaut
    Bonjour,
    ... Ton code ne correspond pas au besoin formulé dans le post 1:
    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"

  9. #9
    Candidat au Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : septembre 2021
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Hominidé Voir le message
    Bonjour,
    ... Ton code ne correspond pas au besoin formulé dans le post 1:
    Bonjour bonjour,

    effectivement ce n'est pas tout à fait pareil, disons que pour l'exemple j'ai fais simple et me serais débrouillé par la suite, mais après plusieurs jours de recherche en plus des réponses apportées ici, j'ai réussis à trouver cette simple manipulation grâce à la Doc

    je voulais faire comprendre que j'avais besoin d'une playlist de différents sons pour qu'ils soient joué aléatoirement à chaque passage d'obstacle

    Merci encore en tout cas !!

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    9 386
    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 : 9 386
    Points : 25 831
    Points
    25 831
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par pyrrha67 Voir le message
    Quelle méchanceté les développeurs j'ai remarqué !!
    Méchanceté? La méchanceté serait de te laisser te démerder. Ce n'est pas parce qu'on te dit des trucs désagréables à entendre qu'on est "méchant".
    https://positivr.fr/fable-oisillon-v...-est-personne/

    Citation Envoyé par pyrrha67 Voir le message
    Je sais que demander des lignes de code pour mieux appréhender une situation ne m'aide pas car cela fait que je ne trouve pas le résultat moi même, mais tout de même un forum est bien fait pour avoir des conseils !
    Effectivement. Il y a d'ailleurs une rubrique à ce propos que tu ne sembles pas avoir bien comprise dans les règles du forum. Accessoirement dans ces mêmes règles il y a une autre rubrique à propos des codes postés que là non plus tu ne sembles pas avoir non plus bien comprise (ce qui laisse présumer que tu ne comprends pas ou mieux, que tu ne lis même pas lesdites règles).
    Donc oui, conseils. Donc si on te "conseille" de lire un tuto, c'est bel et bien un "conseil" même si celui-ci n'est pas le conseil que tu attendais. Et (accessoirement) nous t'avons aussi fourni des lignes de code pour te permettre de mieux appréhender cette situation (parce qu'entre afficher de façon cyclique différentes lettres ou jouer de façon cyclique différents fichiers sons c'est exactement la même situation).

    Citation Envoyé par pyrrha67 Voir le message
    Je voulais faire comprendre que j'avais besoin d'une playlist de différents sons pour qu'ils soient joué aléatoirement à chaque passage d'obstacle
    Hé bien pourquoi n'as tu pas tout simplement dit ça au lieu de parler de "tour de rôle" ce qui n'a absolument rien à voir ??? Me semble que celui qui veut du vert a tout avantage à dire directement qu'il veut du vert au lieu de demander du jaune et chercher ensuite du bleu de son côté...
    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

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    septembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : septembre 2021
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour Sve@r, je ne parle pas d'une méchanceté directe, je parle plutôt d'un pic textuel lancé comme un venin histoire de rappeler au gens qui viennent se renseigner qu'ils n'y connaissent pas grand chose en développement, j'ai remarqué cela sur plusieurs forums alors il fallait que je le dise au moins une fois mort de rire

    j'ai vraiment envie d'apprendre à coder correctement, mais pour tout te dire, j'ai vraiment des cours pourris qui ne sont pas adaptés à mon niveau ( ça survole les explications de base et ça ne rentre pas assez dans le sujet, formation à distance 4000euros quand même... ), pour le html,css c'est Ok sûr, le Php moyen, le C# je suis dessus en ce moment via Unity et tout le reste est encore difficile pour moi...

    Je suis passé sur Unity pour m'initier je trouve que c'est plus sympa pour s’entraîner je comprends mieux le code mais j'ai toujours un problème avec le son

    J'aimerais ( comme tout le monde ) gagner de l'argent en réussissant un projet que j'ai en tête et je veux pas mettre 2 ans à le faire voila tout...

    En fait pour tout te dire, ça me rassure de savoir que je peux recevoir un peu d'aide quand je galère vraiment trop ça m'évite la démotivation,

    En tout cas merci car j'ai pu régler mon souci via Python et j'en suis déjà ravi !

+ 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