Compare commits
5 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af3b9f3022 | ||
|
|
644c351de5 | ||
|
|
c5491fb3a8 | ||
|
|
51c63f8047 | ||
|
|
72f1eaac8b |
3 changed files with 21 additions and 58 deletions
15
README.md
15
README.md
|
|
@ -1,18 +1,5 @@
|
|||
## Wildfire
|
||||
**EN** : Scripts for my class project a wildfire simulation in the "Conway's Game of Life" style to study wildfire propagation.
|
||||
|
||||
**FR** : Des scripts pour mon projet informatique de prépa BCPST dont le but est de simuler et d'étudier la propagation des feux de forêts à l'aide d'automates cellulaires, en s'inspirant du "Conway's Game of Life"
|
||||
## Wildfire - Approche Orientée Objet
|
||||
|
||||
***classes.py*** :
|
||||
|
||||
Essaie de définition du programme à partir de Classes Python dans le but de simplifier le code, ou du moins son écriture.
|
||||
|
||||
***genForet.py***
|
||||
- **genForet(n, p)** :
|
||||
La fonction génère une matrice carrée de taille n\*n avec des 0 et des 1, p représentant la probabilité qu'il y ait un 1 dans une case de la matrice (p=0.25 par défaut)
|
||||
|
||||
- **affichage(foret)** :
|
||||
La fonction prend en entrée une matrice et génère une forêt selon les règles suivantes : si la case contient un 1 alors il y a un arbre, rien sinon
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
29
classes.py
29
classes.py
|
|
@ -9,12 +9,23 @@ class Arbre:
|
|||
""" Classe définissant un arbre, caractérisé par :
|
||||
- Son état : Sain ou En feu (par défaut à sa création l'arbre est considéré Sain)
|
||||
- Sa position en x et y """
|
||||
def __init__(self, x, y):
|
||||
self.x=x
|
||||
self.y=y
|
||||
self.brule=False
|
||||
def enflammer(self):
|
||||
""" Méthode pour enflammer l'arbre"""
|
||||
|
||||
if not self.brule:
|
||||
self.brule = True
|
||||
def __init__(self):
|
||||
self._etat=0
|
||||
def _get_etat(self):
|
||||
""" Méthode pour lire l'état de l'arbre"""
|
||||
return self._etat
|
||||
def _set_etat(self, nouvel_etat):
|
||||
""" Mutateur de l'attribut état """
|
||||
if nouvel_etat == 0 or nouvel_etat == 1 or nouvel_etat == -1:
|
||||
self._etat=nouvel_etat
|
||||
else:
|
||||
raise ValueError("Valeur d'état invalide, seules 0, 1 et -1 sont valides")
|
||||
etat=property(_get_etat, _set_etat)
|
||||
def __repr__(self):
|
||||
if self._etat == 0 :
|
||||
return "Sain"
|
||||
elif self._etat == 1:
|
||||
return "En feu"
|
||||
elif self._etat == -1:
|
||||
return "Mort"
|
||||
|
||||
35
genForet.py
35
genForet.py
|
|
@ -1,35 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Fri Feb 1 11:30:02 2019
|
||||
|
||||
@author: LordOf20th
|
||||
"""
|
||||
import numpy as np
|
||||
import random
|
||||
import tkinter as tk
|
||||
|
||||
def genForet(n,p=0.25):
|
||||
foret=np.full(shape=(n,n), fill_value=0)
|
||||
for i in range(0,foret.shape[0]):
|
||||
for j in range(0,foret.shape[1]):
|
||||
if random.random() <= p:
|
||||
foret[i,j]=1
|
||||
return foret
|
||||
|
||||
def affichage(foret):
|
||||
|
||||
fenetre = tk.Tk() #Crée la fenêtre que l'on va modifier
|
||||
|
||||
label = tk.Label(fenetre, text="Wildfire") #Met en place le titre
|
||||
label.pack()
|
||||
|
||||
canvas = tk.Canvas(fenetre, width=(foret.shape[0]+2)*10, height=(foret.shape[1]+2)*10,background='red') #On définit le canevas qui affiche notre forêt
|
||||
canvas.create_rectangle(10,10,(foret.shape[0]+1)*10,(foret.shape[1]+1)*10,fill='#c68c53')
|
||||
for i in range(0,foret.shape[0]):
|
||||
for j in range(0,foret.shape[1]):
|
||||
if foret[i,j]== 1:
|
||||
canvas.create_rectangle((i+1)*10,(j+1)*10,(i+2)*10,(j+2)*10,fill='green',width=0)
|
||||
canvas.pack()
|
||||
bouton = tk.Button(fenetre, text="Quitter", command=fenetre.quit)
|
||||
bouton.pack()
|
||||
fenetre.mainloop() #affiche la fenêtre
|
||||
Loading…
Add table
Reference in a new issue