1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| import random
import numpy
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import matplotlib.colors as color
Taille = 100
ProportionArbre = 0.70
Clairiere = int(0)
Flamme = int(1)
Cendre = int(2)
Arbre = int(3)
random.seed(5)
def ArbreAuHasard ():
if random.random() < ProportionArbre:
return Arbre
else:
return Clairiere
def InitialiserForetAuHasard( taille , probabiliteArbre):
foret=numpy.zeros(shape=(taille,taille),dtype=int)
for i in range(taille):
for j in range(taille):
foret[i,j]=ArbreAuHasard()
return(foret)
def Propagation( foret ):
foret2=numpy.zeros((Taille+2,Taille+2),dtype=int)
for i in range(1,Taille+1):
for j in range(1,Taille+1):
foret2[i,j]=foret[i-1,j-1]
for i in range(1,Taille+1):
for j in range(1,Taille+1):
if foret2[i,j]==Flamme:
foret2[i,j]=Cendre
for i in range(1,Taille+1):
for j in range(1,Taille+1):
if foret2[i,j]==Cendre and foret2[i,j-1]==Arbre:
foret2[i,j-1]=Flamme
elif foret2[i,j]==Cendre and foret2[i,j+1]==Arbre:
foret2[i,j+1]=Flamme
elif foret2[i,j]==Cendre and foret2[i+1,j]==Arbre:
foret2[i+1,j]=Flamme
elif foret2[i,j]==Cendre and foret2[i-1,j]==Arbre:
foret2[i-1,j]=Flamme
for i in range(1,Taille+1):
for j in range(1,Taille+1):
foret[i-1,j-1]=foret2[i,j]
return(foret)
def code(taille,p):
foret=InitialiserForetAuHasard( taille , p)
print(foret)
foret[int(Taille/2) , int(Taille/2)] = Flamme
fig = plt.figure()
im = []
listeCouleurs = [[0,0,0]] * 4
listeCouleurs[Clairiere] = [1,1,1] # Les clairières sont representées en blanc
listeCouleurs[Flamme] = [1,0,0] # Les Flammes sont en rouge
listeCouleurs[Arbre] = [0,1,0] # Les arbres sont de couleur verte
listeCouleurs[Cendre] = [0.5,0.5,0.5] # Les cendres sont grises
couleurs = color.ListedColormap(listeCouleurs)
for n in range(2*Taille):
im.append([plt.imshow(foret,interpolation='none',cmap=couleurs)])
foret = Propagation(foret)
ani = animation.ArtistAnimation(fig,im,interval=50,blit=True,repeat_delay=100)
#plt.show()
return(ani) |