Bonjour
Je me suis lancé depuis un certain temps dans la programmation python. Alors, mon message concerne une vulgaire ébauche de la simulation des feux de foret. L'objectif du programme que je vais vous montrer est de simuler la propagation du feu à partir d'un foyer et surtout l'état final de la foret après X générations. Je rencontre deux problèmes : list out of range, je sais ce que çela signifie mais je n'arrive pas à le fixer, et la représentation graphique de la matrice finale (par exemple les cellules ayant pour valeur 100 en noir et ceux pour la valeur 1, vert. En gros je souhaite un carré avec du vert et du noir) et pour l'instant pas besoin de mode intéractif.
Pour résumer, la fonction gener, génère une foret avec UN FOYER.
L'autre fonction vérifie si un arbre voisin est en feu, d'abord sur chaque bord de la matrice puis au milieu.
Je vous remercie d'avance pour votre aide et vos critiques qui me seront d'une grande utilité.
LA FAMEUSE EBAUCHE
Code:import matplotlib import matplotlib.pylab as plt from matplotlib import cm import numpy as np from random import * import copy def gener(dim,p,l,m): B=[[0 for j in range(dim)]for i in range(dim)] for i in range(1,dim-1): for j in range(1,dim-1): if random()<p: B[i][j]=1 B[l][m]=100 return B def foret(B0,X): k=-1 B=copy.deepcopy(B0) while k<X+1 : k=k+1 for i in range(len(B)): for j in range(len(B[0])): if B[0][1]+B[1][1]+B[1][0]>=100 : B[0][0]=100 elif B[0][len(B[0])-1]+B[1][1]+B[0][len(B[0])]+B[1][len(B[0])-1]>=100 : B[0][len(B[0])]=100 elif B[len(B)][len(B[0])-1]+B[len(B)-1][len(B[0])-1]+B[len(B)-1][len(B[0])]>=100 : B[len(B)][len(B[0])]=100 elif B[len(B)][1]+B[len(B)-1][1]+B[len(B)-1][0]>=100 : B[len(B)][1]=100 elif B[len(B)][j+1]+B[len(B)][j-1]+B[len(B)-1][j-1]+B[len(B)-1][j]+B[len(B)-1][j+1]>=100 : B[len(B)][j]=100 elif B[j-1][len(B[0])-1]+B[j-1][len(B[0])]+B[j+1][len(B[0])]+B[j][len(B[0])-1]+B[j+1][len(B[0])-1]>=100 : B[len(B)][j]=100 elif B[0][j+1]+B[0][j-1]+B[1][j-1]+B[1][j]+B[1][j+1]>=100 : B[0][j]=100 elif B[i][j+1]+B[i][j-1]+B[i+1][j-1]+B[i+1][j+1]+B[i-1][j+1]+B[i-1][j-1]+B[i-1][j]>=100 : B[i][j]=100 elif B[i][len(B[0])-1]+B[i-1][len(B[0])]+B[i-1][len(B[0])-1]+B[i+1][len(B[0])-1]+B[i+1][len(B[0])]>=100 : B[i][len(B[0])]=100 return B
-----