Enemy class. Written for OOP Review. Derived from life_entity.
enemy.cpp@1:59274d3772ec, 2011-04-01 (annotated)
- Committer:
- Nakor
- Date:
- Fri Apr 01 01:29:38 2011 +0000
- Revision:
- 1:59274d3772ec
- Parent:
- 0:91a68e5fd4b8
Documentation.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Nakor | 0:91a68e5fd4b8 | 1 | #include "enemy.h" |
Nakor | 0:91a68e5fd4b8 | 2 | |
Nakor | 0:91a68e5fd4b8 | 3 | // Pointer to the player(user) class |
Nakor | 0:91a68e5fd4b8 | 4 | player *pPlayer; |
Nakor | 0:91a68e5fd4b8 | 5 | |
Nakor | 0:91a68e5fd4b8 | 6 | // Constructor |
Nakor | 0:91a68e5fd4b8 | 7 | // Calculates enemy level flux (+/- 2 levels the way I did it) |
Nakor | 0:91a68e5fd4b8 | 8 | // Initiates variables (including calculating health). |
Nakor | 0:91a68e5fd4b8 | 9 | enemy::enemy(player *thePlayer) |
Nakor | 0:91a68e5fd4b8 | 10 | { |
Nakor | 0:91a68e5fd4b8 | 11 | srand ( time(NULL) ); |
Nakor | 0:91a68e5fd4b8 | 12 | |
Nakor | 0:91a68e5fd4b8 | 13 | int plusOrMinus = (rand() % 2); |
Nakor | 0:91a68e5fd4b8 | 14 | |
Nakor | 0:91a68e5fd4b8 | 15 | #if DEBUG_ENEMY_VERBOSE |
Nakor | 0:91a68e5fd4b8 | 16 | printf("Plus or Minus: %i\n", plusOrMinus); |
Nakor | 0:91a68e5fd4b8 | 17 | #endif |
Nakor | 0:91a68e5fd4b8 | 18 | |
Nakor | 0:91a68e5fd4b8 | 19 | srand ( time(NULL) ); |
Nakor | 0:91a68e5fd4b8 | 20 | int levelFlux = 0; |
Nakor | 0:91a68e5fd4b8 | 21 | |
Nakor | 0:91a68e5fd4b8 | 22 | if(plusOrMinus) |
Nakor | 0:91a68e5fd4b8 | 23 | { |
Nakor | 0:91a68e5fd4b8 | 24 | levelFlux = (rand() % 4 + 1) / 2; |
Nakor | 0:91a68e5fd4b8 | 25 | } |
Nakor | 0:91a68e5fd4b8 | 26 | else |
Nakor | 0:91a68e5fd4b8 | 27 | { |
Nakor | 0:91a68e5fd4b8 | 28 | levelFlux = -(rand() % 4 + 1) / 2; |
Nakor | 0:91a68e5fd4b8 | 29 | } |
Nakor | 0:91a68e5fd4b8 | 30 | |
Nakor | 0:91a68e5fd4b8 | 31 | #if DEBUG_ENEMY_VERBOSE |
Nakor | 0:91a68e5fd4b8 | 32 | printf("LevelFlux: %i\n", levelFlux); |
Nakor | 0:91a68e5fd4b8 | 33 | #endif |
Nakor | 0:91a68e5fd4b8 | 34 | |
Nakor | 0:91a68e5fd4b8 | 35 | _level = thePlayer->getLevel() + levelFlux; |
Nakor | 0:91a68e5fd4b8 | 36 | |
Nakor | 0:91a68e5fd4b8 | 37 | while(_level <= 0) |
Nakor | 0:91a68e5fd4b8 | 38 | { |
Nakor | 0:91a68e5fd4b8 | 39 | srand ( time(NULL) ); |
Nakor | 0:91a68e5fd4b8 | 40 | |
Nakor | 0:91a68e5fd4b8 | 41 | #if DEBUG_ENEMY_VERBOSE |
Nakor | 0:91a68e5fd4b8 | 42 | printf("Plus or Minus: %i\n", plusOrMinus); |
Nakor | 0:91a68e5fd4b8 | 43 | #endif |
Nakor | 0:91a68e5fd4b8 | 44 | |
Nakor | 0:91a68e5fd4b8 | 45 | if(plusOrMinus) |
Nakor | 0:91a68e5fd4b8 | 46 | { |
Nakor | 0:91a68e5fd4b8 | 47 | levelFlux = (rand() % 4 + 1) / 2; |
Nakor | 0:91a68e5fd4b8 | 48 | } |
Nakor | 0:91a68e5fd4b8 | 49 | else |
Nakor | 0:91a68e5fd4b8 | 50 | { |
Nakor | 0:91a68e5fd4b8 | 51 | levelFlux = -(rand() % 4 + 1) / 2; |
Nakor | 0:91a68e5fd4b8 | 52 | } |
Nakor | 0:91a68e5fd4b8 | 53 | |
Nakor | 0:91a68e5fd4b8 | 54 | _level = thePlayer->getLevel() + levelFlux; |
Nakor | 0:91a68e5fd4b8 | 55 | |
Nakor | 0:91a68e5fd4b8 | 56 | if(_level > thePlayer->getLevel() + 2 || _level < thePlayer->getLevel() - 2) |
Nakor | 0:91a68e5fd4b8 | 57 | { |
Nakor | 0:91a68e5fd4b8 | 58 | _level = 0; |
Nakor | 0:91a68e5fd4b8 | 59 | } |
Nakor | 0:91a68e5fd4b8 | 60 | } |
Nakor | 0:91a68e5fd4b8 | 61 | |
Nakor | 0:91a68e5fd4b8 | 62 | _health = _level * 100; |
Nakor | 0:91a68e5fd4b8 | 63 | |
Nakor | 0:91a68e5fd4b8 | 64 | #if DEBUG_ENEMY |
Nakor | 0:91a68e5fd4b8 | 65 | printf("Creating enemy character @ level %i\n", _level); |
Nakor | 0:91a68e5fd4b8 | 66 | #endif |
Nakor | 0:91a68e5fd4b8 | 67 | |
Nakor | 0:91a68e5fd4b8 | 68 | printf("FIGHT!\n\n"); |
Nakor | 0:91a68e5fd4b8 | 69 | wait(.5); |
Nakor | 0:91a68e5fd4b8 | 70 | |
Nakor | 0:91a68e5fd4b8 | 71 | pPlayer = thePlayer; |
Nakor | 0:91a68e5fd4b8 | 72 | |
Nakor | 0:91a68e5fd4b8 | 73 | } |
Nakor | 0:91a68e5fd4b8 | 74 | |
Nakor | 0:91a68e5fd4b8 | 75 | // Deconstructor |
Nakor | 0:91a68e5fd4b8 | 76 | // Prints message to indicate death if health is less than zero. |
Nakor | 0:91a68e5fd4b8 | 77 | // Skips the message if deleted before health reaches zero (or below). |
Nakor | 0:91a68e5fd4b8 | 78 | enemy::~enemy() |
Nakor | 0:91a68e5fd4b8 | 79 | { |
Nakor | 0:91a68e5fd4b8 | 80 | if(_health <= 0) |
Nakor | 0:91a68e5fd4b8 | 81 | printf("Oh noes! You has killed meh...that's so mean.\n"); |
Nakor | 0:91a68e5fd4b8 | 82 | } |
Nakor | 0:91a68e5fd4b8 | 83 | |
Nakor | 0:91a68e5fd4b8 | 84 | |
Nakor | 0:91a68e5fd4b8 | 85 | // Applies damage to enemy after |
Nakor | 0:91a68e5fd4b8 | 86 | // doing a dodge roll. |
Nakor | 0:91a68e5fd4b8 | 87 | void enemy::takeDamage(int roll) |
Nakor | 0:91a68e5fd4b8 | 88 | { |
Nakor | 0:91a68e5fd4b8 | 89 | srand ( time(NULL) ); |
Nakor | 0:91a68e5fd4b8 | 90 | int dodgeRoll = ( rand() % 1000 ); |
Nakor | 0:91a68e5fd4b8 | 91 | |
Nakor | 0:91a68e5fd4b8 | 92 | int dodgeChance = 5 * _level; |
Nakor | 0:91a68e5fd4b8 | 93 | if(dodgeChance > 200) dodgeChance = 200; |
Nakor | 0:91a68e5fd4b8 | 94 | |
Nakor | 0:91a68e5fd4b8 | 95 | if(dodgeRoll > 1000 - dodgeChance) |
Nakor | 0:91a68e5fd4b8 | 96 | { |
Nakor | 0:91a68e5fd4b8 | 97 | printf("Enemy has dodged your attack!\n"); |
Nakor | 0:91a68e5fd4b8 | 98 | return; |
Nakor | 0:91a68e5fd4b8 | 99 | } |
Nakor | 0:91a68e5fd4b8 | 100 | |
Nakor | 0:91a68e5fd4b8 | 101 | _health -= roll; |
Nakor | 0:91a68e5fd4b8 | 102 | |
Nakor | 0:91a68e5fd4b8 | 103 | printf("Enemy has taken %i damage! (Current health: %i)\n", roll, _health); |
Nakor | 0:91a68e5fd4b8 | 104 | } |