Lasyvegasy
-
2 janv. 2017 à 16:15
ikuro
Messages postés2Date d'inscriptionmercredi 1 mars 2017StatutMembreDerniè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)