fixed fouras module revealing too many characters when asked for a clue
This commit is contained in:
parent
d78d63f0de
commit
5d5a7e862b
@ -53,21 +53,27 @@ bool FourasModule::messageHandler(Message msg)
|
|||||||
if(current != -1)
|
if(current != -1)
|
||||||
{
|
{
|
||||||
QString str = riddles->getAnswer(current);
|
QString str = riddles->getAnswer(current);
|
||||||
std::srand(qHash(str));
|
|
||||||
|
// prepare the clue string
|
||||||
QString finalString = "_";
|
QString finalString = "_";
|
||||||
for(int i=0; i<str.size() - 1; ++i)
|
for(int i=0; i<str.size() - 1; ++i)
|
||||||
finalString.append(" _");
|
finalString.append(" _");
|
||||||
|
|
||||||
|
// initialize the rand function with the hash of the answer so the rand() function always reveal the characters in the same order
|
||||||
|
std::srand(qHash(str));
|
||||||
int nbRevealed = 0;
|
int nbRevealed = 0;
|
||||||
for(int i=0; i<nbClues; ++i)
|
for(int i=0; i<nbClues; ++i)
|
||||||
{
|
{
|
||||||
|
// find a character to reveal
|
||||||
int id = std::rand()%str.size();
|
int id = std::rand()%str.size();
|
||||||
if(finalString[id*2] == QChar('_'))
|
while(finalString[id*2] != QChar('_'))
|
||||||
{
|
id = std::rand()%str.size();
|
||||||
++nbRevealed;
|
|
||||||
finalString[id*2] = str[id];
|
// reveal it
|
||||||
}
|
++nbRevealed;
|
||||||
else
|
finalString[id*2] = str[id];
|
||||||
++nbClues;
|
|
||||||
|
// if too many letters are revealed, the players have lost the game
|
||||||
if(nbRevealed == str.size())
|
if(nbRevealed == str.size())
|
||||||
{
|
{
|
||||||
answer = say(QString("%1 - Perdu ! La réponse était : %2").arg(current).arg(str));
|
answer = say(QString("%1 - Perdu ! La réponse était : %2").arg(current).arg(str));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user