From 8f11bd073df16e5de43c0363d6be14001bfe066a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lo=C3=AFc=20Wikle=20DUBARD?= <loic97429@gmail.com>
Date: Sat, 17 Aug 2019 12:50:03 +0200
Subject: [PATCH] script useless/quizz.py complet

---
 CHANGELOG.md     |   3 ++
 useless/quizz.py | 110 +++++++++++++++++++++++++++++++++++++++++++----
 2 files changed, 104 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index c717ce1..8095597 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,9 @@
 ## 17 aout 2019
 **Ajouts:**
 - meteo : on peut demander des prévisions dans n heures
+- script useless/quizz.py complet, manque plus que de l'implementé dans le script principal
+**Fixes:**
+- sons compris/pascompris plus intuitifs
 
 ---
 
diff --git a/useless/quizz.py b/useless/quizz.py
index 95f7c1f..5d9fdf8 100755
--- a/useless/quizz.py
+++ b/useless/quizz.py
@@ -3,32 +3,124 @@
 
 import requests
 # import urllib
-import html
+# import html
 
 from random import shuffle
 from googletrans import Translator
 translator = Translator()
 
 
-def escape(html):
-    return html.encode('utf8').replace('&quot;', "'")
+# def escape(html):
+#     return html.encode('utf8').replace('&quot;', "'")
 
 
-def quizz():
+class Quizz(object):
+    @staticmethod
+    def quizz():
         req = requests.get("https://opentdb.com/api.php?amount=1&difficulty=easy")
         al = req.json()
         pas_reponse = []
         rep = al['results'][0]
 
-        question = html.escape(rep['question'])
-        reponse = html.escape(rep['correct_answer'])
+        question = rep['question']
+        reponse = rep['correct_answer']
         choix = [reponse]
         for f in rep['incorrect_answers']:
-                pas_reponse.append(html.escape(f))
-                choix.append(html.escape(f))
+                pas_reponse.append(f)
+                choix.append(f)
         shuffle(choix)
         return {'question': translator.translate(question, src='en', dest='fr').text, 'reponse': reponse, 'choix': choix, 'pas_reponse': pas_reponse}
 
+    def __init__(self):
+        self._status = 0  # 0 : not started, 1 : started, 2 : reponse trouvée
+        self._quizz = Quizz.quizz()
+        self._essais = {}
+        self._points = {}
+        self._round = 0
+
+    def get_status(self):
+        if self._status == 2:
+            return 2, 'Vous avez déjà trouvé la réponse, demandez une nouvelle question.'
+        elif self._status == 1:
+            return 1, 'La partie est en cours.'
+        else:
+            return 0, 'la partie n\'a pas commencé.'
+
+    def get_question(self):
+        return self._quizz['question']
+
+    def start(self):
+        assert self._status == 0
+        if self._status == 0:
+            self._status = 1
+            self._round = 1
+
+    def get_round(self):
+        return self._round
+
+    def new(self):
+        self._quizz = Quizz.quizz()
+        self._essais = {}
+        self._status = 1
+        self._round += 1
+        return self.get_question()
+
+    def answer(self, proposition, personne=''):
+        assert self._status == 1
+        if proposition == '!indice':
+            return self.indice()
+        if proposition == '!scoreboard':
+            return self.scoreboard()
+        if '!scoreboard' in proposition:
+            return self.scoreboard(proposition.replace('!scoreboard ', ''))
+        if proposition == '!reset':
+            return self.reset()
+        if proposition == '!question':
+            return self.get_question()
+        if proposition == self._quizz['reponse']:
+            if personne in self._essais.keys():
+                self._essais[personne] += 1
+            else:
+                self._essais[personne] = 1
+            if personne in self._points.keys():
+                self._points[personne] += 1
+            else:
+                self._points[personne] = 1
+            self._status = 2
+            return 'Bravo, {} tu as trouvé la réponse : {} en {} essais.'.format(personne, self._quizz['reponse'], self._essais[personne])
+
+        else:
+            if personne in self._essais.keys():
+                self._essais[personne] += 1
+            else:
+                self._essais[personne] = 1
+            return '{} est une mauvaise réponse {}'.format(proposition, personne)
+
+    def scoreboard(self, personne=None):
+        if personne is not None and personne in self._points.keys():
+            return self._points['personne']
+        return str(self._points)
+
+    def indice(self):
+        return 'Choix possibles : ' + ", ".join(self._quizz['choix'])
+
+    def reset(self):
+        self._status = 0  # 0 : not started, 1 : started, 2 : reponse trouvée
+        self._quizz = Quizz.quizz()
+        self._essais = {}
+        self._points = {}
+        self._round = 0
+
 
 if __name__ == "__main__":
-        print(quizz())
+    q = Quizz()
+    print(q.get_question())
+    q.start()
+    while q.get_status()[0] != 0:
+        while q.get_status()[0] == 1:
+            #personne = input('joueur>')
+            proposition = input('réponse>')
+            print(q.answer(proposition))
+            print(q.get_status())
+        q.new()
+        print(q.get_question())
-- 
GitLab