Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu 2048 : besoin d'aide !

    17 mai 2014 à 15:53:27

    Bonjour a tous, je suis actuellement débutant en Python et me suis lancé dans la programmation du célèbre jeu 2048. J'ai réussis sans problème a réaliser les déplacement vers la gauche, et vers la droite mais les deux autres déplacements ne fonctionnent pas.

    Je vais vous expliquer plus clairement mon problème avec un extrait du programme :

    grille=[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]
    #----nouvelle grille------#
    def nouvellegrille(grille):
        liste=[[],[],[],[]]
    
        for t in range (0,4):
            for i in range (0,4):
                liste[i].append(grille[t][i])
    
        grille=[[],[],[],[]]
        grille=liste
        
    
    #------suprime 0-------
    def sup0(grille):
        for i in range (0,4):       # enlève les 0 de la liste
            while 0 in grille[i]:
                grille[i].remove(0)
    
        
    
    #------fusion-----
    def fusion(grille):
        for y in range (0,4):    # verifie si deux valeurs côte à côte sont indentiques
            for x in range (0,len(grille[y])-1):
                if grille[y][x]  == grille[y][x+1]:
                    grille[y][x+1] = 2*grille[y][x]
                    grille[y][x]= 0
        
    
    def printGrid():
      for i in range (4):
        print(grille[i])
    
    
    nouvellegrille(grille)
    sup0(grille)
    fusion(grille)
    sup0(grille)
    fusion(grille)
    sup0(grille)
    
    for t in range (0,4): # reconstitue la liste avec un deplacement asigné ( ici droite )
          for w in range (0,4):
             while len(grille[t])< 4:
                 grille[t].insert(w,0)
    
        
    liste=grille
    grille=[[],[],[],[]]
    
    for t in range (0,4):
           for i in range (0,4):
                grille[i].append(liste[t][i])
    
    
    
        
    printGrid()        
            

    Dans cet exemple, la grille est remplie uniquement de 4, ce qui nous donne des 16 dans le bas de la grille après l'exécution du programme, ce qui est parfaitement normal.

    Mais le problème est qu'une partie du code ci dessus, qui gère la réécriture des chiffres dans la grille après le déplacement ne fonctionne pas si je la met sous forme de fonction comme ci dessous :

    def bas(grille):
        for t in range (0,4): # reconstitue la liste avec un deplacement asigné ( ici droite )
              for w in range (0,4):
                 while len(grille[t])< 4:
                     grille[t].insert(w,0)
    
        
        liste=grille
        grille=[[],[],[],[]]
    
        for t in range (0,4):
               for i in range (0,4):
                    grille[i].append(liste[t][i])
        return grille
    


    En effet, le code est strictement identique, a part qu'il est sous forme de fonction, et lorsque j'exécute le programme cela ne fais plus un déplacement vers le bas, mais vers la droite. Est ce que quelqu'un sait pourquoi cela se produit ?

    Merci de vos réponses !

    -
    Edité par PsYkOxx 17 mai 2014 à 15:56:40

    • Partager sur Facebook
    • Partager sur Twitter
      18 mai 2014 à 9:29:08

      Personne n'a d'idée ?
      • Partager sur Facebook
      • Partager sur Twitter
        19 mai 2014 à 11:38:56

        Quelle ligne utilise tu pour appeler ta fonction ?
        • Partager sur Facebook
        • Partager sur Twitter

        Jeu 2048 : besoin d'aide !

        × 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