Projet Isn

Simulateur propagation de feu sur eduphyton

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour a tous, je suis en terminale option ISN et pour mon projet je bloque un peu car je suis vraiment moyen en programmation.. Alors pour l'instant j'ai créé une grille avec des cases aléatoires (soit vert pour un arbre soit noir pour vide/obstacle) et j'aimerais bien commencez la propagation du feu par un clique mais je n'arrive pas.. Une aide ? :) Merci d'avance (je n'arrive pas a joindre mon algo au message..)

Édité par augustinsimon

+1 -2
Staff

Bonjour,

Il nous faudrait un peu plus d'informations sur ton projet : quel est-il, en quel langage (Python je suppose et j'espère) et surtout où tu bloques ! Je suppose que c'est un algorithme de propagation d'un feu de forêt mais je n'en suis pas sûr.

"I think that it’s extraordinarily important that we in computer science keep fun in computing." – Alan J. Perlis

+1 -0

Il nous faudrait un peu plus d'informations sur ton projet : quel est-il, en quel langage (Python je suppose et j'espère) et surtout où tu bloques ! Je suppose que c'est un algorithme de propagation d'un feu de forêt mais je n'en suis pas sûr.

gustavi

Ce que Gustavi essaie de dire de manière gentille, c'est qu'on est pas là pour faire tes devoirs. Donc à toi de nous montrer ce que tu as déjà fait, où tu bloques (normalement tu as déjà un peu de code, pour l'inclure tu peux cliquer sur les chevron bleu de la barre d'outil de l'éditeur, entre les boutons titre et image) ; et ainsi on pourra te donner des pistes (mais pas de solution toute faite, car ça ne t'apprendra rien) :)

http://nodraak.fr/ – Dictateur bienveillant de l'iTeam, logiciel libre et sécurité à l'ECE Paris

+0 -0
Auteur du sujet

Oui Nodraak je le sais bien sinon j'aurai copier/coller sans gene un programme sur internet aha.. Sinon on code sur EduPython comme je l'ai indiqué. Je bloque vraiment sur la propagation du feu en elle meme, la generation d'une foret j'ai plus ou moins réussi mais par la suite je bloque completement..

 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
Voici mon programme pour l'instant:


from tkinter import *
from random import *
from colors import *

px=5
nb=eval(input("Largeur (en nombre de carrés) "))
def tracergrille():
    x1, y1, x2, y2 = 0, 0, px, px
    nbCarres = 0
    i = 0
    while i <= nb:
        couleur=["black","green"]
        choix=randint(0,1)
        can.create_rectangle(x1, y1, x2, y2, outline='black', fill=couleur[choix])
        x1 += px
        x2 += px
        nbCarres += 1
        if nbCarres == nb:
            y1 += px
            y2 += px
            x1, x2 = 0, px
            i += 1
            nbCarres = 0

fenetre = Tk()
can = Canvas(fenetre, width=nb*px, height=nb*px, bg='ivory')
can.pack(side=TOP, pady=10)
boutonDessinergrille = Button(fenetre, text='Dessiner la grille', command=tracergrille)
boutonDessinergrille.pack()
boutonQuitter = Button(fenetre, text='Quitter', command=fenetre.destroy)
boutonQuitter.pack()

fenetre.mainloop()

fenetre.destroy
+0 -0

Essaie quelque chose vers ca :

1
2
3
4
listeDeFeu = []
for c in listeDeFeu:
      if taCondition:
            listeDeFeu.append(caseAProximité)

Ton probleme, c'est que tu sauve pas tes cases enflammés.

Édité par ez613

+0 -0

Parfait, ça nous confirme/donne pas mal d'infos (python + tkinter pour commencer) !

Pour propager du feu, tu as besoin :

  • D'une case de départ. Tu voulais la choisir au clic : stackoverflow a l'air de savoir comment récupérer les coordonnées de la souris.
  • Faire bruler les cases voisines d'une case en feu. Pour ça il faut que tu aies quelque part la grille avec l'état de chaque case (brulée, pas brulée ?). Un tableau à deux dimensions devrait faire l'affaire. (mon voisin du dessus propose une autre solution : ne garder que la liste des cases qui brulent, fait ce qui te semble le plus simple)

Ensuite tu n'as plus qu'à faire une boucle, et pour chaque case, si une de ses voisines brule, alors elle va se mettre à bruler aussi. A ce moment tu vas vouloir mettre à jour tkinter, je ne sais pas comment faire, peut être recréer la fenêtre (google devrait t'aider).

PS : je pense que ligne 38 fenetre.destroy est une fonction que tu veux appeler, tu devrais rajouter des parenthèses.

http://nodraak.fr/ – Dictateur bienveillant de l'iTeam, logiciel libre et sécurité à l'ECE Paris

+0 -0
Auteur du sujet

Vous pensez que dans le debut de mon programme se serait mieux que je créé une liste de case avec chaque etat pour pouvoir continuer mon programme plus facilement ? (par exemple 0=arbre 1=en_feu etc..)

+0 -0

Yep, ça peut aider. Ensuite tu as plusieurs solutions disponibles. Pour mon projet j'ai opté pour une liste qui contient toutes les cases et à partir de là tu peux gérer la propagation en changeant la valeur de la case terrain[indice] et des cases environnantes (je vais te laisser les calculer).

Hey, moi c'est polio, et je te souhaite une bonne lecture :p !

+0 -0

Moi j'aurai proposé une liste de case enflammé, avec chaque point sous forme (x, y). Apres, tu tire aleatoirement, ou selon tes rêgle de "mise a feu" lesquels enflammer entre (x-1, y), (x-1, y-1)… Comme ca, pas besoin de faire une liste de toutes les cases.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte