Skip to content
Snippets Groups Projects
Commit f81f6580 authored by Boujerfaoui Yassine's avatar Boujerfaoui Yassine
Browse files

Finalisation de la fonction simulate

parents 52d40b53 20640272
No related branches found
No related tags found
No related merge requests found
......@@ -11,32 +11,35 @@ def simulate(size, type_seed, iterations):
#Création de l'univers et ajout de la graine
universe = generate_universe(size)
seed = create_seed(type_seed)
print(seed)
#Placement aléatoire de la graine
x_start = rd.randint(0,size[0]-len(seed))
y_start = rd.randint(0,size[1]-len(seed[0]))
universe = add_seed_to_universe(seed,universe,x_start,y_start)
print(universe)
fig = plt.figure()
ax = plt.axes(xlim=(-1,size[1]+1),ylim=(-1,size[0]+1))
plt.gca().invert_yaxis()
line,=ax.plot([],[],lw=2)
def init() :
line.save_data([],[])
return line
list_universe=[universe]
for n in range (iterations):
list_universe.append(generation(list_universe[-1]))
try:
x_start = rd.randint(0,size[0]-len(seed))
y_start = rd.randint(0,size[1]-len(seed[0]))
except:
print("la graine est trop grande pour l'univers")
plt.imshow(universe)
fig=plt.figure()
im=plt.imshow(universe,cmap="Greys",animated=True)
def animate(i):
universe = list_universe[i]
for y in range(size[0]):
for x in range (size[1]):
if universe[y][x] == 1:
plt.fill([x, x+1, x+1, x],[y, y, y-1, y-1], "k")
line.set_data(x,y)
return line,
ani = animation.FuncAnimation(fig, animate, init_func=init, frames=iterations, blit=True, interval=20, repeat=False)
universe=im.get_array()
im.set_array(generation(universe))
return im,
anim = animation.FuncAnimation(fig, animate, interval=500, frames=iterations,blit=True)
plt.show()
simulate((6,6),"beacon",20)
simulate((6,6), "beacon", 10)
def main():
x = int(input("Entrer la largeur de l'univers"))
y = int(input("Entrer la hauteur de l'univers"))
type_seed = input("Entrer le type de graine")
iterations = int(input("Entrer le nombre d'itérations désiré"))
simulate((x,y),type_seed, iterations)
if __name__ == "__main__":
main()
......@@ -46,10 +46,11 @@ seeds = {
def create_seed(type_seed):
"Renvoie une graine du type indiqué"
if type_seed in seeds:
return seeds[type_seed]
else:
print("graine inconnue")
try:
seed = seeds[type_seed]
except:
print("Ce type de graine est inconnu")
return seed
def add_seed_to_universe(seed, universe, x_start, y_start):
......@@ -57,9 +58,12 @@ def add_seed_to_universe(seed, universe, x_start, y_start):
size_seed = (len(seed),len(seed[0]))
if size_seed[0]>len(universe) or size_seed[1]>len(universe[0]):
print("la graine est trop grande")
for x in range (size_seed[0]):
for y in range (size_seed[1]):
universe[x_start + x][y_start + y] = seed[x][y]
try:
for x in range (size_seed[0]):
for y in range (size_seed[1]):
universe[x_start + x][y_start + y] = seed[x][y]
except:
print("la graine est trop grande")
return universe
......
......@@ -4,14 +4,13 @@ import numpy as np
def generation(univers):
"Applique les règles du jeu de la vie à chaque cellule et renvoie l'univers à la génération n+1"
size = len(univers),len(univers[0])
new_univers = np.zeros(size)
new_universe = np.zeros(size)
for x in range (size[0]):
for y in range (size[1]):
if univers[x][y]==1:
new_univers[x][y] = survival(univers, (x,y))
new_universe[x][y] = survival(univers, (x,y))
else:
new_univers[x][y] = naissance(univers, (x,y))
return new_univers
new_universe[x][y] = naissance(univers, (x,y))
return new_universe
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment