fix(classic): anti-répétition persistante + cohérence des questions
Anti-répétition: - Chaque question posée est marquée en SharedPreferences (par ID): elle ne revient plus, même entre les parties, tant que le stock de 185 questions n'est pas épuisé (reset automatique ensuite) - Le fallback ne renvoie plus une question déjà posée Cohérence (audit croisé JSON <-> moteur, 185 questions): - Accord du verbe selon le sujet réel: 62 questions à sujet pluriel recevaient «boit» au lieu de «boivent» (isPluralSubject) - Remplacement indépendant des balises <J1>/<J2>/<J3>: une question contenant <J2> sans <J1> n'affichait plus la balise brute - Le champ arret du JSON est désormais utilisé comme message de fin de défi (27 messages étaient des données mortes) - id 84: champ "distribut" (typo) jamais lu -> question muette - 16 questions à double consigne (gorgées en dur + gorgées du moteur) passées en auto-suffisantes - Balises <variante> manquantes (ids 21, 97) rétablies - 78 corrections de langue/accord dans les textes (orthographe, accords m/f, variantes vieux/vieille, branché(e), fins de phrases incohérentes avec le verbe ajouté...)
This commit is contained in:
+116
-108
@@ -17,14 +17,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"question": "si tu n'as pas ton véritable nom sur insta",
|
"question": "Ceux/Celles qui n'ont pas leur véritable nom sur Insta",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"question": "si tu as des photos sur insta",
|
"question": "Ceux/Celles qui ont des photos compromettantes sur Insta",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"question": "Toutes celles (ou ceux) qui ont du verni à ongles",
|
"question": "Toutes celles (ou ceux) qui ont du vernis à ongles",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 12,
|
"id": 12,
|
||||||
"question": "<J1> à toi de juger : entre <J1> et <J2> qui stresse le plus pour un rien selon toi? Le perdant ",
|
"question": "<J1>, à toi de juger : entre <J2> et <J3> qui stresse le plus pour un rien selon toi ? Le perdant ",
|
||||||
"gorger": 5,
|
"gorger": 5,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -101,12 +101,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 15,
|
"id": 15,
|
||||||
"question": "<J1>, donne le nombre d'habitant du/de la <variante> ( à 1 000 000 près) Si tu as faux tu bois, sinon tu ",
|
"question": "<J1>, donne le nombre d'habitants du/de la <variante> (à 1 000 000 près). Si tu as faux, le joueur ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": false,
|
"recois": false,
|
||||||
"variante": [
|
"variante": [
|
||||||
"Tadjikistant",
|
"Tadjikistan",
|
||||||
"Monaco",
|
"Monaco",
|
||||||
"Belgique",
|
"Belgique",
|
||||||
"Suisse",
|
"Suisse",
|
||||||
@@ -126,12 +126,12 @@
|
|||||||
"id": 17,
|
"id": 17,
|
||||||
"question": "<J1> à qui appartient le slogan suivant? <variante>",
|
"question": "<J1> à qui appartient le slogan suivant? <variante>",
|
||||||
"variante": [
|
"variante": [
|
||||||
"Des pâtes oui mais des (panzani)",
|
"Des pâtes oui, mais des Panzani ! (Panzani)",
|
||||||
" Le plaisir pour les petites faims. (Kinder Bueno)",
|
" Le plaisir pour les petites faims. (Kinder Bueno)",
|
||||||
"Réveillez le lion qui est en vous. (Cereale lion)",
|
"Réveillez le lion qui est en vous. (Céréales Lion)",
|
||||||
"Parce que le monde bouge (CIC)",
|
"Parce que le monde bouge (CIC)",
|
||||||
"Ça coule de source ! (Cristaline)",
|
"Ça coule de source ! (Cristaline)",
|
||||||
"Pensez différemment (apple)"
|
"Pensez différemment (Apple)"
|
||||||
],
|
],
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
@@ -139,14 +139,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 18,
|
"id": 18,
|
||||||
"question": "Celles et ceux qui ont eu un Windows phone",
|
"question": "Celles et ceux qui ont eu un Windows Phone",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 19,
|
"id": 19,
|
||||||
"question": "<J1>, Boire un café fait baisser le taux d'alcool? Si tu as faux ",
|
"question": "<J1>, Boire un café fait baisser le taux d'alcool ? Si tu as faux, ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -160,10 +160,10 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 21,
|
"id": 21,
|
||||||
"question": "Celui/Celle qui pèse le plus lourd",
|
"question": "Celui/Celle qui pèse le plus <variante>",
|
||||||
"variante": [
|
"variante": [
|
||||||
"lourd",
|
"lourd",
|
||||||
"leger"
|
"léger"
|
||||||
],
|
],
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
@@ -174,9 +174,9 @@
|
|||||||
"question": "Pour se décoincer, le/la plus <variante>",
|
"question": "Pour se décoincer, le/la plus <variante>",
|
||||||
"variante": [
|
"variante": [
|
||||||
"timide",
|
"timide",
|
||||||
"enervé ",
|
"énervé(e)",
|
||||||
"angoissé",
|
"angoissé(e)",
|
||||||
"aigri"
|
"aigri(e)"
|
||||||
],
|
],
|
||||||
"gorger": 2,
|
"gorger": 2,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
@@ -188,7 +188,7 @@
|
|||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"variante": [
|
"variante": [
|
||||||
"jeune",
|
"jeune",
|
||||||
"vieille"
|
"vieux/vieille"
|
||||||
],
|
],
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
"variante": [
|
"variante": [
|
||||||
"L",
|
"L",
|
||||||
"Scientifique",
|
"Scientifique",
|
||||||
"Bac Professionel",
|
"Bac Professionnel",
|
||||||
"STMG"
|
"STMG"
|
||||||
],
|
],
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 25,
|
"id": 25,
|
||||||
"question": "Celles et ceux qui ont deja joué <variante> de maniere recurrente ",
|
"question": "Celles et ceux qui ont déjà joué <variante> de manière récurrente ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"variante": [
|
"variante": [
|
||||||
"du piano",
|
"du piano",
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 27,
|
"id": 27,
|
||||||
"question": "Celui ou celle a la meilleure place",
|
"question": "Celui ou celle à la meilleure place",
|
||||||
"gorger": 2,
|
"gorger": 2,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -268,7 +268,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 32,
|
"id": 32,
|
||||||
"question": "La personne la plus maquillé ",
|
"question": "La personne la plus maquillée ",
|
||||||
"gorger": 2,
|
"gorger": 2,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -282,7 +282,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 34,
|
"id": 34,
|
||||||
"question": "Celles et ceux qui boit de la <variante> actuellement",
|
"question": "Celles et ceux qui boivent de la <variante> actuellement",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true,
|
"recois": true,
|
||||||
@@ -332,7 +332,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 38,
|
"id": 38,
|
||||||
"question": "Celui/celle avec le plus gros appetit sexuel",
|
"question": "Celui/celle avec le plus gros appétit sexuel",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true,
|
"recois": true,
|
||||||
@@ -340,7 +340,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 39,
|
"id": 39,
|
||||||
"question": "Ceux/Celles qui fumes (VapeNation compris)",
|
"question": "Ceux/Celles qui fument (vapoteurs compris)",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -378,7 +378,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 43,
|
"id": 43,
|
||||||
"question": "Le premier joueur à enlever un vêtements",
|
"question": "Le premier joueur à enlever un vêtement",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -392,14 +392,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 45,
|
"id": 45,
|
||||||
"question": "Celui/Celle avec le plus de follow sur <variante>",
|
"question": "Celui/Celle avec le plus d'abonnés sur <variante>",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true,
|
"recois": true,
|
||||||
"variante": [
|
"variante": [
|
||||||
"instagram",
|
"instagram",
|
||||||
"facebook",
|
"facebook",
|
||||||
"tik-tok"
|
"TikTok"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -426,7 +426,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 49,
|
"id": 49,
|
||||||
"question": "Celles et ceux qui ont déjà dépenser plus de 2000 euros en un achat",
|
"question": "Celles et ceux qui ont déjà dépensé plus de 2000 euros en un achat",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -440,7 +440,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 51,
|
"id": 51,
|
||||||
"question": "Celles/Ceux qui rentre chez eux à la fin de la soirée",
|
"question": "Celles/Ceux qui rentrent chez eux à la fin de la soirée",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -452,13 +452,13 @@
|
|||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true,
|
"recois": true,
|
||||||
"variante": [
|
"variante": [
|
||||||
"impaire",
|
"impair",
|
||||||
"paire"
|
"pair"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 53,
|
"id": 53,
|
||||||
"question": "Si tu as un téléphone qui a un prix supérieur d'achat à 1000 euros, tu es riche donc en tant que personne généreuse",
|
"question": "Si tu as un téléphone acheté plus de 1000 euros, tu es riche, donc en tant que personne généreuse",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": false
|
"recois": false
|
||||||
@@ -473,7 +473,7 @@
|
|||||||
{
|
{
|
||||||
"id": 55,
|
"id": 55,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "Le jeu du revolver: Chaque joueur a maintenant 7 balles, une balle correspondant à une gorgée. Les joueurs ont la capacité de tirer des balles à tout moment du jeu.",
|
"question": "Le jeu du revolver: Chaque joueur a maintenant 7 balles, une balle correspond à une gorgée. Les joueurs ont la capacité de tirer des balles à tout moment du jeu.",
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": false
|
"recois": false
|
||||||
},
|
},
|
||||||
@@ -487,14 +487,14 @@
|
|||||||
{
|
{
|
||||||
"id": 57,
|
"id": 57,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> est le vieu/vieille briscard ! Interdiction de montrer tes dents pendant <manche> manches",
|
"question": "<J1> est un vieux/une vieille briscard(e) ! Interdiction de montrer tes dents pendant <manches> manches",
|
||||||
"manches": true,
|
"manches": true,
|
||||||
"arret": "Tu peux arreter de cacher tes belles dents"
|
"arret": "Tu peux arrêter de cacher tes belles dents"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 58,
|
"id": 58,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> et <J2> liser le premier SMS qui s'affiche quand on tape <variante> dans la barre de recherche. le plus marrant",
|
"question": "<J1> et <J2>, lisez le premier SMS qui s'affiche quand on tape <variante> dans la barre de recherche. le plus marrant",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"variante": [
|
"variante": [
|
||||||
"désolé",
|
"désolé",
|
||||||
@@ -509,7 +509,7 @@
|
|||||||
{
|
{
|
||||||
"id": 59,
|
"id": 59,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "A tour de role, vous avez exactement 3 secondes pour donner un mot en rapport avec le mots dit precedemment.<J1> tu commences en choissisant un mot. Le perdant",
|
"question": "À tour de rôle, vous avez exactement 3 secondes pour donner un mot en rapport avec le mot dit précédemment. <J1>, tu commences en choisissant un mot. Le perdant",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -525,7 +525,7 @@
|
|||||||
{
|
{
|
||||||
"id": 61,
|
"id": 61,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> defie <J2> au chifoumi ! Le perdant",
|
"question": "<J1> défie <J2> au chifoumi ! Le perdant",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -539,7 +539,7 @@
|
|||||||
"futur"
|
"futur"
|
||||||
],
|
],
|
||||||
"manches": true,
|
"manches": true,
|
||||||
"arret": "Tu est revenu dans le present",
|
"arret": "Tu es revenu dans le présent",
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": false,
|
"recois": false,
|
||||||
"caliente": false
|
"caliente": false
|
||||||
@@ -551,7 +551,7 @@
|
|||||||
{
|
{
|
||||||
"id": 64,
|
"id": 64,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> et <J2> ferment leurs yeux ! Ils/Elles doivent deviner la couleur des yeux de l'autre. ",
|
"question": "<J1> et <J2> ferment leurs yeux ! Ils/Elles doivent deviner la couleur des yeux de l'autre. Le perdant ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -559,27 +559,27 @@
|
|||||||
{
|
{
|
||||||
"id": 65,
|
"id": 65,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> est manchot ! Il/Elle ne peut plus utiliser ses doigts durant <manches> manches . Si il/elle s'en sert, il/elle devra boire autant de gorgées qu'il/elle a utilisé de doigts",
|
"question": "<J1> est manchot ! Il/Elle ne peut plus utiliser ses doigts durant <manches> manches . S'il/elle s'en sert, il/elle devra boire autant de gorgées qu'il/elle a utilisé de doigts",
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"arret": "Tu n'es plus manchot",
|
"arret": "Tu n'es plus manchot",
|
||||||
"recois": true
|
"recois": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 66,
|
"id": 66,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> et <J2> , si vous êtes ensemble dans la vraie vie, vous pouvez distribuer 2 gorgées , autrement buvez-les"
|
"question": "<J1> et <J2>, si vous êtes ensemble dans la vraie vie, vous pouvez distribuer 2 gorgées , autrement buvez-les"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 67,
|
"id": 67,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> a la tourette ! A chaque fois que tu bois une gorgée, tu dois CRIER une insulte. C'est un stade avancé, ça dure <manches> manches",
|
"question": "<J1> a la Tourette ! A chaque fois que tu bois une gorgée, tu dois CRIER une insulte. C'est un stade avancé, ça dure <manches> manches",
|
||||||
"manches": true,
|
"manches": true,
|
||||||
"arret": "Tu n'as plus tourette."
|
"arret": "Tu n'as plus la Tourette."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 68,
|
"id": 68,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1>, donne la couleur préférée de <J2> si tu te trompes",
|
"question": "<J1>, donne la couleur préférée de <J2>. En cas d'erreur, <J1>",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -587,10 +587,11 @@
|
|||||||
{
|
{
|
||||||
"id": 69,
|
"id": 69,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> à l'oeil de serpent ! Dès qu'un joueur te regarde dans les yeux, il/elle boit. Si tu es arrivé à faire boire personne avant <manches> manches, tu ",
|
"question": "<J1> a l'œil de serpent ! Dès qu'un joueur te regarde dans les yeux, il/elle boit. Si tu n'as réussi à faire boire personne avant <manches> manches, le serpent ",
|
||||||
"gorger": 4,
|
"gorger": 4,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true,
|
||||||
|
"arret": "Tu n'as plus l'œil de serpent !"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 70,
|
"id": 70,
|
||||||
@@ -598,8 +599,8 @@
|
|||||||
"question": "<J1> et <J2> se mesurent ! Le/la plus <variante>",
|
"question": "<J1> et <J2> se mesurent ! Le/la plus <variante>",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"variante": [
|
"variante": [
|
||||||
"petit",
|
"petit(e)",
|
||||||
"grand"
|
"grand(e)"
|
||||||
],
|
],
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -612,12 +613,13 @@
|
|||||||
"C'est clair",
|
"C'est clair",
|
||||||
"han",
|
"han",
|
||||||
"quoicoubeh"
|
"quoicoubeh"
|
||||||
]
|
],
|
||||||
|
"arret": "Tu peux enfin parler normalement !"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 72,
|
"id": 72,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> et <J2> se défient au 'je te tiens, tu me tiens', le premier qui rit sera dechiré, et ",
|
"question": "<J1> et <J2> se défient au 'je te tiens, tu me tiens', le premier qui rit sera déchiré, et ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -627,7 +629,7 @@
|
|||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> et <J2> n'ont plus le droit d'utiliser leur téléphone pendant <manches> manches !",
|
"question": "<J1> et <J2> n'ont plus le droit d'utiliser leur téléphone pendant <manches> manches !",
|
||||||
"manches": "true",
|
"manches": "true",
|
||||||
"arret": "vous pouvez enfin utiliser vos téléphone bande de geek"
|
"arret": "vous pouvez enfin utiliser vos téléphones, bande de geeks"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 74,
|
"id": 74,
|
||||||
@@ -645,7 +647,7 @@
|
|||||||
{
|
{
|
||||||
"id": 75,
|
"id": 75,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1>, Si on te dit Marco? ... Si tu as dis Polo ",
|
"question": "<J1>, Si on te dit Marco? ... Si tu as dit Polo ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -653,11 +655,11 @@
|
|||||||
{
|
{
|
||||||
"id": 76,
|
"id": 76,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> est l'aigris pendant <manches> manches ! Dès que tu souris ou rigoles,",
|
"question": "<J1> est l'aigri pendant <manches> manches ! Dès que tu souris ou rigoles,",
|
||||||
"gorger": 1,
|
"gorger": 1,
|
||||||
"manches": true,
|
"manches": true,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"arret": "Tu n'es plus aigris!",
|
"arret": "Tu n'es plus aigri !",
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -689,9 +691,9 @@
|
|||||||
{
|
{
|
||||||
"id": 81,
|
"id": 81,
|
||||||
"jeux": true,
|
"jeux": true,
|
||||||
"question": "<J1> et <J2> sont lies, si l'un boit alors l'autre aussi, et ce pendant <manches> manches",
|
"question": "<J1> et <J2> sont liés : si l'un boit alors l'autre aussi, et ce pendant <manches> manches",
|
||||||
"manches": true,
|
"manches": true,
|
||||||
"arret": "Vous n'etes plus liés par le verre de l'amitié et plus.."
|
"arret": "Vous n'êtes plus liés par le verre de l'amitié !"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 82,
|
"id": 82,
|
||||||
@@ -703,19 +705,18 @@
|
|||||||
"question": "<J1> doit choisir un mot que tout le monde devra dire à chaque fois qu'une personne boit. Pendant <manches> manches",
|
"question": "<J1> doit choisir un mot que tout le monde devra dire à chaque fois qu'une personne boit. Pendant <manches> manches",
|
||||||
"jeux": false,
|
"jeux": false,
|
||||||
"manches": true,
|
"manches": true,
|
||||||
"arret": "Plus besoin de dire le mots avant de boire"
|
"arret": "Plus besoin de dire le mot avant de boire"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 84,
|
"id": 84,
|
||||||
"question": "Quand l'heure affichera un multiple de 10 (22h, 22h10 ...) le premier à crier 'merde j'ai oublié mon chat'",
|
"question": "Quand l'heure affichera un multiple de 10 (22h, 22h10 ...) le premier à crier 'merde j'ai oublié mon chat'",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribut": false,
|
"distribution": false,
|
||||||
"manches": true,
|
"recois": true
|
||||||
"arret": "Vous avez retrouver le chat!"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 85,
|
"id": 85,
|
||||||
"question": "Plutôt ne plus avoir de mains ou de jambes? les perdants ",
|
"question": "Plutôt ne plus avoir de mains ou de jambes ? Votez tous en même temps. La minorité ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"jeux": false,
|
"jeux": false,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
@@ -745,7 +746,7 @@
|
|||||||
"filles",
|
"filles",
|
||||||
"garçons",
|
"garçons",
|
||||||
"couples",
|
"couples",
|
||||||
"celibataires"
|
"célibataires"
|
||||||
],
|
],
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
@@ -784,21 +785,21 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 93,
|
"id": 93,
|
||||||
"question": "Plutôt jeux-videos ou livre ? Votez tous en même temps. La minorité ",
|
"question": "Plutôt jeux vidéo ou livres ? Votez tous en même temps. La minorité ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 94,
|
"id": 94,
|
||||||
"question": "Plutôt anime ou jeux-videos ? Votez tous en même temps. La minorité ",
|
"question": "Plutôt animés ou jeux vidéo ? Votez tous en même temps. La minorité ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 95,
|
"id": 95,
|
||||||
"question": "Elisez le plus <variante> d'entre vous, ce dernier ",
|
"question": "Élisez le plus <variante> d'entre vous, ce dernier ",
|
||||||
"variante": [
|
"variante": [
|
||||||
"con",
|
"con",
|
||||||
"intelligent",
|
"intelligent",
|
||||||
@@ -821,16 +822,16 @@
|
|||||||
"Christopher Nolan",
|
"Christopher Nolan",
|
||||||
"James Cameron",
|
"James Cameron",
|
||||||
"Tim Burton",
|
"Tim Burton",
|
||||||
"Quentin tarantino",
|
"Quentin Tarantino",
|
||||||
"Steven Spielberg"
|
"Steven Spielberg"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 97,
|
"id": 97,
|
||||||
"question": "Le premier qui donne un film avec ",
|
"question": "Le premier qui donne un film avec <variante> ",
|
||||||
"variante": [
|
"variante": [
|
||||||
"Christian Clavier",
|
"Christian Clavier",
|
||||||
"Morgan freeman",
|
"Morgan Freeman",
|
||||||
"Brad Pitt",
|
"Brad Pitt",
|
||||||
"Jean Reno",
|
"Jean Reno",
|
||||||
"Marion Cotillard"
|
"Marion Cotillard"
|
||||||
@@ -847,7 +848,7 @@
|
|||||||
"recois": false,
|
"recois": false,
|
||||||
"variante": [
|
"variante": [
|
||||||
"jeune",
|
"jeune",
|
||||||
"vieille"
|
"vieux/vieille"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -866,14 +867,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 101,
|
"id": 101,
|
||||||
"question": "Plutot vaincre le patrikaka ou la polution dans le monde? Votez tous en meme temps. La minorité ",
|
"question": "Plutôt vaincre le patrikaka ou la pollution dans le monde ? Votez tous en même temps. La minorité ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 102,
|
"id": 102,
|
||||||
"question": "Jeu du LUTIN : Pendant <manches> manches. Vous devez enlever le lutin de votre verre pour pouvoir boire et le remettre ensuite sinon vous devait reboire",
|
"question": "Jeu du LUTIN : Pendant <manches> manches. Vous devez enlever le lutin de votre verre pour pouvoir boire et le remettre ensuite sinon vous devez reboire",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": false,
|
"recois": false,
|
||||||
@@ -896,17 +897,17 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 104,
|
"id": 104,
|
||||||
"question": "Le premier joueur qui dévoile un de ses secrets et que personne ne sait ",
|
"question": "Le premier joueur qui dévoile un de ses secrets et que personne ne connaissait : le perdant ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": false
|
"recois": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 105,
|
"id": 105,
|
||||||
"question": "Jeu des peaux! Triez vous du joueur le plus bronzé au joueur le moins bronzé. Le plus bronzé prend 1 gorgée, le second 2 gorgées, etc.",
|
"question": "Jeu des peaux! Triez-vous : du joueur le plus bronzé au joueur le moins bronzé. Le plus bronzé prend 1 gorgée, le second 2 gorgées, etc.",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": true,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 106,
|
"id": 106,
|
||||||
@@ -919,11 +920,11 @@
|
|||||||
"id": 107,
|
"id": 107,
|
||||||
"question": "Il est désormais interdit de se tutoyer pendant <manches> manches",
|
"question": "Il est désormais interdit de se tutoyer pendant <manches> manches",
|
||||||
"manches": true,
|
"manches": true,
|
||||||
"arret": "Vous pouvez vous enfin vous tutoyer"
|
"arret": "Vous pouvez enfin vous tutoyer"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 108,
|
"id": 108,
|
||||||
"question": "Vaccin contre le COVID19 : Le DR Raoul à dit que boire un cul sec avait les mêmes effets que le vaccin. Tout le monde bois sont verre cul sec"
|
"question": "Vaccin contre le COVID19 : Le Dr Raoult a dit que boire un cul sec avait les mêmes effets que le vaccin. Tout le monde boit son verre cul sec"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 109,
|
"id": 109,
|
||||||
@@ -948,29 +949,28 @@
|
|||||||
{
|
{
|
||||||
"id": 112,
|
"id": 112,
|
||||||
"question": "Le prochain qui parle de travail ou d'école doit boire un shot",
|
"question": "Le prochain qui parle de travail ou d'école doit boire un shot",
|
||||||
"duree": true,
|
"duree": true
|
||||||
"arret": "Fin de l'interdiction"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 113,
|
"id": 113,
|
||||||
"question": "Karaoké improvisé : <J1> choisit une chanson pour <J2>",
|
"question": "Karaoké improvisé : <J1> choisit une chanson, et c'est <J2> qui doit la chanter. <J2> ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 114,
|
"id": 114,
|
||||||
"question": "Qui serait le plus susceptible de survivre dans un film de survie ? Votez",
|
"question": "Qui serait le plus susceptible de survivre dans un film de survie ? Votez, et le perdant ",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 115,
|
"id": 115,
|
||||||
"question": "Défi cuisine : <J1> doit créer la combinaison d'alcool la plus bizarre avec les ingrédients présents, <J2> doit boire la mixture",
|
"question": "Défi cuisine : <J1> doit créer la combinaison d'alcool la plus bizarre avec les ingrédients présents, et c'est <J2> qui doit la boire cul sec",
|
||||||
"gorger": 2,
|
"gorger": 2,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 116,
|
"id": 116,
|
||||||
@@ -1051,14 +1051,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 127,
|
"id": 127,
|
||||||
"question": "Le/La plus drôle du groupe (vote à main levée, le perdant boit)",
|
"question": "Le/La plus drôle du groupe (vote à main levée)",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 128,
|
"id": 128,
|
||||||
"question": "Le/La plus 'bête' cul du groupe",
|
"question": "Le/La plus beau cul du groupe",
|
||||||
"gorger": 4,
|
"gorger": 4,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -1072,7 +1072,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 130,
|
"id": 130,
|
||||||
"question": "Le/La plus likely to rater sa vie",
|
"question": "Le/La plus susceptible de rater sa vie",
|
||||||
"gorger": 4,
|
"gorger": 4,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -1146,7 +1146,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 139,
|
"id": 139,
|
||||||
"question": "Pause pip interdite pendant <manches> manches. 5 gorgées si tu vas aux toilettes !",
|
"question": "Pause pipi interdite pendant <manches> manches. 5 gorgées si tu vas aux toilettes !",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"arret": "Tu peux enfin aller aux toilettes !"
|
"arret": "Tu peux enfin aller aux toilettes !"
|
||||||
},
|
},
|
||||||
@@ -1190,49 +1190,57 @@
|
|||||||
"id": 146,
|
"id": 146,
|
||||||
"question": "<J1> et <J2> se regardent dans les yeux pendant 10 secondes sans rire. Le premier à rire boit 4 gorgées",
|
"question": "<J1> et <J2> se regardent dans les yeux pendant 10 secondes sans rire. Le premier à rire boit 4 gorgées",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 147,
|
"id": 147,
|
||||||
"question": "<J1> doit donner un compliment à <J2>. Si <J2> n'est pas satisfait : <J1> boit 3 gorgées",
|
"question": "<J1> doit donner un compliment à <J2>. Si <J2> n'est pas satisfait : <J1> boit 3 gorgées",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 148,
|
"id": 148,
|
||||||
"question": "<J1> à toi de choisir : qui de <J2> ou <J3> a le plus mauvais goût musical ? Le perdant boit 3 gorgées",
|
"question": "<J1>, à toi de choisir : qui de <J2> ou <J3> a le plus mauvais goût musical ? Le perdant boit 3 gorgées",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 149,
|
"id": 149,
|
||||||
"question": "<J1> doit deviner ce que <J2> a mangé aujourd'hui. 1 gorgée par mauvaise réponse, max 5",
|
"question": "<J1> doit deviner ce que <J2> a mangé aujourd'hui. 1 gorgée par mauvaise réponse, max 5",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 150,
|
"id": 150,
|
||||||
"question": "<J1> et <J2> font un bras de fer. Le perdant boit 5 gorgées",
|
"question": "<J1> et <J2> font un bras de fer. Le perdant boit 5 gorgées",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 151,
|
"id": 151,
|
||||||
"question": "<J1> doit nommer une qualité de <J2>. Si <J2> n'est pas d'accord : 3 gorgées pour <J1>",
|
"question": "<J1> doit nommer une qualité de <J2>. Si <J2> n'est pas d'accord : 3 gorgées pour <J1>",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 152,
|
"id": 152,
|
||||||
"question": "<J1> doit deviner la couleur des sous-vêtements de <J2>. 2 gorgées si faux",
|
"question": "<J1> doit deviner la couleur des sous-vêtements de <J2>. 2 gorgées si faux",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 153,
|
"id": 153,
|
||||||
"question": "<J1> doit mimer le métier de <J2>. Les autres doivent deviner en moins de 30 secondes ou <J1> boit 4 gorgées",
|
"question": "<J1> doit mimer le métier de <J2>. Les autres doivent deviner en moins de 30 secondes ou <J1> boit 4 gorgées",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 154,
|
"id": 154,
|
||||||
@@ -1286,7 +1294,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 158,
|
"id": 158,
|
||||||
"question": "Le/La plus 'influençant' du groupe (vote à main levée)",
|
"question": "Le/La plus influenceur/euse du groupe (vote à main levée)",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -1302,7 +1310,8 @@
|
|||||||
"id": 160,
|
"id": 160,
|
||||||
"question": "<J1> doit dire 3 mots commençant par la même lettre que <J2> choisit. Si échec : 3 gorgées",
|
"question": "<J1> doit dire 3 mots commençant par la même lettre que <J2> choisit. Si échec : 3 gorgées",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 161,
|
"id": 161,
|
||||||
@@ -1313,7 +1322,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 162,
|
"id": 162,
|
||||||
"question": "Le/La plus 'branché' du groupe selon les autres",
|
"question": "Le/La plus 'branché(e)' du groupe selon les autres",
|
||||||
"gorger": 3,
|
"gorger": 3,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
@@ -1382,7 +1391,8 @@
|
|||||||
"id": 171,
|
"id": 171,
|
||||||
"question": "<J1> doit faire rire <J2> en 30 secondes. Si échec : 5 gorgées",
|
"question": "<J1> doit faire rire <J2> en 30 secondes. Si échec : 5 gorgées",
|
||||||
"gorger": 0,
|
"gorger": 0,
|
||||||
"recois": true
|
"recois": false,
|
||||||
|
"distribution": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 172,
|
"id": 172,
|
||||||
@@ -1408,8 +1418,7 @@
|
|||||||
"une voiture",
|
"une voiture",
|
||||||
"un téléphone",
|
"un téléphone",
|
||||||
"un avion"
|
"un avion"
|
||||||
],
|
]
|
||||||
"arret": "Fin du mime !"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 175,
|
"id": 175,
|
||||||
@@ -1435,8 +1444,7 @@
|
|||||||
"mèche",
|
"mèche",
|
||||||
"alliance",
|
"alliance",
|
||||||
"bracelet"
|
"bracelet"
|
||||||
],
|
]
|
||||||
"arret": "Fin du jeu du NI !"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 178,
|
"id": 178,
|
||||||
@@ -1479,14 +1487,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 183,
|
"id": 183,
|
||||||
"question": "Ceux qui ont déjà fait un regretté post-soirée (message à un ex)",
|
"question": "Ceux qui ont déjà envoyé un message à leur ex après une soirée",
|
||||||
"gorger": 4,
|
"gorger": 4,
|
||||||
"distribution": true,
|
"distribution": true,
|
||||||
"recois": true
|
"recois": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 184,
|
"id": 184,
|
||||||
"question": "Le/La plus 'organisé' du groupe",
|
"question": "Le/La plus 'organisé(e)' du groupe",
|
||||||
"gorger": 2,
|
"gorger": 2,
|
||||||
"distribution": false,
|
"distribution": false,
|
||||||
"recois": true
|
"recois": true
|
||||||
|
|||||||
@@ -98,6 +98,13 @@ public class QuestionRepository {
|
|||||||
return Result.success(selected);
|
return Result.success(selected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retourne l'ensemble des IDs des questions déjà posées (toutes parties confondues).
|
||||||
|
*/
|
||||||
|
public Set<String> getAskedQuestionIds() {
|
||||||
|
return new HashSet<>(prefs.getStringSet(KEY_ASKED_QUESTIONS, new HashSet<>()));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Marque une question comme étant posée.
|
* Marque une question comme étant posée.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -100,23 +100,25 @@ public class GameEngine {
|
|||||||
String result = questionText;
|
String result = questionText;
|
||||||
int playerCount = 0;
|
int playerCount = 0;
|
||||||
|
|
||||||
if (hasJ1 && hasJ2 && hasJ3 && selectedPlayers.size() >= 3) {
|
// Chaque balise est remplacée indépendamment : une question contenant
|
||||||
playerCount = 3;
|
// uniquement <J2> ou <J3> reste jouable (l'ordre J1, J2, J3 est conservé)
|
||||||
|
if (hasJ1 && selectedPlayers.size() >= 1) {
|
||||||
|
playerCount++;
|
||||||
result = result.replace("<J1>", selectedPlayers.get(0));
|
result = result.replace("<J1>", selectedPlayers.get(0));
|
||||||
|
}
|
||||||
|
if (hasJ2 && selectedPlayers.size() >= 2) {
|
||||||
|
playerCount++;
|
||||||
result = result.replace("<J2>", selectedPlayers.get(1));
|
result = result.replace("<J2>", selectedPlayers.get(1));
|
||||||
|
}
|
||||||
|
if (hasJ3 && selectedPlayers.size() >= 3) {
|
||||||
|
playerCount++;
|
||||||
result = result.replace("<J3>", selectedPlayers.get(2));
|
result = result.replace("<J3>", selectedPlayers.get(2));
|
||||||
} else if (hasJ1 && hasJ2 && selectedPlayers.size() >= 2) {
|
|
||||||
playerCount = 2;
|
|
||||||
result = result.replace("<J1>", selectedPlayers.get(0));
|
|
||||||
result = result.replace("<J2>", selectedPlayers.get(1));
|
|
||||||
} else if (hasJ1 && selectedPlayers.size() >= 1) {
|
|
||||||
playerCount = 1;
|
|
||||||
result = result.replace("<J1>", selectedPlayers.get(0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PlayerReplaceResult(result, playerCount);
|
return new PlayerReplaceResult(result, playerCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajoute le texte des gorgées à la question.
|
* Ajoute le texte des gorgées à la question.
|
||||||
*/
|
*/
|
||||||
@@ -130,9 +132,11 @@ public class GameEngine {
|
|||||||
|
|
||||||
int totalGorgees = question.getGorger() + addedGorgees;
|
int totalGorgees = question.getGorger() + addedGorgees;
|
||||||
|
|
||||||
// Accord du verbe selon le nombre de joueurs
|
// Accord du verbe selon le véritable sujet de la phrase
|
||||||
String boisVerb = (playerCount > 1) ? "boivent" : "boit";
|
boolean pluriel = isPluralSubject(questionText);
|
||||||
String distribueVerb = (playerCount > 1) ? "distribuent" : "distribue";
|
String boisVerb = pluriel ? "boivent" : "boit";
|
||||||
|
String distribueVerb = pluriel ? "distribuent" : "distribue";
|
||||||
|
|
||||||
|
|
||||||
// Déterminer si boire ou distribuer
|
// Déterminer si boire ou distribuer
|
||||||
if (question.isRecois() && question.isDistribution()) {
|
if (question.isRecois() && question.isDistribution()) {
|
||||||
@@ -152,6 +156,31 @@ public class GameEngine {
|
|||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indique si le sujet de la question est pluriel, pour accorder le verbe
|
||||||
|
* (boit/boivent, distribue/distribuent) ajouté en fin de question.
|
||||||
|
*/
|
||||||
|
private static boolean isPluralSubject(String questionText) {
|
||||||
|
String t = questionText.trim().toLowerCase();
|
||||||
|
if (t.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Sujet de groupe en tête de question : « Ceux qui… », « Les fans de… », « Tous ceux qui… »
|
||||||
|
if (t.startsWith("ceux") || t.startsWith("celles") || t.startsWith("tous ") || t.startsWith("toutes ")
|
||||||
|
|| t.startsWith("les ")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Sujet pluriel en toute fin de phrase, juste avant le verbe ajouté
|
||||||
|
String[] finsPlurielles = {"perdants", "joueurs", "joueuses", "gens", "ceux", "celles", "eux", "elles",
|
||||||
|
"abonnés", "abonnées", "végans", "célibataires", "filles", "garçons", "couples"};
|
||||||
|
for (String fin : finsPlurielles) {
|
||||||
|
if (t.endsWith(fin)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sélectionne n joueurs aléatoires uniques.
|
* Sélectionne n joueurs aléatoires uniques.
|
||||||
*/
|
*/
|
||||||
|
|||||||
+77
-18
@@ -191,6 +191,24 @@ public class BoideloClassicGameActivity extends AppCompatActivity {
|
|||||||
if (result.isSuccess()) {
|
if (result.isSuccess()) {
|
||||||
Questions q = result.getData();
|
Questions q = result.getData();
|
||||||
questions = q != null && q.getQuestions() != null ? q.getQuestions() : new ArrayList<>();
|
questions = q != null && q.getQuestions() != null ? q.getQuestions() : new ArrayList<>();
|
||||||
|
|
||||||
|
// Exclure les questions déjà posées lors des parties précédentes,
|
||||||
|
// pour qu'une question ne revienne pas tant que tout le stock n'a pas été épuisé
|
||||||
|
java.util.Set<String> askedIds = questionRepository.getAskedQuestionIds();
|
||||||
|
if (!askedIds.isEmpty()) {
|
||||||
|
List<Question> unasked = new ArrayList<>();
|
||||||
|
for (Question question : questions) {
|
||||||
|
if (!askedIds.contains(String.valueOf(question.getId()))) {
|
||||||
|
unasked.add(question);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (unasked.isEmpty()) {
|
||||||
|
// Toutes les questions ont été posées : on repart sur le stock complet
|
||||||
|
questionRepository.resetAskedQuestions();
|
||||||
|
} else {
|
||||||
|
questions = unasked;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
android.util.Log.e("BoideloClassicGame", "Erreur lors du chargement des questions: " + result.getError());
|
android.util.Log.e("BoideloClassicGame", "Erreur lors du chargement des questions: " + result.getError());
|
||||||
questions = new ArrayList<>();
|
questions = new ArrayList<>();
|
||||||
@@ -407,10 +425,19 @@ public class BoideloClassicGameActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
askedQuestionIndices.add(questionIndex);
|
askedQuestionIndices.add(questionIndex);
|
||||||
|
// Persistance : la question ne reviendra plus lors des prochaines parties
|
||||||
|
questionRepository.markQuestionAsAsked(question.getId());
|
||||||
return question;
|
return question;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si on ne trouve pas de question valide, retourner une question aléatoire
|
// Si on ne trouve pas de question valide (toutes les restantes ont <manches>),
|
||||||
|
// retourner une question non posée plutôt qu'une question au hasard
|
||||||
|
if (!availableIndices.isEmpty()) {
|
||||||
|
int fallbackIndex = availableIndices.get(random.nextInt(availableIndices.size()));
|
||||||
|
askedQuestionIndices.add(fallbackIndex);
|
||||||
|
questionRepository.markQuestionAsAsked(questions.get(fallbackIndex).getId());
|
||||||
|
return questions.get(fallbackIndex);
|
||||||
|
}
|
||||||
return questions.get(random.nextInt(questions.size()));
|
return questions.get(random.nextInt(questions.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -825,8 +852,10 @@ public class BoideloClassicGameActivity extends AppCompatActivity {
|
|||||||
question.setManchesRestantes(nbaleatoiremanches);
|
question.setManchesRestantes(nbaleatoiremanches);
|
||||||
|
|
||||||
// Définir le message de fin de défi
|
// Définir le message de fin de défi
|
||||||
String stopMessage = "Fin de défi!\n" + questionText;
|
// Message de fin de défi : texte d'arrêt dédié s'il existe, sinon rappel de la consigne
|
||||||
question.setArretMessageManche(stopMessage);
|
String arret = question.getArret();
|
||||||
|
String stopMessage = "Fin de défi !\n" + (arret != null && !arret.trim().isEmpty() ? arret : questionText);
|
||||||
|
|
||||||
|
|
||||||
questionsAvecManches.add(question);
|
questionsAvecManches.add(question);
|
||||||
|
|
||||||
@@ -873,24 +902,25 @@ public class BoideloClassicGameActivity extends AppCompatActivity {
|
|||||||
if (isJoueurs1 || isJoueurs2 || isJoueurs3) {
|
if (isJoueurs1 || isJoueurs2 || isJoueurs3) {
|
||||||
List<String> aleatoirejoueurs = TroisJoueurAleatoire();
|
List<String> aleatoirejoueurs = TroisJoueurAleatoire();
|
||||||
|
|
||||||
if (isJoueurs1 && isJoueurs2 && isJoueurs3 && aleatoirejoueurs.size() >= RANDOM_PLAYER_SELECTION_COUNT) {
|
// Chaque balise est remplacée indépendamment : une question contenant
|
||||||
playerCount = 3;
|
// uniquement <J2> ou <J3> reste jouable (l'ordre J1, J2, J3 est conservé)
|
||||||
|
if (isJoueurs1 && aleatoirejoueurs.size() >= ONE_PLAYER) {
|
||||||
|
playerCount++;
|
||||||
j1Name = aleatoirejoueurs.get(0);
|
j1Name = aleatoirejoueurs.get(0);
|
||||||
questionText = questionText.replace("<J1>", ErrorHandler.escapeHtml(j1Name));
|
questionText = questionText.replace("<J1>", ErrorHandler.escapeHtml(j1Name));
|
||||||
|
}
|
||||||
|
if (isJoueurs2 && aleatoirejoueurs.size() >= TWO_PLAYERS) {
|
||||||
|
playerCount++;
|
||||||
questionText = questionText.replace("<J2>", ErrorHandler.escapeHtml(aleatoirejoueurs.get(1)));
|
questionText = questionText.replace("<J2>", ErrorHandler.escapeHtml(aleatoirejoueurs.get(1)));
|
||||||
|
}
|
||||||
|
if (isJoueurs3 && aleatoirejoueurs.size() >= RANDOM_PLAYER_SELECTION_COUNT) {
|
||||||
|
playerCount++;
|
||||||
questionText = questionText.replace("<J3>", ErrorHandler.escapeHtml(aleatoirejoueurs.get(2)));
|
questionText = questionText.replace("<J3>", ErrorHandler.escapeHtml(aleatoirejoueurs.get(2)));
|
||||||
} else if (isJoueurs1 && isJoueurs2 && aleatoirejoueurs.size() >= TWO_PLAYERS) {
|
|
||||||
playerCount = 2;
|
|
||||||
j1Name = aleatoirejoueurs.get(0);
|
|
||||||
questionText = questionText.replace("<J1>", ErrorHandler.escapeHtml(j1Name));
|
|
||||||
questionText = questionText.replace("<J2>", ErrorHandler.escapeHtml(aleatoirejoueurs.get(1)));
|
|
||||||
} else if (isJoueurs1 && aleatoirejoueurs.size() >= ONE_PLAYER) {
|
|
||||||
playerCount = 1;
|
|
||||||
j1Name = aleatoirejoueurs.get(0);
|
|
||||||
questionText = questionText.replace("<J1>", ErrorHandler.escapeHtml(j1Name));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return new PlayerSelectionResult(questionText, j1Name, playerCount);
|
return new PlayerSelectionResult(questionText, j1Name, playerCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -949,15 +979,19 @@ public class BoideloClassicGameActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Détermine l'action (boit/boivent ou distribue/distribuent) selon le nombre de joueurs
|
/**
|
||||||
|
* Détermine l'action (boit/boivent ou distribue/distribuent) selon le véritable
|
||||||
|
* sujet de la phrase, pour un accord grammatical correct.
|
||||||
*/
|
*/
|
||||||
private ActionChoiceResult determineActionChoice(Question question, String questionText, int playerCount) {
|
private ActionChoiceResult determineActionChoice(Question question, String questionText, int playerCount) {
|
||||||
boolean isBois = false;
|
boolean isBois = false;
|
||||||
boolean isDistribue = false;
|
boolean isDistribue = false;
|
||||||
|
|
||||||
// Accord du verbe selon le nombre de joueurs
|
// Accord du verbe selon le sujet réel de la question
|
||||||
String boisVerb = (playerCount > 1) ? "boivent" : "boit";
|
boolean pluriel = isPluralSubject(questionText);
|
||||||
String distribueVerb = (playerCount > 1) ? "distribuent" : "distribue";
|
String boisVerb = pluriel ? "boivent" : "boit";
|
||||||
|
String distribueVerb = pluriel ? "distribuent" : "distribue";
|
||||||
|
|
||||||
|
|
||||||
if (question.isRecois() && question.isDistribution()) {
|
if (question.isRecois() && question.isDistribution()) {
|
||||||
boolean rand = random.nextBoolean();
|
boolean rand = random.nextBoolean();
|
||||||
@@ -979,6 +1013,31 @@ public class BoideloClassicGameActivity extends AppCompatActivity {
|
|||||||
return new ActionChoiceResult(questionText, isBois, isDistribue);
|
return new ActionChoiceResult(questionText, isBois, isDistribue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indique si le sujet de la question est pluriel, pour accorder le verbe
|
||||||
|
* (boit/boivent, distribue/distribuent) ajouté en fin de question.
|
||||||
|
*/
|
||||||
|
private boolean isPluralSubject(String questionText) {
|
||||||
|
String t = questionText.trim().toLowerCase();
|
||||||
|
if (t.isEmpty()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Sujet de groupe en tête de question : « Ceux qui… », « Les fans de… », « Tous ceux qui… »
|
||||||
|
if (t.startsWith("ceux") || t.startsWith("celles") || t.startsWith("tous ") || t.startsWith("toutes ")
|
||||||
|
|| t.startsWith("les ")) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
// Sujet pluriel en toute fin de phrase, juste avant le verbe ajouté
|
||||||
|
String[] finsPlurielles = {"perdants", "joueurs", "joueuses", "gens", "ceux", "celles", "eux", "elles",
|
||||||
|
"abonnés", "abonnées", "végans", "célibataires", "filles", "garçons", "couples"};
|
||||||
|
for (String fin : finsPlurielles) {
|
||||||
|
if (t.endsWith(fin)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajoute le nombre de gorgées au texte de la question
|
* Ajoute le nombre de gorgées au texte de la question
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user