Probleme jeu de la vie

Lasyvegasy - 2 janv. 2017 à 16:15 - Dernière réponse : ikuro 2 Messages postés mercredi 1 mars 2017Date d'inscription 1 mars 2017 Dernière intervention
- 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()
Afficher la suite 

1 réponse

Répondre au sujet
ikuro 2 Messages postés mercredi 1 mars 2017Date d'inscription 1 mars 2017 Dernière intervention - 1 mars 2017 à 14:43
0
Utile
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 .
Commenter la réponse de ikuro

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.