Description

Il faut désormais tenir compte de l’âge des dinosaures. Donc chaque tour qui passe s’ajoute à l’âge du dinosaure. De plus, suite aux revendications de l’Association des Vieux Herbivores (trouver autre chose avec acronyme intéressant!!!), ce sont désormais les plus vieux qui mangent en premier pour les dinosaures herbivores. Si des dinosaures ont le même âge, y aller par priorité ordre alphabétique de nom (en commençant par A).

Les nouveaux dinosaures ajoutés au troupeau ont un âge de 20 tours à la fin du tour.

Autres points à considérer, les dinosaures qui naissent au parc suite à la reproduction entre deux dinosaures commencent leur vie au parc à la fin du tour avec un âge de 1 tour. Ils sont dépendants de leurs parents jusqu’à ce qu’ils aient 10 tours inclusivement.

Exemples:

  • Les parents d’un dinosaure ayant 11 tours quittent pour le paradis des dinosaures. Ce dernier continue sa vie dans le troupeau.

  • Les parents d’un dinosaure ayant 10 tours quittent pour le paradis des dinosaures. Ce dernier quitte lui aussi le troupeau.

Conditions de succès

# Description
1 Chaque tour les dinosaures vieillissent et leur âge doit apparaître (en tour) dans le payload.
2 Les plus vieux herbivores mangent avant les plus jeunes.
3 Les nouveaux dinosaures ajoutés au troupeau ont un âge de 20 tours à la fin du tour.
4 Les bébés dinosaures ont un âge de 1 tour à la fin du tour.
5 Un dinosaure dépend de ses parents jusqu’à ce qu’il ait 10 tours.

API

:warning: Changements aux requêtes existantes, il faut ajouter l’âge du dinosaure dans le payload:

:white_check_mark: Affichage d’un dinosaure vivant.

Requête

GET /dinosaurs/{NAME}

Réponses

:arrow_right: HTTP 200 Ok


{
  "name": ""::string,
  "weight": 0::int,
  "gender": "f" || "m"::string,
  "species": ""::string,
  "age": 0::int
}

:white_check_mark: Affichage de tous les dinosaures vivants.

Requête

GET /dinosaurs

Réponse

:arrow_right: HTTP 200 Ok

[
  {
    "name": ""::string,
      "weight": 0::int,
      "gender": "f" || "m"::string,
      "species": ""::string,
      "age": 0::int
    },
    ...
    {
    "name": ""::string,
      "weight": 0::int,
      "gender": "f" || "m"::string,
      "species": ""::string,
      "age": 0::int
    }
]

:bulb: Exemple:

  1. POST /dinosaurs => Ajout d’un dinosaure
    {
      "name": "John Doe",
      "weight": 100,
      "gender": "m",
      "species": "Brachiosaurus"
    }
    
  2. POST /turn

  3. GET /dinosaurs/John Doe
    {
      "name": "John Doe",
      "weight": 100,
      "gender": "m",
      "species": "Brachiosaurus",
      "age": 20
    }