CAW1 2019 Projet de Célia COUILLER et Louis KLEIN

De Ensiwiki
Révision de 9 juin 2019 à 09:59 par Kleinlou (discussion | contributions) (Integration d'API externe : Traduction Automatique)

Aller à : navigation, rechercher
Project schedule.png
Titre du projet Moon Cat
Cadre Projet web (alternants 2a)
Page principale Test

Encadrants Sébastien Viardot


Objectif

Créer un système de salle de discussion permettant de jouer à un jeu inspiré des Loups Garous de Thiercelieux à la manière de Loups Garous en ligne.


Choix de Conception

TourDeJeuV0.jpg

   #enter the room
   #start the game
   #Attribution des rôles
   # Afficher "Début de la partie.
               Bienvenue à vous, chats habitants d'Ock.
               Prenez garde, parmis vous se dissimule une bande de Chacals ! 
               Eliminez les pour survivre, avant qu'il ne vous Chassassine dans votre sommeil."
   # Tant qu'il n'y a pas de vainqueur : 
       #Afficher "Début du vote dans 20s"
       #Attendre 20s
       #Lancer vote
           #Afficher "Début du vote"
           ...
           #Appliquer résultat du vote
               #Afficher le nom du voté : "Le village à décidé d'exclure $nom"
               #On ajoute le joueur à la liste des exclus
       #Si il n'y a pas de vainqueur
           #Afficher "Les chats d'Ock s'endorment, mais les chacals restent"
           #Uniquement pour les chacals   
               #Afficher "Début du vote dans 20s"
               #Attendre 20s
               #Lancer vote de nuit
                   #Afficher "Début du vote"
                   ...
                   #Appliquer résultat du vote
                       #Afficher le nom du voté : "Vous avez décidé d'exclure $nom"
                       #On ajoute le joueur à la liste des exclus
           #Afficher le nom du voté : "Au réveil, vous constatez la perte de $nom"
   # Afficher le vainqueur

A partir de ce script, on obtient le diagramme d'état suivant : StateDiagramV1.png


Rôles

Chacal

Tente d'éliminer tous les chats. Se réunissent durant la nuit pour choisir leur prochaine victime. Le jour, se dissimule parmis les chats.

Chat

Tente d'éliminer tous les chacals parmi eux. Se réunissent dans la journée pour exclure l'un des leurs.

Chaton
Chaman
Chakra
Chasseur
Charmant
Chablis
Chakira
Châtiment
Chamouraï

Choix Techniques

Django BBD : Bootsrap : CDN

Itérations

1) Le premier objectif est de créer un chat, auquel des utilisateurs peuvent acceder et sur lequel ils peuvent s'échanger des messages.

2) Ensuite, on ajoute la notion de rôle.

a)Les "joueurs" qui se connecte au chat se voit attribuer un rôle : Chat ou Chacal.

b) On introduit donc aussi le déroulement d'une partie. Deux période se succède : le jour et la nuit.

c) seuls les Chacals peuvent voir des messages durant la nuit

DiagrammeClasse1.jpg

Integration d'API externe : Traduction automatique

Concept

L'idée est de traduire automatiquement les messages des joueurs pour que des gens parlant différentes langues puissent communiquer ensemble. Pour l'instant, une démonstration de faisabilité a été faite, supportant les deux langues suivantes : - Français - Anglais

Mais des langues supplémentaires pourraient être rajoutées sans difficulté.

Au moment de l'inscription l'utilisateur choisit sa langue préférée, soit anglais, soit français. Tous les messages qu'il recevra seront traduit dans cette langue. L'illustration ci dessous donne une idée du résultat :

Chat translation.png

Inclusion Technique'

Deux API ont été considérées : DeepL et Google Translate API. Cependant, DeepL ne propose pas d'essai gratuits. Pour des raisons de coût, l'API de Google Translate a été privilégiée.

Cette dernière propose une bibliothèque python, ce qui a considérablement facilité son inclusion : inutile de faire des requêtes sur une API rest (avaec la blioth`ue requests, par exemple), il suffit juste d'installer la bibliothèque google-cloud-translate. Une fois cette dernuère installée, on peu instancier un objet de type Client, qui se charge de faire les requêtes à l'API. Le code est donc réduit, puisqu'il s'agit seulement de :

from google.cloud import translate
client = translate.Client()
msg = client.translate("Your message", source='en', dest='fr')
print(msg) # affiche "Votre message"

Ressources

https://channels.readthedocs.io/en/latest/tutorial/part_2.html https://getbootstrap.com/docs/4.3/ https://docs.djangoproject.com/en/2.2/intro/

http://www.ecolebizu.org/chasse-aux-mots/cha-jeu-de-mot.html