diff --git a/app/app.pro b/app/app.pro index 57dc881..d9c3ce9 100644 --- a/app/app.pro +++ b/app/app.pro @@ -13,10 +13,14 @@ SOURCES = main.cpp \ regismodule.cpp \ sparrowmodule.cpp \ vocab.cpp \ - poilaumodule.cpp + poilaumodule.cpp \ + fourasmodule.cpp \ + riddles.cpp HEADERS += \ regismodule.h \ sparrowmodule.h \ vocab.h \ - poilaumodule.h + poilaumodule.h \ + fourasmodule.h \ + riddles.h diff --git a/app/fourasmodule.cpp b/app/fourasmodule.cpp new file mode 100644 index 0000000..d7c0669 --- /dev/null +++ b/app/fourasmodule.cpp @@ -0,0 +1,41 @@ +#include "fourasmodule.h" +#include "message.h" +#include "riddles.h" +#include + +FourasModule::FourasModule() : current(-1) +{ + riddles = new Riddles("../res/fouras.txt", "../res/fourasAnswers.txt"); + std::srand(time(NULL)); +} + +bool FourasModule::messageHandler(Message msg) +{ + if(msg.command.compare(QString("PRIVMSG"), Qt::CaseInsensitive) != 0 || !msg.target.contains(getChan())) + return false; + + if(msg.args.compare("!fouras") == 0 && riddles->getNbRiddles() != 0) + { + current = rand() % riddles->getNbRiddles(); + QStringList riddle = riddles->getRiddle(current); + answer = ""; + for(QString line : riddle) + answer.append(say(line)); + return true; + } + + if(current != -1 && msg.args.contains(riddles->getAnswer(current))) + { + answer = say(QString("Bravo %1 ! la réponse était bien : %2").arg(msg.nick).arg(riddles->getAnswer(current))); + current = -1; + return true; + } + + return false; +} + +QString FourasModule::getName() +{ + return "fouras"; +} + diff --git a/app/fourasmodule.h b/app/fourasmodule.h new file mode 100644 index 0000000..50a1312 --- /dev/null +++ b/app/fourasmodule.h @@ -0,0 +1,20 @@ +#ifndef FOURASMODULE_H +#define FOURASMODULE_H + +#include "module.h" + +class Riddles; + +class FourasModule : public Module +{ + int current; + Riddles* riddles; + +public: + FourasModule(); + + virtual bool messageHandler(Message msg); + virtual QString getName(); +}; + +#endif // FOURASMODULE_H diff --git a/app/poilaumodule.cpp b/app/poilaumodule.cpp index 967eeb3..0ff41e5 100644 --- a/app/poilaumodule.cpp +++ b/app/poilaumodule.cpp @@ -4,7 +4,7 @@ #include #define VOY_NONE -1 -enum{VOY_A, VOY_E, VOY_I, VOY_O, VOY_U, VOY_ET, VOY_AI, VOY_OU, VOY_IN, VOY_ON, VOY_OI, VOY_EN, VOY_OUILLE}; +enum{VOY_A, VOY_E, VOY_I, VOY_O, VOY_U, VOY_ET, VOY_AI, VOY_OU, VOY_IN, VOY_ON, VOY_OI, VOY_EN, VOY_OUILLE, VOY_US}; bool PoilAuModule::messageHandler(Message msg) { @@ -15,13 +15,20 @@ bool PoilAuModule::messageHandler(Message msg) int voy = VOY_NONE; QString truncated = msg.args; - while(true) + if(truncated.endsWith("+", Qt::CaseInsensitive)) { - if(truncated.size() == 1 || truncated.at(truncated.size()-1).isNumber()) - return false; - if(truncated.at(truncated.size()-1).isLetter() && truncated.at(truncated.size()-2).isLetter()) - break; - truncated.chop(1); + voy = VOY_US; + } + else + { + while(true) + { + if(truncated.size() == 1 || truncated.at(truncated.size()-1).isNumber()) + return false; + if(truncated.at(truncated.size()-1).isLetter() && truncated.at(truncated.size()-2).isLetter()) + break; + truncated.chop(1); + } } if(truncated.endsWith("eu", Qt::CaseInsensitive)) @@ -87,6 +94,9 @@ bool PoilAuModule::messageHandler(Message msg) if(truncated.endsWith("ouille", Qt::CaseInsensitive)) voy = VOY_OUILLE; + if(truncated.endsWith("us", Qt::CaseInsensitive)) + voy = VOY_US; + if(voy == VOY_NONE) return false; @@ -107,6 +117,9 @@ bool PoilAuModule::messageHandler(Message msg) case VOY_U : answer = say("Poil au cul."); break; + case VOY_US : + answer = say("Poil à l'anus."); + break; case VOY_ET : answer = say("Poil au nez."); break; diff --git a/app/riddles.cpp b/app/riddles.cpp new file mode 100644 index 0000000..105e6da --- /dev/null +++ b/app/riddles.cpp @@ -0,0 +1,81 @@ +#include "riddles.h" +#include +#include +#include + +Riddles::Riddles(QString filenameRiddles, QString filenameAnswers) +{ + QFile fileRiddles(filenameRiddles); + if(!fileRiddles.exists()) + std::cerr << "can't find " << filenameRiddles.toStdString() << std::endl; + else if(fileRiddles.open(QIODevice::ReadOnly | QIODevice::Text)) + { + std::cerr << "file is open" << std::endl; + + QTextStream stream(&fileRiddles); + stream.setCodec("UTF-8"); + + int current = 0; + riddles.push_back(QStringList()); + for(QString line = stream.readLine(512); + line != QString::null; + line = stream.readLine(512)) + { + if(line.isEmpty()) + { + riddles.push_back(QStringList()); + ++current; + } + else + { + riddles[current].push_back(line); + } + } + fileRiddles.close(); + } + + QFile fileAnswers(filenameAnswers); + if(!fileAnswers.exists()) + std::cerr << "can't find " << filenameAnswers.toStdString() << std::endl; + else if(fileAnswers.open(QIODevice::ReadOnly | QIODevice::Text)) + { + std::cerr << "file is open" << std::endl; + + QTextStream stream(&fileAnswers); + stream.setCodec("UTF-8"); + + for(QString line = stream.readLine(512); + line != QString::null; + line = stream.readLine(512)) + { + if(!line.isEmpty()) + { + answers.push_back(line); + } + } + fileAnswers.close(); + } + + count = std::min(riddles.size(), answers.size()); +} + +QStringList Riddles::getRiddle(int i) +{ + if(i >= 0 && i < count) + return riddles[i]; + else + return QStringList(); +} + +QString Riddles::getAnswer(int i) +{ + if(i >= 0 && i < count) + return answers[i]; + else + return QString(); +} + +int Riddles::getNbRiddles() +{ + return count; +} diff --git a/app/riddles.h b/app/riddles.h new file mode 100644 index 0000000..820d801 --- /dev/null +++ b/app/riddles.h @@ -0,0 +1,21 @@ +#ifndef RIDDLES_H +#define RIDDLES_H + +#include +#include + +class Riddles +{ + std::vector riddles; + std::vector answers; + int count; + +public: + Riddles(QString filenameRiddles, QString filenameAnswers); + + QStringList getRiddle(int i); + QString getAnswer(int i); + int getNbRiddles(); +}; + +#endif // RIDDLES_H diff --git a/res/fouras.txt b/res/fouras.txt new file mode 100644 index 0000000..e5894aa --- /dev/null +++ b/res/fouras.txt @@ -0,0 +1,457 @@ +Pas très aimé des citadins, +Enfants et vieux aiment l’attirer ; +Il peuple pourtant toits et jardins, +Des escrocs, il est le jouet. + +Mûr à point, l’été il est fauché ; +Fauché, on l’est de n’en point avoir. + +C’est un petit air léger qui nous ravit l’été. +Sans « R », elle est glaciale, +Car plutôt hivernale. + +On la tourne pour avancer ; +Mais quand on l’est, cela signifie « être branché ». + +C’est la partie intégrante d’un pont ; +Le rendre, c’est en avoir ras le bol ; +Contre les taches, c’est une protection. + +Lorsqu’il n’est pas industriel, on ne manque pas de l’admirer. +Propre, il devient une chaussée. +Sur le Web, on peut le consulter. + +On peut la visiter ou bien la savourer ; +Mais ce projectile léger peut-être un vrai danger. + +Elle est parfois artificielle ou bien encore naturelle. +Mais en l’accomplissant, on prend des risques importants. + +Affichant de hauts bois, il ne craint pas le froid. +Lorsqu’on le prend, c’est pour aller plus loin. + +Redoutable machine de guerre, des murs lui cédèrent naguère. +Généralement, il blatère ; +C’est aussi un signe de naissance. + +Il peut être rond, carré et bien moulé. +Servi au marché, il est découpé. +Ça ne vaut pas le coup d’en faire un, surtout pour de tout petits riens. + +Le vinaigre n’est pas conseillé pour l’attraper ; +Elle est évoquée quand la cible est touchée. +Le curieux aimerait parfois en être une. + +Il a une arête et deux ailes de chaque côté. +Parfois comparé à une trompette, qui n’est pas forcément bouchée. + +Il est bon quand il est tôt. +Quand il est tôt, il est petit. +Mais aussi il peut être beau. +Et quand il est tard, il est fini. + +La catastrophe vous a frôlé si près de vous il est passé. +Et personne n’est ménagé quand rouge il est tiré. + +Pour un secret, on peut l’acheter. +On peut se taire et le garder. +Dans un studio, avant de filmer, c’est toujours lui qui est demandé. + +Elle nous tire les larmes des yeux sans que nous éprouvions de chagrin. +Elle suit lentement son chemin qui la mène toujours vers les cieux. +On dit qu’il n’y en a pas sans feu. + +Parfois nouvelle, parfois pleine, +Sa couleur n’est pas celle de l’ébène. +Des rêveurs elle est la retraite favorite, +C’est le pays des Sélénites. + +Si le vent le pousse et l’excite, +Il dévore tout ce qu’il boit. +Son appétit est sans limite. +Mais s’il boit trop, il se noie. + +Toujours le premier, +Jamais le dernier, +Rien sans lui n’est jamais fini, +Car rien ne peut commencer sans lui. + +Quand le jour se lève, il est là, +Mais c’est à la fin qu’on le pose. +Il exprime aussi un état +Et aide à préciser les choses. + +C’est un accessoire très utile +Qui est petit et attachant. +Et s’il ne tient que par un fil, +Il se fixe aussi en pressant. + +D’un être ou d’une chose, elle est ce que l’on voit. +Et si par une on peut être trompé, +Il en est d’autres que l’on peut sauver. + +Cette donnée que l’on voit changer +Tout au long de l’année, +Peut être fixée pour se rencontrer. + +D’une arme à feu il peut être une pièce. +Et nos amis sont nombreux Issus de son espèce. + +Douceur d’une ouvrière obscure et sans grade, +Friandise princière, +Régal de plantigrade. + +S’il vous voit vieillir sans jamais rien vous dire, +C’est parce qu’il est poli. +Alors réfléchissez, +Dites-moi de qui il s’agit. + +Il aime à être montré et suivi, +Et l’imiter est toujours bon. +Il peut servir de leçon +Et de mise en garde aussi. + +Grâce à lui, on peut se nourrir ; +On peut se fleurir aussi. +Public, à tous il est ouvert, +Secret, il l’est pour ceux qui aiment se taire. + +Un requin peut nous y faire penser, +Un champion peut l’utiliser, +Mais il n’est alors pas pareil à celui que l’on a dans l’oreille. + +On peut y mettre ses papiers, +Son argent ou bien ses clés. +C’est aussi une façon de se coiffer, +Ou bien encore un fruit à déguster. + +Elle communique les vibrations qui font chanter le violon. +On la cherche par amour, +Mais on doit la rendre un jour. + +Si en amour ils sont appréciés, +Les gros, eux, sont à éviter. +Les auteurs en ont des fameux, +Et certains servent pour des jeux. + +Autrefois, le maître en frappait le cancre, qui la redoutait. +Utilisée par le dessinateur, +Elle doit être suivie par les joueurs. + +Habitués des bibliothèques +Ou danseurs, +Leur avarice est légendaire. +Au moindre grain, Ils quittent le navire. + +Ni Dieu ni homme, +Sa patience est reconnue. +Quand il est passé, la conversation continue. + +On le demande, +On le poursuit, +On le perd, +On le passe. + +Quand il est cloche, il ne sonne pas. +Quand il est melon, on ne le mange pas. + +Au XVIIe siècle, elle était magique. +Au XVIIIe, elle devint gibet. +Aujourd’hui elle est rouge pour le dernier. + +A la mairie pour les mariés, +A la barre pour la vérité, +Sur la piste pour le passer. + +Il est aimé de la tête aux pieds, +Mais ses tours sont détestés. + +Il a jardin et sports malgré son renom. +Époque des veillées, +Au nord au sud, il a un nom. + +En noir ou en couleur, +Point besoin de docteur car s’il a bonne mine +On peut suivre sa trace. + +Son cheval n’est point sellé, +Mais son plan toujours dressé. +Perdue ou gagnée, +Elle est toujours livrée. + +Appliqué d’une main, il marque l’offense. +Activé des deux mains, de la flamme il conduit la danse. + +Entêté par tradition, +Son bonnet est humiliation. +Il est aussi grison, +Pour avoir du son. + +Son coup n’est pas fatal, mais souvent musical. +Elle est cuite et moulée +Pour être mieux dégustée. + +Malgré ce qui se dit, Le canard le redoute aussi. +Malgré son nom, il brûle aussi +Et les liquides il solidifie. + +Délicieuse, elle est croquée entre amis. +Dangereuse, elle est lancée aux ennemis. + +Encore fléau à notre époque, +Par le loup souvent on l’évoque. +On peut hélas en souffrir +Parfois au point d’en mourir. + +Bien mal gardé est le secret de ce jouet. +Mener sa vie, n’est qu’une facétie. + +Instrument du bourreau, +Elle accompagnait le billot. +Si ne la laisse point en terre, on se prépare à la guerre. + +Née d’un lapin ou d’un agneau, +Elle tient toujours chaud. +Qu’elle soit brute ou peignée +Elle peut venir des Pyrénées. + +Quand on joue, il faut la rattraper. +Quand on la tire, il faut l’éviter. + +Ses formules sont connues, +Celle du cœur est peu pratiquée. +Apanage des hommes civilisés, +Elle est encore bien méconnue. + +Quand on est dedans, on ne sait plus où l’on est. +Il n’est fait que d’eau +Mais peut devenir un impénétrable rideau. + +Signe habituel de réconciliation, +Pour Judas il fut signe de trahison. +On le donne, on le prend, +On le reçoit, on le rend. + +Ce Génois exilé, ne vit pas les Indes convoitées. +Pour les yeux d’une Isabelle, +Il découvrit des terres nouvelles. + +Il est le point de départ +Sans mener nulle part. +Terreur de l’écolier +Surtout s’il est pointé. + +Malgré sa douceur, sa patte n’est pas sans douleur. +Jouer dessus est assurance d’être vainqueur. + +Souvent inhabité, +Il est inutile d’y parler. +Mais hélas, sans le désirer, on doit parfois le traverser. + +Oiseau des champs +Au cri strident, +Il est auteur anonyme de lettres pousse-au-crime. + +Il est hier, +Simple ou composé +Et peut remonter à l’Antiquité +Car, sans lui, demain ne signifie rien. + +Il est toujours à l’est +Et ne passera jamais à l’ouest. +Il assiste à un lever +Et jamais à un coucher. + +Chacun a la sienne que nul ne doit copier, +Car l’imiter peut nous faire emprisonner. +Fameuse et attestée, elle est collectionnée +Et pourtant, une simple croix peut la remplacer. + +Elle porte manteau et tablier +Et se cache sous son rideau pour ronfler. +Une fois par an elle est visitée +Par un barbu au dos chargé. + +En altitude, c’est une dépression +Et un passage que nous empruntons. +Pratique même s’il est faux, +Blanc, il se trouve dans un bureau. + +Celui qui le possède est bien informé, +Malheureusement il est parfois crevé. +Celui de l’orgue on fait résonner +Et bienheureux il rend le jardinier. + +En musique c’est une note qui fait honte. +Il désigne une nuance de bleu. +Quand il sucre le café, il fait des heureux ; +C’est en V qu’il vole pour migrer. + +À peine fini, il se perd dans le passé +Et ne peut être ajourné. +Demain, ce ne sera plus qu’hier, +Hier, c’était simplement demain. + +Du début au bout de l’an, +On le garnit de l’histoire de notre vie, +Affaires, amours, jours et nuits, +Tout s’y inscrit précisément. + +Elle révèle tout de vous, +Que vous soyez génial ou fou. +Parfois anglaise ou bien gothique, +Celle des Étrusques reste hermétique. + +Souvent créées par des religieux, +Elles peuvent être scientifiques, +Officielles ou diplomatiques. +Elles paraissent impossibles sur un magnétophone. + +Vieux zinc tout bricolé +Ou oiseau de grande ponctualité, +C’est aussi une façon de se héler. + +Il fait sauter les courageux, +Et tomber les chaussettes quand il est lâche. +Arme des potaches, +Des petites filles, il tient les cheveux. + +C’est un étalon qui ne galope pas, +Un âge bienheureux et plein d’éclat, +Et s’il se laisse facilement aplatir, +On ne prend pas ses feuilles pour écrire. + +Je suis le quotidien compagnon du menuisier, +Mais je préfère la menthe comme compagne de mes soirées. + +D'avril c'est une farce, +De mer ou d'eau douce, +Il est excellent pour la santé, +Il est parfois volant. + +Intime on lui confie nos secrets, +Interne pour les collaborateurs de l'entreprise, +On le lit, on l'écoute +Ou le suit chaque jour . + +Elle est d'amour, +C'est une tomate, +Ou une friandise, +On y tombe parfois suite à une émotion forte, +Qualifie souvent un être niais ou crédule. + +Déposition officielle effectuée à la barre, +Il est parfois d'amitié. + +Elle chagrine le matin, +Mais le soir redonne espoir. + +Qu'elle soit de famille ou d'idée, il ne faut jamais la provoquer +Car si chacun peut la chercher, +Nul ne sait comment l'arrêter. + +En berceau ou surbaissée, +celle du ciel n'est pas celle du palais. + +Il est ironique quand il est jaune, +Tranquille quand on y habite. +Il nous arrive même d'en boucher un. + +Menacé, son instinct nous pousse, +On veille à celle des documents ; +Elle a ses méthodes et ses moyens. + +Fruit il nous ravi, +Amoureuse elle peut être violente, Selon Mathieu elle nous ferait aimer Bach. + +A minuit on la célèbre, +Basse! elle ne fait rien pour qu'on l'entende. + +On en use pour persuader, +En accorder, c'est faire confiance. + +Elles font le tour des continents. +On les gravit difficilement, Mais se les tenir, c'est quand même beaucoup rire. + +Qu'ils soient noirs, gris ou bien blancs, +Il n'y en a pas deux semblables, +Et restent pour nous impalpables. + +Dans la cuisine je suis utile, +Dans la nature, redouté. +Mon épaule le porte, +Mais si je change de coté... d'avis également j'aurais changé. + +Il est bon quand il est tôt. +Quand il est tôt, il est petit. +Mais aussi il peut être beau. +Et quand il est tard, il est fini. + +L' émotion parfois nous le fait ressentir, +Le froid parfois de lui nous en fait parcourir. +Seul l'amour nous fait vivre le grand. + +Quand on y est , on ne sait ou on est. + +Je suis à la fois maternelle et paternelle, +Quand je suis nerveuse, je n'en suis pas excitée pour autant, +Au chemin de la selle, parfois je contribue. + +D'air, je sais isoler, +Pneumatique cela n'est pas pour autant que je roule, +Quand le sommeil gagne, je suis le bien venu. + +Quand je suis longue je suis favori, +D'éléphant me fait une belle jambe, +A quatre, je n'en suis pas plus rapide. + +Unique, je domine! +A ma façon est le reflet de mon opinion... +Mais c'est fleurie que j'exprime toute ma grâce ! + +Au féminin l'écrivain me redoute. +Peu coloré je peux apporter l'ivresse... + +Il m'arrive d'être glissant. +Mais de sport je retrouve mon adhérence. +Accidenté je deviens un tout ! + +En étant sur ses gardes, on y veille. + +En l'air, je suis légère. +Quand je promets on me trouve belle. +Face au silence, je suis d'argent. + +Sachant voler, je n'en suis pas moins bon nageur, +Sur l'échiquier je ne manque pas de raison. + +Je peux être humide ou pas, +Les hommes prennent plaisir à me regarder, +Les gaulois se méfient de moi. + +Plus étroit chez les célibataires que chez les mariées, +Lieu de punition pour certains, +Mort, sur moi tu reposes. + +J'absorbe à fort exposant, +J'existe aussi pour le corps, +On me trouve dans les pièces d’eau. + +Je n'existe pas et pourtant on me nomme, +De l' heure dépends mon influence, +J'aime à imiter vos pas au gré du soleil. + +D' air, je peux partir sans prévenir. +De joie, j'offre aux hommes un plaisir intense mais éphémère..! +De ferme, je suis vouée à servir ses mêmes hommes. + +Anglaise, je change tous les jours. +A m'ouvrir, parfois on se cultive. + +Sombre, j'éclairci ! +Doublé, je ne manque pas de tranchant ! +A trop me porter aux lèvres, survient l'enivrement ! + +Je suis parfois lourde à porter, +De lorraine j ai double traverse, +Un chemin je suis pour le croyant. \ No newline at end of file diff --git a/res/fourasAnswers.txt b/res/fourasAnswers.txt new file mode 100644 index 0000000..b245f76 --- /dev/null +++ b/res/fourasAnswers.txt @@ -0,0 +1,112 @@ +pigeon. +blé. +brise. +page. +tablier. +site. +grenade. +cascade. +élan. +bélier. +fromage. +mouche. +nez. +matin. +boulet. +silence. +fumée. +lune. +feu. +début. +point. +bouton. +apparence. +date. +chien. +miel. +miroir. +exemple. +jardin. +marteau. +banane. +âme. +mots. +règle. +rats. +ange. +chemin. +chapeau. +lanterne. +témoin. +cochon. +hiver. +crayon. +bataille. +soufflet. +âne. +baguette. +froid. +grenade. +faim. +Polichinelle. +hache. +laine. +balle. +politesse. +brouillard. +baiser. +Christophe Colomb. +zéro. +velours. +désert. +corbeau. +passé. +orient. +signature. +cheminée. +col. +tuyaux. +canard. +Aujourd'hui. +agenda. +écriture. +missions. +Coucou. +élastique. +or. +thé. +poisson. +journal. +pomme. +témoignage. +araignée. +querelle. +voute. +coin. +conservation. +passion. +messe. +crédit. +côtes. +nuages. +fusil. +jour. +frisson. +noir. +fibre. +matelas. +patte. +pensée. +Blanc. +terrain. +grain. +parole. +fou. +ciel. +lit. +éponge. +ombre. +fille. +livre. +coupe. +croix. \ No newline at end of file