Summary: | "cannot win this game" message just after start of mod3 game | ||
---|---|---|---|
Product: | [Applications] kpat | Reporter: | Miroslav Maiksnar <mixi> |
Component: | general | Assignee: | Stephan Kulow <coolo> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | inge |
Priority: | NOR | ||
Version: | 2.2.2 | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | The file linked in the last comment |
Description
Miroslav Maiksnar
2006-07-31 14:39:38 UTC
It would be great if you could have taken a screenshot. It's kind of difficult to search for which types of moves that it forgets when doing the "cannot win" calculations. Here's actual screenshot of the game: http://download.mixi.cz/mod3-bug.png Sorry for czech localization, dialog window is just saying that you cannot win this game (showed up imediately after start of game #458119981). Created attachment 17390 [details]
The file linked in the last comment
I can see that it forgets to check for aces in the row below the playing field. SVN commit 581887 by ingwa: Fix bug 131587: "cannot win this game" message just after start of mod3 game - Check for aces in the store and not only for empty places. BUGS: 131587 M +6 -0 CHANGES M +3 -2 mod3.cpp --- branches/KDE/3.5/kdegames/kpat/CHANGES #581886:581887 @@ -1,5 +1,11 @@ 2005-06-25 Inge Wallin <inge@lysator.liu.se> + Fix bug 131587: "cannot win this game" message just after + start of mod3 game + - Check for ace at the store in addition to empty + +2005-06-25 Inge Wallin <inge@lysator.liu.se> + Code cleaning - Rename Card::Value --> Card::Rank - Rename Card::Suites --> Card::Suit --- branches/KDE/3.5/kdegames/kpat/mod3.cpp #581886:581887 @@ -187,9 +187,10 @@ bool nextTest=false; - // If there is an empty stack below, the game is not lost. + // If there is an empty stack or an ace below, the game is not lost. for (col=0; col < 8; col++){ - if (stack[3][col]->isEmpty()) + if (stack[3][col]->isEmpty() + || stack[3][col]->at(0)->rank() == Card::Ace) return false; } SVN commit 581889 by ingwa: Fix bug 131587: "cannot win this game" message just after start of mod3 game Forward port of fix for 3.5 branch. CCBUGS: 131587 M +6 -0 CHANGES M +9 -3 mod3.cpp --- trunk/KDE/kdegames/kpat/CHANGES #581888:581889 @@ -1,5 +1,11 @@ 2005-06-25 Inge Wallin <inge@lysator.liu.se> + Fix bug 131587: "cannot win this game" message just after + start of mod3 game + - Check for ace at the store in addition to empty + +2005-06-25 Inge Wallin <inge@lysator.liu.se> + Code cleaning - Rename Card::Value --> Card::Rank - Rename Card::Suites --> Card::Suit --- trunk/KDE/kdegames/kpat/mod3.cpp #581888:581889 @@ -73,6 +73,7 @@ bool Mod3::checkAdd( int checkIndex, const Pile *c1, const CardList& cl) const { // kDebug(11111) << "checkAdd " << checkIndex << " " << c1->top()->name() << " " << c1->index() << " " << c1->index() / 10 << endl; + if (checkIndex == 0) { Card *c2 = cl.first(); @@ -95,11 +96,15 @@ kDebug(11111) << "+1\n"; return true; + } else if (checkIndex == 1) { return c1->isEmpty(); + } else if (checkIndex == 2) { return cl.first()->rank() == Card::Ace; - } else return false; + + } else + return false; } @@ -187,9 +192,10 @@ bool nextTest=false; - // If there is an empty stack below, the game is not lost. + // If there is an empty stack or an ace below, the game is not lost. for (col=0; col < 8; col++){ - if (stack[3][col]->isEmpty()) + if (stack[3][col]->isEmpty() + || stack[3][col]->at(0)->rank() == Card::Ace) return false; } |