Compare commits

...
Sign in to create a new pull request.

5 commits

Author SHA1 Message Date
LordOf20th
af3b9f3022 Update README.md 2019-09-25 18:24:41 +02:00
LordOf20th
644c351de5 Édition de la classe Arbre() et respect des conventions 2019-02-07 00:04:38 +01:00
LordOf20th
c5491fb3a8
Update README.md 2019-02-05 23:41:41 +01:00
LordOf20th
51c63f8047
Update README.md 2019-02-05 23:40:55 +01:00
LordOf20th
72f1eaac8b
Delete genForet.py 2019-02-05 23:36:50 +01:00
3 changed files with 21 additions and 58 deletions

View file

@ -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

View file

@ -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"""
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"
if not self.brule:
self.brule = True

View file

@ -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