Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: N5110 PowerControl mbed
Diff: main.cpp
- Revision:
- 21:aa4feee6aa39
- Parent:
- 20:e54792b89571
- Child:
- 22:dae750e4d749
--- a/main.cpp Mon May 04 16:26:43 2015 +0000 +++ b/main.cpp Mon May 04 17:16:31 2015 +0000 @@ -4,14 +4,14 @@ #include "WorldBuilder.h" // vcc sce rst dc mosi clk led -N5110 lcd (p5, p6, p7, p8, p11, p13, p21); -InterruptIn Act (p22); -InterruptIn Start (p23); -InterruptIn Up (p24); -InterruptIn Down (p25); -InterruptIn Left (p26); -InterruptIn Right (p27); -AnalogIn Noise (p19); +N5110 lcd(p5, p6, p7, p8, p11, p13, p21); +InterruptIn Act(p22); +InterruptIn Start(p23); +InterruptIn Up(p24); +InterruptIn Down(p25); +InterruptIn Left(p26); +InterruptIn Right(p27); +AnalogIn Noise(p19); #define USR_POWERDOWN (0x104) @@ -22,12 +22,12 @@ TILES TileList[] = { { '#', false }, // 0- WALL - { '.', true}, // 1- FLOOR + { '.', true }, // 1- FLOOR { '+', true }, // 2- ENTER { 'x', true }, // 3- EXIT - { '.', true}, // 4- FLOOR_SEEN - { '=', true}, // 5- CHEST - { '/', true}, // 6- CHEST_OPENED + { '.', true }, // 4- FLOOR_SEEN + { '=', true }, // 5- CHEST + { '/', true }, // 6- CHEST_OPENED }; struct ITEMS { @@ -37,17 +37,17 @@ ITEMS ItemList[] = { //Weapons - { "Dagger", 4}, //0 - { "Axe", 5}, //1 - { "Mace", 6}, //2 - { "Sword", 7}, //3 - { "Warhammer", 10}, //4 + { "Dagger", 4 }, //0 + { "Axe", 5 }, //1 + { "Mace", 6 }, //2 + { "Sword", 7 }, //3 + { "Warhammer", 8 }, //4 //Armour - { "Cloth armour", 1}, //5 - { "Leather armour", 2}, //6 - { "Studded armour", 3}, //7 - { "Chainmail vest", 4}, //8 - { "Plate armour", 5}, //9 + { "Cloth armour", 1 }, //5 + { "Leather armour", 2 }, //6 + { "Studded armour", 3 }, //7 + { "Chainmail vest", 4 }, //8 + { "Plate armour", 5 }, //9 }; struct ENEMIES { @@ -62,12 +62,12 @@ ENEMIES EnemyList[] = { //Name HP Dmg Arm Dg Ht Spd - {"Huge Rat", 5, 3, 0, 25, 70, 40}, //0- Huge Rat - {"Goblin", 6, 3, 2, 25, 60, 30}, //1- Goblin - {"Skeleton", 8, 5, 3, 10, 50, 10}, //2- Skeleton - {"Wraith", 5, 4, 0, 40, 60, 50}, //3- Wraith - {"Ogre", 10, 7, 3, 10, 35, 15}, //4- Ogre - {"Minotaur", 15, 8, 5, 20, 45, 100}, //5- Minotaur + { "Huge Rat", 5, 3, 0, 25, 70, 40 }, //0- Huge Rat + { "Goblin", 6, 3, 2, 25, 60, 30 }, //1- Goblin + { "Skeleton", 8, 5, 3, 10, 50, 10 }, //2- Skeleton + { "Wraith", 5, 4, 0, 40, 60, 50 }, //3- Wraith + { "Ogre", 10, 7, 3, 10, 35, 15 }, //4- Ogre + { "Minotaur", 15, 8, 5, 20, 45, 100 }, //5- Minotaur }; //Variables @@ -78,10 +78,6 @@ //Space type player is on int pSpace; -//Player coordinates -int px; -int py; - //Player Health int ph = 15; @@ -113,49 +109,157 @@ } //Voids +void Intro(); void MainMenu(); +void LevelScreen(); void GameLoop(); +void PlayerCamera(); +void PlayerMove(); +void Fight(); +void MonsterAttack(int m); +void StartMenu(); +void Map(); +void DrawMap(); +void FlashPlayerLocation(); +void MapLegend(); +void Inventory(); +void Chest(); +void getItem(); +void BoobyTrap(); +void RevealMap(); +void Potion(); +void GameOver(); -void FlashPlayerLocation() +void Intro() { - lcd.setPixel(px,py); + lcd.clear(); + lcd.printString("TBG RPG", 20, 2); lcd.refresh(); - wait(0.5); - lcd.clearPixel(px,py); - lcd.refresh(); - wait(0.5); + wait(1.0); } - -void DrawMap() +void MainMenu() { - //Draw map on screen - for(int i=0; i<84; i++) { - for (int j=0; j<48; j++) { - if(map[i][j] == FLOOR_SEEN || map[i][j] == CHEST_OPENED) { - lcd.clearPixel(i, j); - } else { - lcd.setPixel(i, j); + level = 0; + + //Player Health + ph = 15; + + //Player weapon + pw = 0; //0 to 4 + + //Player armour + pa = 5; //5 to 9 + + bool menu = 0; + + 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) { + + ActFlag = 0; + + if (menu == 0) { + GameLoop(); } } } +} + +void LevelScreen() +{ + char buffer[14]; + + int write = sprintf(buffer, "Level %d", level); // print formatted data to buffer + + lcd.clear(); + lcd.printString(buffer, 20, 2); lcd.refresh(); -} + wait(1.0); -void World() +} + +void GameLoop() { - Walls(); - if(level == 5) { - LabyrinthBuilder(); - } else { - DungeonBuilder(); - //LabyrinthBuilder(); + while (1) { + + level++; + + World(); + + LevelScreen(); + + RevealMap(); + + while (1) { + + ActFlag = 0; + StartFlag = 0; + DirFlag = 0; + + PlayerCamera(); + + if (map[px][py] == CHEST) { + Chest(); + } + + if (px == exx && py == exy) { + + break; + + } + + Sleep(); + + + if (DirFlag) { + + DirFlag = 0; + + PlayerMove(); + + if (rand() % 60 == 0) { + if (ph < 15) { + ph++; + } + } + + if (rand() % 50 == 0) { + Fight(); + } + + } + if (StartFlag) { + + StartFlag = 0; + + StartMenu(); + } + if (ActFlag) { + + ActFlag = 0; + } + } } - - px = enx; - py = eny; - - wait(1.0); } void PlayerCamera() @@ -164,24 +268,26 @@ int tile; - for(int i = 0; i < 14; i++) { - for(int j = 0; j < 6; j++) { + for (int i = 0; i < 14; i++) { + for (int j = 0; j < 6; j++) { - if(i == 6 && j == 2) { - lcd.printString("@", (6*i)+1, j); - } else { + if (i == 6 && j == 2) { + lcd.printString("@", (6 * i) + 1, j); + } + else { int diffx = i - 6; int diffy = j - 2; - if(px+diffx < 84 && px+diffx > 0 && py+diffy < 48 && py+diffy > 0) { - tile = map[px+diffx][py+diffy]; - } else { + if (px + diffx < 84 && px + diffx > 0 && py + diffy < 48 && py + diffy > 0) { + tile = map[px + diffx][py + diffy]; + } + else { tile = WALL; } - lcd.printChar(TileList[tile].Symbol, (6*i)+1, j); + lcd.printChar(TileList[tile].Symbol, (6 * i) + 1, j); - if(map[px+diffx][py+diffy] == FLOOR) { - map[px+diffx][py+diffy] = FLOOR_SEEN; + if (map[px + diffx][py + diffy] == FLOOR) { + map[px + diffx][py + diffy] = FLOOR_SEEN; } } @@ -192,90 +298,42 @@ void PlayerMove() { - if(Up) { - int tile = map[px][py-1]; - if(TileList[tile].Passable) { + if (Up) { + int tile = map[px][py - 1]; + if (TileList[tile].Passable) { py--; } } - if(Down) { - int tile = map[px][py+1]; - if(TileList[tile].Passable) { + if (Down) { + int tile = map[px][py + 1]; + if (TileList[tile].Passable) { py++; } } - if(Right) { - int tile = map[px+1][py]; - if(TileList[tile].Passable) { + if (Right) { + int tile = map[px + 1][py]; + if (TileList[tile].Passable) { px++; } } - if(Left) { - int tile = map[px-1][py]; - if(TileList[tile].Passable) { + if (Left) { + int tile = map[px - 1][py]; + if (TileList[tile].Passable) { px--; } } } -void GameOver() -{ - lcd.inverseMode(); - lcd.clear(); - lcd.printString("GAME OVER", 12, 2); - lcd.refresh(); - wait(1.0); - Sleep(); - lcd.normalMode(); - MainMenu(); -} - -void MonsterAttack(int m) -{ - if(rand()%100 + 1 < EnemyList[m].EHit) { //If monster hits and isn't dead - - int damage = EnemyList[m].EDamage - ItemList[pa].ItemValue + rand()%3 - rand()%3; //Calculate damage - if (damage < 0) { - damage = 0; - } - ph = ph - damage; //Apply damage and calculate the monster's health - - char buffer[14]; - int write = sprintf(buffer,"%d damage",damage); // print formatted data to buffer - - lcd.clear(); - lcd.printString(EnemyList[m].EName, 0 ,1); - lcd.printString("hits you for", 0 , 2); - lcd.printString(buffer, 0 , 3); - lcd.refresh(); - wait(1.0); - Sleep(); - - } else { //You dodge - lcd.clear(); - lcd.printString("You dodge the", 0 ,1); - lcd.printString("monster's", 0 , 2); - lcd.printString("attack", 0 , 3); - lcd.refresh(); - wait(1.0); - Sleep(); - } - if(ph <= 0) { //Check if player is dead - GameOver(); - } - -} - void Fight() { - int m = rand()%(level+1); + int m = rand() % (level + 1); int mh = EnemyList[m].EHealth; lcd.clear(); lcd.printString("FIGHT!", 24, 2); - for(int i = 0; i<5; i++) { + for (int i = 0; i<5; i++) { lcd.inverseMode(); lcd.refresh(); wait(0.2); @@ -286,7 +344,7 @@ bool menu = 1; - while(1) { + while (1) { ActFlag = 0; StartFlag = 0; DirFlag = 0; @@ -295,62 +353,64 @@ lcd.printString(EnemyList[m].EName, 0, 0); char buffer1[14]; - int write = sprintf(buffer1,"%d/%d",mh, EnemyList[m].EHealth); // print formatted data to buffer + int write = sprintf(buffer1, "%d/%d", mh, EnemyList[m].EHealth); // print formatted data to buffer lcd.printString(buffer1, 54, 0); lcd.printString("You", 0, 2); char buffer2[14]; - write = sprintf(buffer2,"%d/15",ph); // print formatted data to buffer + write = sprintf(buffer2, "%d/15", ph); // print formatted data to buffer lcd.printString(buffer2, 54, 2); - if(menu) { + if (menu) { lcd.printString("Fight <", 0, 4); lcd.printString("Run", 0, 5); - } else { + } + else { lcd.printString("Fight", 0, 4); lcd.printString("Run <", 0, 5); } lcd.refresh(); Sleep(); - if(DirFlag) { + if (DirFlag) { DirFlag = 0; menu = !menu; } - if(ActFlag) { + if (ActFlag) { ActFlag = 0; - if(menu) { //Fight + if (menu) { //Fight //Hit monster - if(rand()%100 + 1 > EnemyList[m].EDodge) { //If monster doesn't dodge + 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 + 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 buffer3[14]; - write = sprintf(buffer3,"for %d damage",damage); // print formatted data to buffer + 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("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 + } + else { //Monster dodges lcd.clear(); - lcd.printString(EnemyList[m].EName, 0 ,1); - lcd.printString("dodges your", 0 , 2); - lcd.printString("attack", 0 , 3); + lcd.printString(EnemyList[m].EName, 0, 1); + lcd.printString("dodges your", 0, 2); + lcd.printString("attack", 0, 3); lcd.refresh(); wait(1.0); Sleep(); } - if(mh <= 0) { //Check if monster is dead + if (mh <= 0) { //Check if monster is dead lcd.clear(); lcd.printString("You win!", 18, 2); lcd.refresh(); @@ -362,11 +422,12 @@ MonsterAttack(m); - } else { //Run away + } + else { //Run away - int b = rand()%5; + int b = rand() % 5; - if(b == 0) { //Monster blocks the path + if (b == 0) { //Monster blocks the path lcd.clear(); lcd.printString("You try to run", 0, 0); @@ -379,11 +440,12 @@ MonsterAttack(m); - } else { + } + else { - int s = rand()%100 + 1; + int s = rand() % 100 + 1; - if(s > EnemyList[m].ESpd) { //If you outspeed monster + if (s > EnemyList[m].ESpd) { //If you outspeed monster lcd.clear(); lcd.printString("You run away", 6, 2); @@ -392,7 +454,8 @@ Sleep(); break; - } else { + } + else { lcd.clear(); lcd.printString("You try to run", 0, 0); @@ -415,77 +478,41 @@ } } -void Map() -{ - lcd.clear(); - DrawMap(); - while(!StartFlag) { - FlashPlayerLocation(); - } - StartFlag = 0; - ActFlag = 0; - DirFlag = 0; -} - - -void Inventory() +void MonsterAttack(int m) { - lcd.clear(); - lcd.printString("Armour:", 0, 0); - lcd.printString(ItemList[pa].ItemName, 0, 1); - char buffer1[14]; - int write = sprintf(buffer1,"+%d Armour", ItemList[pa].ItemValue); // print formatted data to buffer - lcd.printString(buffer1, 0, 2); + if (rand() % 100 + 1 < EnemyList[m].EHit) { //If monster hits and isn't dead + + int damage = EnemyList[m].EDamage - ItemList[pa].ItemValue + rand() % 3 - rand() % 3; //Calculate damage + if (damage < 0) { + damage = 0; + } + ph = ph - damage; //Apply damage and calculate the monster's health - lcd.printString("Weapon:", 0, 3); - lcd.printString(ItemList[pw].ItemName, 0, 4); - char buffer2[14]; - write = sprintf(buffer2,"+%d Damage", ItemList[pw].ItemValue); // print formatted data to buffer - lcd.printString(buffer2, 0, 5); - lcd.refresh(); + char buffer[14]; + int write = sprintf(buffer, "%d damage", damage); // print formatted data to buffer - while(1) { + lcd.clear(); + lcd.printString(EnemyList[m].EName, 0, 1); + lcd.printString("hits you for", 0, 2); + lcd.printString(buffer, 0, 3); + lcd.refresh(); + wait(1.0); Sleep(); - if(ActFlag) { - ActFlag = 0; - } - if(DirFlag) { - DirFlag = 0; - break; - } - if(StartFlag) { - StartFlag = 0; - break; - } } -} + else { //You dodge + lcd.clear(); + lcd.printString("You dodge the", 0, 1); + lcd.printString("monster's", 0, 2); + lcd.printString("attack", 0, 3); + lcd.refresh(); + wait(1.0); + Sleep(); + } + if (ph <= 0) { //Check if player is dead + GameOver(); + } -void MapLegend() -{ - lcd.clear(); - lcd.printString("@ Player", 0 ,0); - lcd.printString("# Wall", 0, 1); - lcd.printString(". Floor", 0, 2); - lcd.printString("= Chest", 0, 3); - lcd.printString("/ Open Chest", 0, 4); - - - while(1) { - Sleep(); - - if(ActFlag) { - ActFlag = 0; - } - if(DirFlag) { - DirFlag = 0; - break; - } - if(StartFlag) { - StartFlag = 0; - break; - } - } } void StartMenu() @@ -493,11 +520,11 @@ int menu = 0; char buffer[14]; - int write = sprintf(buffer,"Health %d/15",ph); // print formatted data to buffer + int write = sprintf(buffer, "Health %d/15", ph); // print formatted data to buffer - while(1) { - if(menu == 0) { + while (1) { + if (menu == 0) { lcd.clear(); lcd.printString(buffer, 0, 0); lcd.printString("Map <", 0, 2); @@ -506,7 +533,8 @@ lcd.printString("Continue", 0, 5); lcd.refresh(); Sleep(); - } else if (menu == 1) { + } + else if (menu == 1) { lcd.clear(); lcd.printString(buffer, 0, 0); lcd.printString("Map", 0, 2); @@ -515,7 +543,8 @@ lcd.printString("Continue", 0, 5); lcd.refresh(); Sleep(); - } else if (menu == 2) { + } + else if (menu == 2) { lcd.clear(); lcd.printString(buffer, 0, 0); lcd.printString("Map", 0, 2); @@ -524,7 +553,8 @@ lcd.printString("Continue", 0, 5); lcd.refresh(); Sleep(); - } else if (menu == 3) { + } + else if (menu == 3) { lcd.clear(); lcd.printString(buffer, 0, 0); lcd.printString("Map", 0, 2); @@ -535,57 +565,158 @@ Sleep(); } - if(DirFlag) { + if (DirFlag) { DirFlag = 0; - if((Down || Right) && menu < 3) { + if ((Down || Right) && menu < 3) { menu++; - } else if((Up ||Left) && menu > 0) + } + else if ((Up || Left) && menu > 0) menu--; } - if(ActFlag) { + if (ActFlag) { ActFlag = 0; - if(menu == 0) { + if (menu == 0) { Map(); - } else if(menu == 1) { + } + else if (menu == 1) { MapLegend(); - } else if(menu == 2) { + } + else if (menu == 2) { Inventory(); - } else { + } + else { break; } } - if(StartFlag) { + if (StartFlag) { StartFlag = 0; } } } - -void Intro() +void Map() { lcd.clear(); - lcd.printString("TBG RPG", 20, 2); + DrawMap(); + while (!StartFlag) { + FlashPlayerLocation(); + } + StartFlag = 0; + ActFlag = 0; + DirFlag = 0; +} + +void DrawMap() +{ + //Draw map on screen + for (int i = 0; i<84; i++) { + for (int j = 0; j<48; j++) { + if (map[i][j] == FLOOR_SEEN || map[i][j] == CHEST_OPENED) { + lcd.clearPixel(i, j); + } + else { + lcd.setPixel(i, j); + } + } + } lcd.refresh(); - wait(1.0); +} + +void FlashPlayerLocation() +{ + lcd.setPixel(px, py); + lcd.refresh(); + wait(0.5); + lcd.clearPixel(px, py); + lcd.refresh(); + wait(0.5); } -void LevelScreen() +void MapLegend() { - char buffer[14]; + lcd.clear(); + lcd.printString("@ Player", 0, 0); + lcd.printString("# Wall", 0, 1); + lcd.printString(". Floor", 0, 2); + lcd.printString("= Chest", 0, 3); + lcd.printString("/ Open Chest", 0, 4); + + + while (1) { + Sleep(); + + if (ActFlag) { + ActFlag = 0; + } + if (DirFlag) { + DirFlag = 0; + break; + } + if (StartFlag) { + StartFlag = 0; + break; + } + } +} + +void Inventory() +{ + lcd.clear(); + lcd.printString("Armour:", 0, 0); + lcd.printString(ItemList[pa].ItemName, 0, 1); + char buffer1[14]; + int write = sprintf(buffer1, "+%d Armour", ItemList[pa].ItemValue); // print formatted data to buffer + lcd.printString(buffer1, 0, 2); - int write = sprintf(buffer,"Level %d",level); // print formatted data to buffer + lcd.printString("Weapon:", 0, 3); + lcd.printString(ItemList[pw].ItemName, 0, 4); + char buffer2[14]; + write = sprintf(buffer2, "+%d Damage", ItemList[pw].ItemValue); // print formatted data to buffer + lcd.printString(buffer2, 0, 5); + lcd.refresh(); + + while (1) { + Sleep(); - lcd.clear(); - lcd.printString(buffer, 20, 2); - lcd.refresh(); - wait(1.0); + if (ActFlag) { + ActFlag = 0; + } + if (DirFlag) { + DirFlag = 0; + break; + } + if (StartFlag) { + StartFlag = 0; + break; + } + } +} + +void Chest() +{ + int c = rand() % 4; //0- Item, 1- Booby trap, 2- Map, Else- Potion + + if (c == 0) { + getItem(); + } + else if (c == 1) { + BoobyTrap(); + } + else if (c == 2) { + RevealMap(); + } + else { + Potion(); + } + + map[px][py] = CHEST_OPENED; } void getItem() { - int r = rand()%10; + int r = rand() % 10; DirFlag = 0; @@ -600,13 +731,14 @@ Sleep(); - if(ActFlag) { + if (ActFlag) { ActFlag = 0; if (r > 5) { pa = r; - } else { + } + else { pw = r; } @@ -617,7 +749,8 @@ wait(1.0); Sleep(); - } else { + } + else { StartFlag = 0; DirFlag = 0; @@ -634,9 +767,9 @@ void BoobyTrap() { - int damage = rand()%5; + int damage = rand() % 5; - if(damage != 0) { + if (damage != 0) { ph = ph - damage; @@ -653,10 +786,11 @@ Sleep(); //Check if player is dead - if(ph < 0) { + if (ph < 0) { GameOver(); } - } else { + } + else { lcd.clear(); lcd.printString("The chest is", 0, 0); @@ -673,10 +807,10 @@ void RevealMap() { - for(int i = 0; i < 84; i++) { - for(int j = 0; j < 48; j++) { + for (int i = 0; i < 84; i++) { + for (int j = 0; j < 48; j++) { - if(map[i][j] == FLOOR) { + if (map[i][j] == FLOOR) { map[i][j] = FLOOR_SEEN; } } @@ -695,7 +829,7 @@ void Potion() { - int p = rand()%5; //0- Poison, 1- Teleport, Else- Full heal + int p = rand() % 5; //0- Poison, 1- Teleport, Else- Full heal lcd.clear(); lcd.printString("You find a", 0, 0); @@ -707,12 +841,12 @@ wait(1.0); Sleep(); - if(ActFlag) { //Potion drunk + if (ActFlag) { //Potion drunk ActFlag = 0; - if(p == 0) { //Poison + if (p == 0) { //Poison - int damage = rand()%4 + 1; + int damage = rand() % 4 + 1; ph = ph - damage; @@ -731,10 +865,11 @@ Sleep(); //Check if player is dead - if(ph < 0) { + if (ph < 0) { GameOver(); } - } else if(p == 1) { //Teleport + } + else if (p == 1) { //Teleport lcd.clear(); lcd.printString("You drink the", 0, 0); @@ -749,7 +884,8 @@ GameLoop(); - } else { //Full heal + } + else { //Full heal ph = 15; @@ -763,7 +899,8 @@ wait(1.0); Sleep(); } - } else { //Leave the potion + } + else { //Leave the potion DirFlag = 0; StartFlag = 0; lcd.clear(); @@ -776,138 +913,24 @@ } } -void Chest() -{ - int c = rand()%4; //0- Item, 1- Booby trap, 2- Map, Else- Potion - - if(c == 0) { - getItem(); - } else if(c == 1) { - BoobyTrap(); - } else if(c == 2) { - RevealMap(); - } else { - Potion(); - } - - map[px][py] = CHEST_OPENED; - -} - -void GameLoop() +void GameOver() { - while(1) { - - level++; - - World(); - - LevelScreen(); - - RevealMap(); - - while(1) { - - ActFlag = 0; - StartFlag = 0; - DirFlag = 0; - - PlayerCamera(); - - if(map[px][py] == CHEST) { - Chest(); - } - - if(px == exx && py == exy) { - - break; - - } - - Sleep(); + lcd.inverseMode(); + lcd.clear(); + lcd.printString("GAME OVER", 12, 2); + lcd.refresh(); + wait(1.0); + Sleep(); + lcd.normalMode(); + MainMenu(); +} - if(DirFlag) { - - DirFlag = 0; - - PlayerMove(); - - if(rand()%60 == 0) { - if(ph < 15) { - ph++; - } - } - - if(rand()%50 == 0) { - Fight(); - } - - } - if(StartFlag) { - - StartFlag = 0; - - StartMenu(); - } - if(ActFlag) { - - ActFlag = 0; - } - } - } -} - -void MainMenu() -{ - level = 0; - - //Player Health - ph = 15; - - //Player weapon - pw = 0; //0 to 4 - - //Player armour - pa = 5; //5 to 9 - - bool menu = 0; - - 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) { - - ActFlag = 0; - - if(menu == 0) { - GameLoop(); - } - } - } -} int main() { //Power Saving - PHY_PowerDown (); + PHY_PowerDown(); int result = semihost_powerdown(); Up.rise(&DirPressed); @@ -918,7 +941,7 @@ Act.rise(&ActPressed); //Generate random seed - srand(Noise*1000000); + srand(Noise * 1000000); //Initilize screen lcd.init(); @@ -926,4 +949,4 @@ Intro(); MainMenu(); -} +} \ No newline at end of file