Thomas Gill / Mbed 2 deprecated LabyrinthOfTheMinotaur

Dependencies:   N5110 PowerControl mbed

Revision:
10:59c874d006ab
Parent:
9:3cad581b5419
Child:
11:b86a15d26de9
--- a/main.cpp	Sun Apr 19 15:56:31 2015 +0000
+++ b/main.cpp	Fri Apr 24 22:34:34 2015 +0000
@@ -28,6 +28,9 @@
 #define SOUTH 0
 #define EAST 1
 
+#define MAIN_MENU 0
+#define GAME 1
+
 struct TILES {
     char    Symbol; // Symbol for this tile
     bool   Passable; // Can tile be walked on
@@ -44,10 +47,7 @@
 //Variables
 int ActFlag = 0;
 int StartFlag = 0;
-int UpFlag = 0;
-int DownFlag = 0;
-int LeftFlag = 0;
-int RightFlag = 0;
+int DirFlag = 0;
 
 int map[84][48];
 
@@ -65,6 +65,12 @@
 
 int n;
 
+int menu;
+
+bool screen;
+
+int level;
+
 //Space type player is on
 int pSpace;
 
@@ -88,21 +94,11 @@
 {
     StartFlag = 1;
 }
-void UpPressed()
-{
-    UpFlag= 1;
-}
-void DownPressed()
+void DirPressed()
 {
-    DownFlag = 1;
-}
-void LeftPressed()
-{
-    LeftFlag = 1;
-}
-void RightPressed()
-{
-    RightFlag = 1;
+
+    DirFlag = 1;
+
 }
 
 void Walls()
@@ -243,9 +239,9 @@
     }
 }
 
-void DeadEnds()
+void DeadEnds(int d)
 {
-    for (int del = 20; del > 0; del--) {
+    for (int del = d; del > 0; del--) {
         for(int i = 0; i < 84; i++) {
             for(int j = 0; j < 48; j++) {
 
@@ -332,7 +328,7 @@
 
     Border();
 
-    DeadEnds();
+    DeadEnds(20);
 
 }
 
@@ -342,9 +338,6 @@
     FirstRoom();
     ExitRoom();
 
-    DrawMap();
-    wait(2.0);
-
     Maze();
 
     RandFloor(551);
@@ -357,7 +350,7 @@
 {
     Walls();
 
-//LabyrinthBuilder();
+    //LabyrinthBuilder();
     DungeonBuilder();
 
     px = enx;
@@ -435,7 +428,89 @@
         }
         StartFlag = 0;
     }
+}
 
+void Intro()
+{
+    lcd.clear();
+    lcd.printString("TBG RPG", 20, 2);
+    lcd.refresh();
+    wait(1.0);
+}
+
+void LevelScreen()
+{
+    char buffer[1];
+    int length = sprintf(buffer,"Level %d",level); // print formatted data to buffer
+    
+    lcd.clear();
+    lcd.printString(buffer, 20, 2);
+    lcd.refresh();
+    wait(1.0);
+
+}
+
+void GameLoop()
+{
+
+    level++;
+
+    World();
+
+    LevelScreen();
+
+    //Game loop
+    while(1) {
+
+        PlayerCamera();
+        Sleep();
+
+
+        if(DirFlag) {
+
+            DirFlag = 0;
+
+            PlayerMove();
+        }
+        if(StartFlag) {
+
+            StartFlag = 0;
+
+            StartMenu();
+        }
+    }
+}
+
+void MainMenu()
+{
+
+    while(1) {
+        lcd.clear();
+        if(menu == 0) {
+            lcd.printString("New Game <", 20, 1);
+            lcd.printString("Options",20,3);
+            lcd.refresh();
+            Sleep();
+        } else {
+            lcd.printString("New Game", 20, 1);
+            lcd.printString("Options <",20,3);
+            lcd.refresh();
+            Sleep();
+        }
+
+        if(DirFlag) {
+
+            DirFlag = 0;
+
+            menu = !menu;
+        }
+        if(ActFlag && menu == 0) {
+
+            ActFlag = 0;
+
+            GameLoop();
+        }
+    }
 }
 
 int main()
@@ -444,13 +519,12 @@
     PHY_PowerDown ();
     int result = semihost_powerdown();
 
-    Up.rise(&UpPressed);
-    Down.rise(&DownPressed);
-    Right.rise(&RightPressed);
-    Left.rise(&LeftPressed);
+    Up.rise(&DirPressed);
+    Down.rise(&DirPressed);
+    Right.rise(&DirPressed);
+    Left.rise(&DirPressed);
     Start.rise(&StartPressed);
-
-
+    Act.rise(&ActPressed);
 
     //Generate random seed
     srand(Noise*1000000);
@@ -458,29 +532,8 @@
     //Initilize screen
     lcd.init();
 
-    World();
-
-    //Game loop
-    while(1) {
-
-        PlayerCamera();
-        Sleep();
-        if(UpFlag || DownFlag || RightFlag || LeftFlag) {
+    Intro();
 
-            UpFlag = 0;
-            DownFlag = 0;
-            RightFlag = 0;
-            LeftFlag = 0;
-
-            PlayerMove();
-        }
-        if(StartFlag) {
+    MainMenu();
 
-            StartFlag = 0;
-
-            StartMenu();
-
-        }
-
-    }
-}
\ No newline at end of file
+}