Thomas Gill / Mbed 2 deprecated LabyrinthOfTheMinotaur

Dependencies:   N5110 PowerControl mbed

Revision:
11:b86a15d26de9
Parent:
10:59c874d006ab
Child:
12:30a242706847
--- a/main.cpp	Fri Apr 24 22:34:34 2015 +0000
+++ b/main.cpp	Sat Apr 25 11:10:06 2015 +0000
@@ -19,6 +19,7 @@
 #define FLOOR 1
 #define ENTER 2
 #define EXIT 3
+#define FLOOR_SEEN 4
 
 #define RIGHT 0
 #define LEFT 1
@@ -28,9 +29,6 @@
 #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
@@ -41,6 +39,7 @@
     { '.', true},  // 1- FLOOR
     { '+', true }, // 2- ENTER
     { 'x', true },  // 3- EXIT
+    { '.', true},  // 4- FLOOR_SEEN
 };
 
 
@@ -65,9 +64,7 @@
 
 int n;
 
-int menu;
-
-bool screen;
+bool menu;
 
 int level;
 
@@ -139,7 +136,7 @@
     //Draw map on screen
     for(int i=0; i<84; i++) {
         for (int j=0; j<48; j++) {
-            if(map[i][j] == FLOOR || map[i][j] == EXIT) {
+            if(map[i][j] == FLOOR_SEEN) {
                 lcd.clearPixel(i, j);
             } else {
                 lcd.setPixel(i, j);
@@ -380,6 +377,11 @@
                     tile = WALL;
                 }
                 lcd.printChar(TileList[tile].Symbol, (6*i)+1, j);
+
+                if(map[px+diffx][py+diffy] == FLOOR) {
+                    map[px+diffx][py+diffy] = FLOOR_SEEN;
+                }
+
             }
         }
     }
@@ -442,7 +444,7 @@
 {
     char buffer[1];
     int length = sprintf(buffer,"Level %d",level); // print formatted data to buffer
-    
+
     lcd.clear();
     lcd.printString(buffer, 20, 2);
     lcd.refresh();
@@ -452,31 +454,38 @@
 
 void GameLoop()
 {
-
-    level++;
-
-    World();
-
-    LevelScreen();
-
-    //Game loop
     while(1) {
 
-        PlayerCamera();
-        Sleep();
+        level++;
+
+        World();
+
+        LevelScreen();
+
+        //Game loop
+        while(1) {
+
+            PlayerCamera();
+            Sleep();
 
 
-        if(DirFlag) {
+            if(DirFlag) {
+
+                DirFlag = 0;
 
-            DirFlag = 0;
+                PlayerMove();
+            }
+            if(StartFlag) {
 
-            PlayerMove();
-        }
-        if(StartFlag) {
+                StartFlag = 0;
 
-            StartFlag = 0;
+                StartMenu();
+            }
+            if(px == exx && py == exy) {
 
-            StartMenu();
+                break;
+
+            }
         }
     }
 }