summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/games/zsame/StoneField.cpp4
-rw-r--r--noncore/games/zsame/StoneField.h3
-rw-r--r--noncore/games/zsame/StoneWidget.cpp4
-rw-r--r--noncore/games/zsame/StoneWidget.h1
-rw-r--r--noncore/games/zsame/ZSameWidget.cpp1
5 files changed, 12 insertions, 1 deletions
diff --git a/noncore/games/zsame/StoneField.cpp b/noncore/games/zsame/StoneField.cpp
index 49d8eca..56e9dc5 100644
--- a/noncore/games/zsame/StoneField.cpp
+++ b/noncore/games/zsame/StoneField.cpp
@@ -347,16 +347,20 @@ StoneField::isGameover() const {
// kdDebug() << "<--gameover" << endl;
return (bool)gameover;
}
bool StoneField::gotBonus() const {
return m_gotBonus;
}
+void StoneField::clearBonus() {
+ m_gotBonus = false;
+}
+
int
StoneField::getBoard() const {
return board;
}
int
StoneField::getScore() const {
return score;
diff --git a/noncore/games/zsame/StoneField.h b/noncore/games/zsame/StoneField.h
index 80be73a..d32d78d 100644
--- a/noncore/games/zsame/StoneField.h
+++ b/noncore/games/zsame/StoneField.h
@@ -86,18 +86,19 @@ public:
int mark(int x,int y,bool force=false);
void unmark();
int remove(int x,int y,bool force=false);
int undo(int count=1);
- bool isGameover() const;
+ bool isGameover() const;
bool gotBonus() const;
+ void clearBonus();
bool undoPossible() const;
int getBoard() const;
int getScore() const;
int getColors() const;
int getMarked() const;
protected:
int getFieldSize() const;
diff --git a/noncore/games/zsame/StoneWidget.cpp b/noncore/games/zsame/StoneWidget.cpp
index 646fc9c..5dd0252 100644
--- a/noncore/games/zsame/StoneWidget.cpp
+++ b/noncore/games/zsame/StoneWidget.cpp
@@ -180,16 +180,20 @@ StoneWidget::undo(int count) {
bool StoneWidget::isGameover() {
return stonefield.isGameover();
}
bool StoneWidget::hasBonus() {
return stonefield.gotBonus(); // don't ask me why the names differ... ;-| [hlm]
}
+void StoneWidget::clearBonus() {
+ stonefield.clearBonus();
+}
+
bool StoneWidget::isOriginalBoard() {
return !modified;
}
void StoneWidget::readProperties(Config *) {
/* Q_ASSERT(conf);
history.clear();
diff --git a/noncore/games/zsame/StoneWidget.h b/noncore/games/zsame/StoneWidget.h
index 9cd7e10..89a8afc 100644
--- a/noncore/games/zsame/StoneWidget.h
+++ b/noncore/games/zsame/StoneWidget.h
@@ -66,16 +66,17 @@ public:
void reset();
void unmark();
int undo(int count=1);
// test for game end
bool isGameover();
// if isGameover(): finished with bonus?
bool hasBonus();
+ void clearBonus();
// test for unchanged start position
bool isOriginalBoard();
virtual void readProperties(Config *conf);
virtual void saveProperties(Config *conf);
protected:
diff --git a/noncore/games/zsame/ZSameWidget.cpp b/noncore/games/zsame/ZSameWidget.cpp
index 04ad825..dee4a1c 100644
--- a/noncore/games/zsame/ZSameWidget.cpp
+++ b/noncore/games/zsame/ZSameWidget.cpp
@@ -213,16 +213,17 @@ void ZSameWidget::setScore(int ) {
}
void ZSameWidget::gameover() {
// kdDebug() << "GameOver" << endl;
if (stone->hasBonus()) {
QMessageBox::information(this,i18n("Game won"),
i18n("<qt>You even removed the last stone, great job! "
"This gave you a score of %1 in total.</qt>").arg(stone->score()));
+ stone->clearBonus();
} else {
QMessageBox::information(this,i18n("Game over"),
i18n("<qt>There are no more removeable stones. "
"You got a score of %1 in total.</qt>").arg(stone->score()));
}
stone->unmark();
}