Partage
  • Partager sur Facebook
  • Partager sur Twitter

Débutant, erreur sur un tuto vidéo ?

random ne randomise pas...

Sujet résolu
    1 mars 2013 à 19:30:34

    Salut ici,

    Je ne parviens pas à trouver les mots clefs pour une recherche pertinente, aussi je poste.

    Je débute, et je regardais une vidéo sur youtube : http://www.youtube.com/watch?v=2JxqakMPcZw

    Ensuite j'ai plus ou moins copié le code "pour voir", et un détail m'a fait tiqué. Sur la vidéo, et dans mon code, un même combat sort toujours un même résultat en boucle. Je pense donc que le random est ma placé, ou mal utilisé.

    J'utilise Linux et Python3, si ça compte.

    Pouvez-vous m'aiguiller ? Voici mon bout de code :

    def main():
        import random
        boboA = random.randint(1, 40)
        pjVie = 100
        pnjVie = 100
        
        print ("Quel sera votre nom, guerrier ?")
        pjNom = input("Nom : ")
        print ("L'arène est ouverte, " + pjNom +".")
        
        while True:
            print ("Vous avez " + str(pjVie) + " points de vie.")
            print ("Votre adversaire a " + str(pnjVie) + " points de vie.")
            tacCombat = input("(A)ttaquer, (O)bserver, (D)éfendre >")
            if tacCombat == "": #option vide pour tester rapidement en appuyant sur Entrée
                pjVie = pjVie - boboA
                pnjVie = pnjVie - boboA
            if pjVie < 1:
                print ("Vous êtes mort, " + pjNom +".")
            if pnjVie < 1:
                print("Victoire !")
                break
    main()
    


    Merci

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      1 mars 2013 à 19:45:40

      Salut, ta variable boboA va garder la même valeur (un nombre pseudo-aléatoire entre 1 et 40) tout au long de ton programme. Je suppose que tu voudrais que cette valeur d'attaque varie à chaque coup. Pour se faire, il suffit d'appeler randint à chaque fois que tu en as besoin. Donc tu vires boboA qui ne sert à rien, et tu le remplaces dans les lignes 16 et 17 par random.randint(1,40).

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        1 mars 2013 à 20:39:48

        Je trouve cela un peu bizarre niveau logique de faire une fonction main qui ne prend rien et ne renvient rien et qui contient tous le programme principale, tu peux l'enlever.

        Sinon oui comme dit plus haut, tu dois soit remplacer boboA ligne 16 et 17 par random.randint(1, 40) soit ecrire ton boboA = random.randint(1, 40) juste apres le while True:

        • Partager sur Facebook
        • Partager sur Twitter
          2 mars 2013 à 1:06:35

          Au passage : à moins de savoir exactement ce que tu fais, et de ne vraiment pas pouvoir faire autrement, n'importe jamais un module comme ça à l'intérieur d'une fonction. Si tu dois importer un module, fais-le au début de ton fichier une bonne fois pour toutes.

          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !
          Anonyme
            2 mars 2013 à 11:30:53

            soueuls a écrit:

            tu dois soit remplacer boboA ligne 16 et 17 par random.randint(1, 40) soit ecrire ton boboA = random.randint(1, 40) juste apres le while True:

            Dans le second cas, les dommages infligés seront les mêmes dans le sens pnj->pj et pj->pnj. Autrement dit, les deux vont mourir en même temps. Je ne pense pas que ce soit ce que veut faire Tchey.

            • Partager sur Facebook
            • Partager sur Twitter
              2 mars 2013 à 17:27:46

              J'avais tenté de déplacer le boboA un peu partout pour voir les différences, et en effet après le While jp et pnj perdent en même temps.

              Merci de vos réponses, chaque jour je suis un peu moins idiot (ou un peu plus ?) !

              • Partager sur Facebook
              • Partager sur Twitter

              Débutant, erreur sur un tuto vidéo ?

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown