Probleme jeu de la vie

Lasyvegasy - 2 janv. 2017 à 16:15
ikuro Messages postés 2 Date d'inscription mercredi 1 mars 2017 Statut Membre Dernière intervention 1 mars 2017 - 1 mars 2017 à 14:43
Bonjour, j'ai un probleme avec mon programme mais je ne sais pas d'ou cela peut provenir du coup j'arrive pas à le corriger. Mon programme reussi seulement a affiché les deux premiers états des cellules et ce bloquent par la suite.. Cela doit probablement provenir de la fonction iteration(plateau,n). Pourriez vous m'aider svp? Merci.

import copy

def plateau(n):
plateau=[]
ligne=0
for i in range(0,n):
lst=[]
for y in range(0,n):
lst.append(False)
plateau.append(lst)
return plateau


def affichage_texte(plateau):
affichage=""
temp=copy.deepcopy(plateau)
for i in range(len(temp)):
case=temp[i]
for y in range(len(case)):
booleen=case[y]
if booleen==False:
case[y]='X'
else:
case[y]='o'
for w in temp :
for x in w:
affichage+= x
affichage+= " "
affichage+= "\n"
print(affichage)


def coordonnées_cellulev(plateau):
cellulev=[]
n=int(input('Combien de cellule vivante, voulez-vous initialiser? '))
if n>0 and n<=len(plateau)**2:
print('x et y doivent etre compris entre 0 et',len(plateau)-1)
for i in range(n):
x_coord=int(input('abscisse de la celulle vivante: '))
y_coord=int(input('ordonnée de la celulle vivante: '))
while x_coord>len(plateau)-1 or x_coord<0 or y_coord>len(plateau)-1 or y_coord<0 :
print('Les coordonnées sont pas sur le plateau ! x et y doivent etre compris entre 0 et',len(plateau)-1)
x_coord=int(input('abscisse de la celulle vivante: '))
y_coord=int(input('ordonnée de la celulle vivante: '))
coord=(x_coord,y_coord)
cellulev.append(coord)
return cellulev
else:
print('pas de cellule vivante initialisée')
print()
return False



def placement_cellulev(coordonnées_cellulesv,plateau):
for i in coordonnées_cellulesv:
x=i[0]
y=i[1]
plateau[x][y]=True


def voisin(plateau):
voisintotal=[]
for i in range(len(plateau)):
ligne=plateau[i]
for y in range(len(ligne)):
voisin=[]
ligne=plateau[i]
if i==0:
if y==0:
voisin.append(ligne[y+1])
ligne=plateau[i+1]
voisin.append(ligne[y])
voisin.append(ligne[y+1])
elif 0<y<len(ligne)-1:
voisin.append(ligne[y-1])
voisin.append(ligne[y+1])
ligne=plateau[i+1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
voisin.append(ligne[y+1])
else:
voisin.append(ligne[y-1])
ligne=plateau[i+1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
voisintotal.append(voisin)
if 0<i<len(plateau)-1:
if y==0:
ligne=plateau[i-1]
voisin.append(ligne[y])
voisin.append(ligne[y+1])
ligne=plateau[i]
voisin.append(ligne[y+1])
ligne=plateau[i+1]
voisin.append(ligne[y])
voisin.append(ligne[y+1])
elif 0<y<len(ligne)-1:
ligne=plateau[i-1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
voisin.append(ligne[y+1])
ligne=plateau[i]
voisin.append(ligne[y-1])
voisin.append(ligne[y+1])
ligne=plateau[i+1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
voisin.append(ligne[y+1])
else:
ligne=plateau[i-1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
ligne=plateau[i]
voisin.append(ligne[y-1])
ligne=plateau[i+1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
voisintotal.append(voisin)
elif i==len(plateau)-1:
if y==0:
ligne=plateau[i-1]
voisin.append(ligne[y])
voisin.append(ligne[y+1])
ligne=plateau[i]
voisin.append(ligne[y+1])
elif 0<y<len(ligne)-1:
ligne=plateau[i-1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
voisin.append(ligne[y+1])
ligne=plateau[i]
voisin.append(ligne[y-1])
voisin.append(ligne[y+1])
else:
ligne=plateau[i-1]
voisin.append(ligne[y-1])
voisin.append(ligne[y])
ligne=plateau[i]
voisin.append(ligne[y-1])
voisintotal.append(voisin)
return voisintotal


def iterations(plateau,n):
x=0
for k in range(n):
voisi=voisin(plateau)
if k==0:
affichage_texte(plateau)
else:
for i in plateau:
for y in range(len(i)):
if x<=len(voisi)-1:
voisinage=voisi[x]
x+=1
compteur=0
for z in range(len(voisinage)):
if voisinage[z]==True:
compteur+=1
if compteur<2 and i[y]==True:
i[y]=False
elif compteur==3 and i[y]==False:
i[y]=True
elif compteur>3 and i[y]==True:
i[y]=False

affichage_texte(plateau)





def jeu():
plat=plateau(3)
coordonnées_cellulesv=coordonnées_cellulev(plat)
if coordonnées_cellulesv!=False:
placement_cellulev(coordonnées_cellulesv,plat)
n=int(input('Saisir le nombre d’itérations: '))
print()
iterations(plat,n)

jeu()

1 réponse

ikuro Messages postés 2 Date d'inscription mercredi 1 mars 2017 Statut Membre Dernière intervention 1 mars 2017
1 mars 2017 à 14:43
Bonjour,
est ce que tu pourrais nous dire ce que tu souhaitais faire à la base,
une sorte d'algorithme, pour qu'on puisse te guider .
0
Rejoignez-nous