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 ?
Quelle ligne utilise tu pour appeler ta fonction ?
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.