Description

Il manque de drama :smiling_imp: :boom: dans le parc et c’est pourquoi des combats de sumo-dinosaures sont désormais organisés. Le dinosaure avec la force la plus élevée gagne (voir ici pour le calcul de la force). Épuisé par le combat, le gagnant devient affamé et consomme 2 fois plus que sa consommation habituelle, à la fin du tour et uniquement pour ce tour (c’est-à-dire qu’il ne mangera pas en double pour le reste de sa vie) (voir ici pour le calcul de la consommation habituelle).

Si les deux dinosaures ont la même force, le combat de Sumo se termine à égalité. Dans un tel cas, les deux dinosaures sont gagnants et chacun devient affamé.

Le dinosaure perdant quitte le troupeau et va au paradis des dinosaures (après avoir mangé, c’est-à-dire qu’on considère qu’il consomme malgré qu’il va mourir ensuite). Il n’est pas affamé, car il a mangé la poussière donc sa consommation n’est pas doublée. De plus, il ne fait plus partie du troupeau (ajout de la conséquence #4 dans la section Conséquences d'un tour).

Pour le moment, il y a un maximum de 2 combats par tour qui peuvent être effectués (il se pourrait que cela change si on veut davantage de bisbille :smiling_imp:, sait-on jamais).

:exclamation: :exclamation: Modification de la story TURN, il faut remettre à 0 le nombre de combats lorsqu’un POST à /reset est fait.

Enfin, un dinosaure ne peut pas participer à plus d’un combat dans un même tour et les Tyrannosaurus Rex ne peuvent pas participer aux combats de sumo-dinosaure! En effet, car ceux-ci ont des bras trop courts pour effectuer des prises à leur adversaire.

Conditions de succès

# Description
1 Le dinosaure avec la plus grande force gagne.
2 Le nom du dinosaure gagnant est retourné.
3 Si les deux dinosaures ont la même force, retourner tie.
4 Les Tyrannosaurus Rex ne peuvent pas participer aux combats.
5 Il ne peut y avoir qu’un maximum de 2 combats par tour.
6 Un dinosaure ne peut participer qu’à un seul combat par tour.
7 Le dinosaure perdant ne fait plus partie du troupeau à la fin du tour.
8 Les dinosaures gagnants (et ceux qui ont un combat “tie”) sont affamés donc ils consomment 2 fois plus après un combat.

Déroulement d’un tour

Nous pouvons maintenant organiser des combats de sumo-dinosaures.

Actions possibles
Ajouter des ressources.
Ajouter un dinosaure.
Reproduction de dinosaures, ajout d’un bébé dinosaure.
Combat de sumo-dinosaures.

:warning: Note: Ces actions sont accumulées et exécutées, en ordre d’arrivée, lors du déroulement du tour.

Conséquences d’un tour (en ordre)
1. Ajouter 10 kilolitres d’eau, 250 salades et 100 hamburgers.
2. Retirer du garde-manger les ressources périmées.
3. Retirer du garde-manger les ressources consommées.
4. Retirer du troupeau les dinosaures qui ont perdu un combat.
5. Retirer du troupeau les dinosaures qui ont jeûné.
6. Retirer les bébé dinosaures dont les 2 parents ne sont plus dans le troupeau.

API

:white_check_mark: Ajouter des ressources

Requête

POST /sumodino

{
  "challenger": ""::string,
  "challengee": ""::string
}

:warning: Considérez qu’il n’y aura pas de champ manquant dans le payload envoyé et donc qu’il contiendra toujours 2 noms de dinosaures.

Réponses

:arrow_right: HTTP 200 Ok

:exclamation: Comme les actions (dont le combat) ne sont exécutées que lorsqu’un tour est joué (POST à /turn), alors la réponse immédiate au POST d’un combat est une prédiction du résultat, car officiellement le combat ne se fera que lors du tour.

{
  "predictedWinner": ""::string
} 

Payload de retour si les deux dinosaures ont la même force:

{
  "predictedWinner": "tie"
} 

:arrow_right: HTTP 400 Bad Request - Quand un des dinosaures est déjà inscrit pour participer à un combat.

{
  "error": "DINOSAUR_ALREADY_PARTICIPATING"::string,
  "description": "Dinosaur is already participating."::string
} 

:arrow_right: HTTP 400 Bad Request - Quand la limite maximale de combats par tour a été atteinte.

{
  "error": "MAX_COMBATS_REACHED"::string,
  "description": "Max number of combats has been reached."::string
} 

:arrow_right: HTTP 400 Bad Request - Quand un Tyrannosaurus Rex est un des potentiels combattants.

{
  "error": "ARMS_TOO_SHORT"::string,
  "description": "Tyrannosaurus Rex can't participate."::string
} 

:arrow_right: HTTP 404 Not Found - Quand le nom d’un dinosaure n’existe pas.

{
  "error": "NON_EXISTENT_NAME"::string,
  "description": "The specified name does not exist."::string
} 

:warning: :warning:

Les exceptions (si applicables) sont retournées immédiatement après un POST à /sumodino et non après avoir joué le tour.

Exemple: Si un Tyrannosaurus Rex est un des combattants, l’exception est retournée immédiatement après le POST à /sumodino et non après le POST à /turn.

De plus, prenez pour acquis que nous ne mélangerons pas les exceptions, exemple: nous n’allons pas mettre un payload avec un Tyrannosaurus Rex et un dinosaure inexistant.