Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer un jeu

DM

Sujet résolu
    22 décembre 2016 à 18:18:04

    Bonjour a tous,

    je voudrais avoir de l'aide pour la création d'un jeu en langage Python

    J'ai commencé mais je bloque à la 3eme étape

    voici le sujet:

    Ecrire une fonction jouer() qui génère une liste T de 10 nombres aléatoires compris entre 0 et 9. Tant que la liste T n’est pas ordonnée dans l’ordre croissant, la fonction demande au joueur d’échanger deux éléments de la liste: pour cela le joueur doit entrer une chaine de caractères sous la forme "i-j", où i et j sont des indices de T, alors les valeurs de T[i] et T[j] sont échangées.
    A chaque échange, la fonction affiche la nouvelle liste. Dès que la liste Test bien ordonnée la fonction s’arrête et affiche "gagné".


    Voici ce que j'ai fait :

    from random import randint
    N=10
    T=[]
    def jouer(N):
        def liste_alea(N):
            for i in range (N):
                T.append(randint(0,9))
            return T
        def ordonnee(T):
            elementPrecedent=T[0]
            for element in T:
                if elementPrecedent<element:
                    print("La liste T est croissante")
                elif elementPrecedent>element:
                    print("La liste T n'est pas croissante, veuillez echanger 2 elements de la liste"

    -
    Edité par Anonyme! 23 décembre 2016 à 16:35:34

    • Partager sur Facebook
    • Partager sur Twitter
      23 décembre 2016 à 10:32:30

      Salut,

      Peux-tu mettre ton programme dans la balise code le bouton : </>  (avec l'indentation)

      Merci

      -
      Edité par SaltyYuki 23 décembre 2016 à 10:32:43

      • Partager sur Facebook
      • Partager sur Twitter
        23 décembre 2016 à 12:47:51

        Bonjour,

        Pour ma part je n'aurais pas fait comme ça notamment au niveau de la vérification de l'ordre croissant des valeurs de la table. Je te propose donc un algorithme qui, je l'espère, pourra t'aider :

        -Générer une table T, comme tu l'as très bien fait

        -Générer une table T2 reprenant les valeurs de T mais triées dans l'ordre croissant, avec par exemple un algorithme de tri comme celui-ci :

        def organiser(table):
            taille=len(table)
            
            for k in range(1,taille):
        
                suivant=table[k]
                precedant=k-1
            
                while precedant>=0 and table[precedant]>suivant:        
                    table[precedant+1]=table[precedant]
                    precedant=precedant-1
                    table[precedant+1]=suivant
            return table

        Ou tout simplement

        T2=sorted(T)

        -Utiliser un while tel que :

        while T!=T2:
            s=str(input("Manip : "))
            i,j=s.split("-")
            T[int(i)-1]=T[int(i)-1]+T[int(j)-1]
            T[int(j)-1]=T[int(i)-1]-T[int(j)-1]
            T[int(i)-1]=T[int(i)-1]-T[int(j)-1]
            print(T)
        print("Gagné !!!")

        Et le tour est joué ^^

        Reste, bien sur, quelques vérifications à effectuer tel que la validité de la manipulation saisie par l'utilisateur.

        Espérant avoir été utile :)

        -
        Edité par Leyme 27 décembre 2016 à 10:16:02

        • Partager sur Facebook
        • Partager sur Twitter
          23 décembre 2016 à 15:43:11

          Merci Leyme ^^

          Mais comment fait-on pour vérifier tout le programme ?

          Sinon voici ce que ça donne :

          from random import randint
          N=10
          T=[]
          def liste_alea(N):
                  for i in range (N):
                      T.append(randint(0,9))
                  return T
          def ordonnee(T2):
              taille=len(T2)
          
              for k in range(1,taille):
          
                  suivant=T2[k]
                  precedant=k-1
          
                  while precedant>=0 and T2[precedant]>suivant:
                      T2[precedant+1]=T2[precedant]
                      precedant=precedant-1
                      T2[precedant+1]=suivant
              return T2
          
          while T!=T2:
              s=str(input("Manip : "))
              i,j=s.split("-")
              T[int(i)-1]=T[int(i)-1]+T[int(j)-1]
              T[int(j)-1]=T[int(i)-1]-T[int(j)-1]
              T[int(i)-1]=T[int(i)-1]-T[int(j)-1]
              print(T)
          print("Gagné !!!")



          -
          Edité par Anonyme! 23 décembre 2016 à 16:31:43

          • Partager sur Facebook
          • Partager sur Twitter
            23 décembre 2016 à 17:12:09

            J'ai assemblé les différentes parties, fait 2/3 modifs' et ça donne ça :

            from random import randint
            N=10
            T=[]
            T2=[]
            
            def liste_alea(N):
                    for i in range (N):
                        ran=randint(0,9)
                        T.append(ran)
                        T2.append(ran)
                
            def ordonnee(T2):
                taille=len(T2)
             
                for k in range(1,taille):
             
                    suivant=T2[k]
                    precedant=k-1
             
                    while precedant>=0 and T2[precedant]>suivant:
                        T2[precedant+1]=T2[precedant]
                        precedant=precedant-1
                        T2[precedant+1]=suivant
                return T2
            
            def jouer():
                
                liste_alea(N)
                ordonnee(T2)
                print(T)
            
                
                while T!=T2:
                    s=str(input("Manip : "))
                    i,j=s.split("-")
                    T[int(i)-1]=T[int(i)-1]+T[int(j)-1]
                    T[int(j)-1]=T[int(i)-1]-T[int(j)-1]
                    T[int(i)-1]=T[int(i)-1]-T[int(j)-1]
                    print(T)
                print("Gagné !!!")
            
            jouer()
            

            Le programme est fonctionnel, il reste, comme je te le disais précédemment la vérification de la validité de la saisie à faire.

            • Partager sur Facebook
            • Partager sur Twitter
              24 décembre 2016 à 15:09:28

              Super merci encore !

              Mais lorsque je lance le programme je ne sais pas quoi écrire après le "manip":

              >>> jouer()
              [1, 4, 9, 9, 1, 3, 3, 5, 7, 2]
              Manip : 



              • Partager sur Facebook
              • Partager sur Twitter
                24 décembre 2016 à 15:27:27

                En fait ce que j'ai appelé 'Manip' c'est le coup que tu veux jouer. Je reconnais que c'était pas très explicite :D

                [3, 1, 0, 8, 5, 2, 1, 1, 6, 2]
                Manip : 1-3
                [0, 1, 3, 8, 5, 2, 1, 1, 6, 2]
                Manip : 3-7
                [0, 1, 1, 8, 5, 2, 3, 1, 6, 2]



                -
                Edité par Leyme 24 décembre 2016 à 15:30:35

                • Partager sur Facebook
                • Partager sur Twitter
                  26 décembre 2016 à 15:38:16

                  Merci beaucoup pour ton aide ^^
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Créer un jeu

                  × 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