Files
TermNSI/Projets/wator/README.md
2024-11-18 08:29:38 +01:00

194 lines
4.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TP : Simulation Wa-Tor - Proies et Prédateurs
## Introduction
Wa-Tor est une simulation de type proie-prédateur. Dans une mer torique, évoluent des thons (*les proies*) et des requins (*les prédateurs*). Ces deux espèces se déplacent, se reproduisent, et interagissent selon des règles spécifiques.
- Les requins doivent manger des thons pour survivre.
- Les thons vivent éternellement tant qu'ils ne sont pas dévorés.
---
## La Mer
La mer est modélisée par une **grille torique à deux dimensions**.
Chaque case de cette grille peut contenir :
- Rien (*case vide*),
- Un thon,
- Un requin.
Chaque case possède **quatre voisines** :
- Nord (N),
- Sud (S),
- Est (E),
- Ouest (O).
---
## Les Poissons
### Thons
- **Caractéristique** : *Temps de gestation*.
- **Initialisation** : à une valeur commune, appelée *durée de gestation des thons*.
### Requins
- **Caractéristiques** :
1. *Temps de gestation*.
2. *Énergie*.
- **Initialisation** :
- *Durée de gestation des requins*.
- *Énergie des requins*.
---
## Simulation et Comportements
### Étapes d'une Simulation
À chaque pas de simulation, une case est sélectionnée aléatoirement.
Deux scénarios possibles :
1. La case est vide : **Rien ne se passe**.
2. La case est occupée : **Le poisson applique son comportement**.
### Comportement des Thons
1. **Déplacement**
- Le thon choisit une case voisine libre au hasard.
- Si aucune case libre, il reste sur place.
2. **Reproduction**
- Son *temps de gestation* diminue de 1.
- Si ce temps atteint 0 :
- Le thon se reproduit sur la case qu'il quitte (s'il s'est déplacé).
- Son *temps de gestation* est réinitialisé.
---
### Comportement des Requins
1. **Énergie**
- Le requin perd 1 point d'énergie.
2. **Déplacement**
- Il cherche une case voisine contenant un thon pour le manger.
Si une telle case existe :
- Il s'y déplace et mange le thon.
- Son *énergie* est réinitialisée.
- Sinon, il choisit une case voisine vide.
- S'il n'y en a pas, il reste sur place.
3. **Mort**
- Si l'énergie du requin atteint 0, il meurt.
4. **Reproduction**
- Son *temps de gestation* diminue de 1.
- Si ce temps atteint 0 :
- Il se reproduit sur la case qu'il quitte (s'il s'est déplacé).
- Son *temps de gestation* est réinitialisé.
---
## Phénomènes Émergents
La simulation peut générer des **cycles proies-prédateurs** si les paramètres sont bien choisis.
### Paramètres Clés
- *Temps de gestation des thons*.
- *Énergie des requins*.
- *Durée de gestation des requins*.
Pour observer un cycle périodique, il faut respecter :
**temps gestation des thons < énergie des requins < durée gestation des requins**.
### Configuration Initiale
- **30%** des cases occupées par des thons.
- **10%** des cases occupées par des requins.
Valeurs suggérées :
- Temps gestation des thons : **2**.
- Énergie des requins : **3**.
- Durée gestation des requins : **5**.
---
## Travail à Réaliser
Lobjectif est de programmer une simulation Wa-Tor sur un nombre donné de pas.
### Étapes
1. **Concevoir les structures de données**.
2. **Décomposer le programme** en fonctions ou classes.
3. **Programmer et tester** progressivement.
### Questions Clés
- Quels défis vos élèves pourraient-ils rencontrer ?
- Quelles notions ce TP permet-il dévaluer ?
---
## Rendu Attendu
- **Lactivité complète en markdown**.
- **Corrigé** détaillé.
- **Notions abordées** dans l'activité.
Déposez votre travail sur **GitLab** avec votre enseignant ajouté comme **développeur**.
---
## Compléments
### Affichage des Résultats
Pour visualiser l'évolution de la mer, on peut afficher l'état de la grille tous les 100 pas, avec une petite pause entre chaque affichage :
```python
import time
time.sleep(0.1) # pause de 1/10e de seconde
```
**Analyse des Populations**
Ajoutez des variables globales pour suivre :
• Nombre de thons.
• Nombre de requins.
Enregistrez ces données à chaque pas sous forme de triplets :
(numéro du pas, nombre de thons, nombre de requins).
**Tracé des Courbes**
Utilisez pylab pour visualiser lévolution des populations :
```python
`import pylab`
`data_x = [pas1, pas2, ..., pasN]`
`data_y1 = [nb_thons1, nb_thons2, ..., nb_thonsN]`
`data_y2 = [nb_requins1, nb_requins2, ..., nb_requinsN]`
`pylab.plot(data_x, data_y1, label="Thons")`
`pylab.plot(data_x, data_y2, label="Requins")`
`pylab.title("Évolution des populations")`
`pylab.legend()`
`pylab.show()`
```