Skip to content
Snippets Groups Projects
Commit 85584362 authored by Thomas Clavier's avatar Thomas Clavier
Browse files

First commit

parents
No related branches found
No related tags found
No related merge requests found
.idea/
*~
target/
# Requins et poissons
## L'océan
La simulation de notre océan est basée sur des pas de temps discrets i.e des tours. Elle fonctionne sur une grille rectangulaire. Pour représenter le monde, nous utiliserons un tore, c'est-à-dire que les côtés opposés de la grille sont connectés. Si un individu sort d'un côté du domaine de la simulation, il y rentre immédiatement du côté opposé. Les poissons et les requins se déplacent à chaque tour et interagissent selon l'ensemble des règles suivantes :
* À chaque tour les requins mangent tous les poissons dans les cases adjacentes, s'il n'y a pas de poisson à manger ils bougent, ils ne peuvent pas à la fois manger et bouger
* À chaque tour les poissons bougent de façon aléatoire
* Les poissons et les requins peuvent bouger d'une case dans une seule direction (Nord, Sud, Est, Ouest)
* Les poissons ont un compteur de gestation (5 tours). Si ce compteur arrive à échéance, et si l'une des cases adjacentes est disponible 1 poisson donne naissance à 1 nouveau poisson dans une des cases libres adjacentes, son compteur de gestation est alors réinitialisé.
* Si un poisson n'a pas pu donner naissance à un nouveau poisson par manque de place, au tour suivant il peut encore donner naissance à un bébé.
* Tous les 15 poissons mangés, les requins donnent naissance à un bébé requin.
* Si un requin n'a rien mangé pendant 10 tours, il meurt.
* Il ne peut y avoir qu'un seul individu sur une case
* Si un individu est bloqué il ne se déplace pas
2 représentations possible en mode texte :
* `-` pour un poisson
* `@` pour un requin
ou en emoji :
* 🐟 : pour un poisson
* 🦈 : pour un requin
## Étape 1
Développer ce simulateur en binôme et en TDD ping pong :
* *Test* :
* Lancer le chronomètre
* Écrire un test
* Vérifier qu'il est rouge
* Commiter avec en message l'intention de code
* push
* Arrêter le chronomètre
* *Implémentation* :
* Lancer le chronomètre
* pull du projet
* Faire passer le test au vert
* Commit + push
* Arrêter le chronomètre
* *Restructuration* :
* Lancer le chronomètre
* Restructurer le code
* Commit + push
* Arrêter le chronomètre
## Étape 2
Rendre les choses paramétrable.
* Le nombre de tours avant qu'un requin ne soit affamé
* Le nombre de poissons mangé par un requin avant qu'il ne donne naissance
* Le nombre de tours de gestation des poissons
* Les distances de déplacement des poissons et des requins
## Étape 3
* Si un poisson est à moins de X cases d'un requin, il sait qu'il est à porté d'un prédateur, son prochain mouvement sera dans la direction plus opposé possible. Comme les poissons et les requins ne se déplacent qu'à angle droit, les calcules se feront en distances de Manhattan.
pom.xml 0 → 100644
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<junit.version>5.7.0</junit.version>
</properties>
<groupId>fr.univlille.iut.info.r402</groupId>
<artifactId>ocean</artifactId>
<version>1.0</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.4</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<!-- junit 5 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
package fr.univlille.iut.info.r402.ocean;
public class Ocean {
}
package fr.univlille.iut.info.r402.ocean;
public class OceanTest {
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment