Enemy class. Written for OOP Review. Derived from life_entity.

Dependents:   life_entity

Committer:
Nakor
Date:
Fri Apr 01 01:29:38 2011 +0000
Revision:
1:59274d3772ec
Parent:
0:91a68e5fd4b8
Documentation.

Who changed what in which revision?

UserRevisionLine numberNew 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 }