Labyrinth of the Minotaur A simple roguelike/RPG using a nokia 5110 screen

Dependencies:   N5110 PowerControl mbed

Revision:
34:e58c8322884d
Parent:
33:4fc26476b2e0
Child:
35:2c290fa78f1d
--- a/Game.cpp	Mon May 11 12:19:13 2015 +0000
+++ b/Game.cpp	Mon May 11 12:56:26 2015 +0000
@@ -283,21 +283,28 @@
     wait(1.0);
 }
 
+void NextLevel()
+{
+
+    level++;
+
+    score = score + 100;
+
+    World();
+
+    LevelScreen();
+
+    //RevealMap(); //Uncomment for debugging to view map
+
+    srand(Noise * 1000000);
+
+}
+
 void GameLoop()
 {
     while (1) {
 
-        level++;
-
-        score = score + 100;
-
-        World();
-
-        LevelScreen();
-
-        //RevealMap(); //Uncomment for debugging to view map
-
-        srand(Noise * 1000000);
+        NextLevel();
 
         PlayerCamera();
 
@@ -443,7 +450,7 @@
         m = rand() % mr;
     }
 
-    int mh = EnemyList[m].EHealth;
+    mh = EnemyList[m].EHealth;
 
     FlashScreen(5);
 
@@ -491,44 +498,8 @@
         if (ActFlag) {
             ActFlag = 0;
             if (menu) { //Fight
-                //Hit monster
-                if (rand() % 100 + 1 > EnemyList[m].EDodge) { //If monster doesn't dodge
 
-                    int damage = ItemList[pw].ItemValue - EnemyList[m].EArmour + rand() % 3 - rand() % 3; //Calculate damage
-                    if (damage < 0) {
-                        damage = 0;
-                    }
-                    mh = mh - damage; //Apply damage and calculate the monster's health
-
-                    char damBuffer[14];
-                    write = sprintf(damBuffer,"-%d", damage);
-
-                    lcd.clear();
-                    DrawGraphic(m, 23, 7);
-                    lcd.printString(damBuffer, 62, 2);
-                    FlashScreen(3);
-
-
-                    char buffer3[14];
-                    write = sprintf(buffer3, "for %d damage", damage); // print formatted data to buffer
-
-                    lcd.clear();
-                    lcd.printString("You hit the", 0, 1);
-                    lcd.printString(EnemyList[m].EName, 0, 2);
-                    lcd.printString(buffer3, 0, 3);
-                    lcd.refresh();
-                    wait(1.0);
-                    Sleep();
-
-                } else { //Monster dodges
-                    lcd.clear();
-                    lcd.printString(EnemyList[m].EName, 0, 1);
-                    lcd.printString("dodges your", 0, 2);
-                    lcd.printString("attack", 0, 3);
-                    lcd.refresh();
-                    wait(1.0);
-                    Sleep();
-                }
+                PlayerAttack(m);
 
                 if (mh <= 0) { //Check if monster is dead
                     score = score + EnemyList[m].EPoints;
@@ -598,6 +569,49 @@
     }
 }
 
+void PlayerAttack(int m)
+{
+
+    //Hit monster
+    if (rand() % 100 + 1 > EnemyList[m].EDodge) { //If monster doesn't dodge
+
+        int damage = ItemList[pw].ItemValue - EnemyList[m].EArmour + rand() % 3 - rand() % 3; //Calculate damage
+        if (damage < 0) {
+            damage = 0;
+        }
+        mh = mh - damage; //Apply damage and calculate the monster's health
+
+        char damBuffer[14];
+        int write = sprintf(damBuffer,"-%d", damage);
+
+        lcd.clear();
+        DrawGraphic(m, 23, 7);
+        lcd.printString(damBuffer, 62, 2);
+        FlashScreen(3);
+
+
+        char buffer3[14];
+        write = sprintf(buffer3, "for %d damage", damage); // print formatted data to buffer
+
+        lcd.clear();
+        lcd.printString("You hit the", 0, 1);
+        lcd.printString(EnemyList[m].EName, 0, 2);
+        lcd.printString(buffer3, 0, 3);
+        lcd.refresh();
+        wait(1.0);
+        Sleep();
+
+    } else { //Monster dodges
+        lcd.clear();
+        lcd.printString(EnemyList[m].EName, 0, 1);
+        lcd.printString("dodges your", 0, 2);
+        lcd.printString("attack", 0, 3);
+        lcd.refresh();
+        wait(1.0);
+        Sleep();
+    }
+}
+
 void MonsterAttack(int m)
 {
     if (rand() % 100 + 1 < EnemyList[m].EHit) { //If monster hits and isn't dead