
Labyrinth of the Minotaur A simple roguelike/RPG using a nokia 5110 screen
Dependencies: N5110 PowerControl mbed
Diff: Game.cpp
- 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