
Labyrinth of the Minotaur A simple roguelike/RPG using a nokia 5110 screen
Dependencies: N5110 PowerControl mbed
Diff: Game.cpp
- Revision:
- 28:b3a597b38b60
- Parent:
- 27:1ad2408ba702
- Child:
- 29:89bc8c8aa8ac
--- a/Game.cpp Fri May 08 11:51:23 2015 +0000 +++ b/Game.cpp Fri May 08 22:24:44 2015 +0000 @@ -67,17 +67,39 @@ writeDataToFile(); } -//Game functions +//Graphic functions -void DrawGraphic(int p, int x, int y) +void DrawGraphic(int p, int y, int x) { - if(p == 0) { - for(int i = 0; i < 38; i++) { - for(int j = 0; j < 34; j++) { + + for(int i = 0; i < 38; i++) { + for(int j = 0; j < 38; j++) { - + if(p == 0 ) { if(HugeRat[i][j] == 1) { - + lcd.setPixel(y+i, x+j); + } + } else if(p == 1 ) { + if(Goblin[i][j] == 1) { + lcd.setPixel(y+i, x+j); + } + } else if(p == 2 ) { + if(Skeleton[i][j] == 1) { + lcd.setPixel(y+i, x+j); + } + } else if(p == 3 ) { + if(Wraith[i][j] == 1) { + lcd.setPixel(y+i, x+j); + } + if(rand()%4 == 1) { + lcd.setPixel(y+i, x+j); + } + } else if(p == 4 ) { + if(Ogre[i][j] == 1) { + lcd.setPixel(y+i, x+j); + } + } else if(p == 5 ) { + if(Minotaur[i][j] == 1) { lcd.setPixel(y+i, x+j); } } @@ -85,9 +107,23 @@ } } +void FlashScreen(int n) +{ + for (int i = 0; i<n; i++) { + lcd.inverseMode(); + lcd.refresh(); + wait(0.2); + lcd.normalMode(); + lcd.refresh(); + wait(0.2); + } +} + +//Game functions + void Intro() { - + lcd.clear(); lcd.printString("Labyrinth", 15, 1); lcd.printString("of the", 24, 2); @@ -216,9 +252,7 @@ { while (1) { - //level++; - - level = 5; + level++; score = score + 100; @@ -226,10 +260,12 @@ LevelScreen(); - RevealMap(); //Uncomment for debugging to view map + //RevealMap(); //Uncomment for debugging to view map while (1) { + srand(Noise * 1000000); + ActFlag = 0; StartFlag = 0; DirFlag = 0; @@ -348,7 +384,7 @@ void Fight() { int m; - + lcd.clear(); if(BossFight) { @@ -363,29 +399,26 @@ if (mr > 4) { mr = 4; - lcd.printString("FIGHT!", 24, 2); } + lcd.printString("FIGHT!", 24, 2); + m = rand() % mr; } int mh = EnemyList[m].EHealth; - for (int i = 0; i<5; i++) { - lcd.inverseMode(); - lcd.refresh(); - wait(0.2); - lcd.normalMode(); - lcd.refresh(); - wait(0.2); - } + FlashScreen(5); + + char buffer1[14]; + int write = sprintf(buffer1, "%d/%d", mh, EnemyList[m].EHealth); // print formatted data to buffer - if(m==0) { - lcd.clear(); - DrawGraphic(m, 1, 1); - lcd.refresh(); - wait(2.0); - } + lcd.clear(); + lcd.printString(EnemyList[m].EName, 0, 0); + lcd.printString(buffer1, 54, 0); + DrawGraphic(m, 23, 6); + lcd.refresh(); + wait(2.0); bool menu = 1; @@ -397,8 +430,7 @@ lcd.clear(); 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 + write = sprintf(buffer1, "%d/%d", mh, EnemyList[m].EHealth); // print formatted data to buffer lcd.printString(buffer1, 54, 0); lcd.printString("You", 0, 2); @@ -432,6 +464,15 @@ } mh = mh - damage; //Apply damage and calculate the monster's health + char damBuffer[14]; + write = sprintf(damBuffer,"-%d", damage); + + lcd.clear(); + DrawGraphic(m, 23, 6); + lcd.printString(damBuffer, 62, 2); + FlashScreen(3); + + char buffer3[14]; write = sprintf(buffer3, "for %d damage", damage); // print formatted data to buffer