Now supports multiple levels.
authorHeli Hyvättinen <heli.hyvattinen@kymp.net>
Thu, 23 Jun 2011 12:01:34 +0000 (15:01 +0300)
committerHeli Hyvättinen <heli.hyvattinen@kymp.net>
Thu, 23 Jun 2011 12:01:34 +0000 (15:01 +0300)
Now has 5 levels.

level.h
mainwindow.cpp
mainwindow.h

diff --git a/level.h b/level.h
index 7402630..8c44464 100644 (file)
--- a/level.h
+++ b/level.h
@@ -5,7 +5,7 @@ class Level
 {
 public:
     Level();
-    Level(int ghosts = 5, int rocks = 0, int octopuses = 0, int octopusSpeed = 100);
+    Level(int ghosts, int rocks = 0, int octopuses = 0, int octopusSpeed = 100);
     void setNumberOfGhosts(int ghosts);
     int getNumberOfGhosts() const;
     void setNumberOfRocks(int rocks);
index 4484a87..054c6c5 100644 (file)
@@ -70,6 +70,18 @@ MainWindow::MainWindow(QWidget *parent)
     connect(pRestartGameAction,SIGNAL(triggered()),this,SLOT(restartGame()));
     menuBar()->addAction(pRestartGameAction);
 
+    Level level1(5,10);
+    levelList_.append(level1);
+    Level level2(5,10,2,50);
+    levelList_.append(level2);
+    Level level3(5,15,3,100);
+    levelList_.append(level3);
+    Level level4(10,15,5,50);
+    levelList_.append(level4);
+    Level level5(10,15,5,100);
+    levelList_.append(level5);
+
+    currentLevel_ = 0;
 
     //the boundaries of the scene are set to match the size of the view window, which is not
     //available in the constructor --> timer needed
@@ -105,7 +117,7 @@ void MainWindow::initializeBoundaries()
 
 void MainWindow::restartLevel()
 {
-    pScene_->setupMap(5,10,5,100);
+    pScene_->setupMap(levelList_.at(currentLevel_));
 }
 
 void MainWindow::about()
@@ -125,10 +137,20 @@ void MainWindow::about()
 void MainWindow::nextLevel()
 {
 
-    //for now, just the handling of last level is implemented, and there is just one level
+    currentLevel_++;
 
+    if (levelList_.empty())
+        pScene_->setupMap(Level());
 
 
+    if ( currentLevel_ < levelList_.size() )
+    {
+        pScene_->setupMap(levelList_.at(currentLevel_));
+    }
+
+    else //Victory!
+    {
+
        QDialog* pVictoryDialog = new QDialog(this);
        pVictoryDialog->setWindowTitle(tr("You won!"));
 
@@ -169,8 +191,8 @@ void MainWindow::nextLevel()
 
         //Never mind if the user cancels the dialog: restart the game anyway
 
-       restartLevel();
-
+       restartGame();
+    }
 }
 
 bool MainWindow::event(QEvent *event)
@@ -211,5 +233,7 @@ bool MainWindow::event(QEvent *event)
 
 void MainWindow::restartGame()
 {
+    currentLevel_ = 0;
+    pScene_->setupMap(levelList_.value(currentLevel_)); //value() returns default constructor Level, so no need to check if list empty
 
 }
index 141b510..31438ed 100644 (file)
@@ -52,8 +52,8 @@ private:
 SeaScene * pScene_;
 QGraphicsView * pView_;
 QAction* pPauseAction_;
-QList<Level> levelList;
-
+QList<Level> levelList_;
+int currentLevel_;
 
 };