Version of Robotron arcade game using LPC1768, a Gameduino shield, a serial EEPROM (for high scores), two microswitch joysticks and two buttons plus a box to put it in. 20 levels of mayhem.

Dependencies:   25LCxxx_SPI CommonTypes Gameduino mbed

Committer:
RichardE
Date:
Mon Jun 17 15:10:43 2013 +0000
Revision:
18:70190f956a24
Parent:
13:50779b12ff51
Improved response to button 1 when entering high scores (HighScoreEntry.cpp).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 13:50779b12ff51 1 /*
RichardE 13:50779b12ff51 2 * SOURCE FILE : EnemyObject.h
RichardE 13:50779b12ff51 3 *
RichardE 13:50779b12ff51 4 * Base class for enemy objects.
RichardE 13:50779b12ff51 5 *
RichardE 13:50779b12ff51 6 */
RichardE 13:50779b12ff51 7
RichardE 13:50779b12ff51 8 #ifndef EnemyObjectIncluded
RichardE 13:50779b12ff51 9
RichardE 13:50779b12ff51 10 #define EnemyObjectIncluded
RichardE 13:50779b12ff51 11
RichardE 13:50779b12ff51 12 #include "GameObject.h"
RichardE 13:50779b12ff51 13 #include "PlayerObject.h"
RichardE 13:50779b12ff51 14 #include "EnemyType.h"
RichardE 13:50779b12ff51 15
RichardE 13:50779b12ff51 16 class EnemyObject : public GameObject {
RichardE 13:50779b12ff51 17
RichardE 13:50779b12ff51 18 public :
RichardE 13:50779b12ff51 19
RichardE 13:50779b12ff51 20 enum {
RichardE 13:50779b12ff51 21 Indestructable = 0xFF,
RichardE 13:50779b12ff51 22 };
RichardE 13:50779b12ff51 23
RichardE 13:50779b12ff51 24 // Number of hit points remaining.
RichardE 13:50779b12ff51 25 // When this reaches zero the enemy dies.
RichardE 13:50779b12ff51 26 // However, if this has the special value Indestructable then enemy cannot be killed.
RichardE 13:50779b12ff51 27 UInt8 HitPoints;
RichardE 13:50779b12ff51 28
RichardE 13:50779b12ff51 29 // Set to true of the enemy squashes humans.
RichardE 13:50779b12ff51 30 bool SquashesHumans;
RichardE 13:50779b12ff51 31
RichardE 13:50779b12ff51 32 // Pointer to array of pointers to enemies.
RichardE 13:50779b12ff51 33 // Some enemies may need to add new enemies (such as bullets or new spawning enemies) to this array.
RichardE 13:50779b12ff51 34 GameObject **Enemies;
RichardE 13:50779b12ff51 35
RichardE 13:50779b12ff51 36 /***************/
RichardE 13:50779b12ff51 37 /* CONSTRUCTOR */
RichardE 13:50779b12ff51 38 /***************/
RichardE 13:50779b12ff51 39 EnemyObject() :
RichardE 13:50779b12ff51 40 HitPoints( 1 ),
RichardE 13:50779b12ff51 41 SquashesHumans( false ),
RichardE 13:50779b12ff51 42 Enemies( (GameObject**)NULL ),
RichardE 13:50779b12ff51 43 chaseObject( &defaultChaseObject )
RichardE 13:50779b12ff51 44 {
RichardE 13:50779b12ff51 45 }
RichardE 13:50779b12ff51 46
RichardE 13:50779b12ff51 47 /**************/
RichardE 13:50779b12ff51 48 /* DESTRUCTOR */
RichardE 13:50779b12ff51 49 /**************/
RichardE 13:50779b12ff51 50 virtual ~EnemyObject() {
RichardE 13:50779b12ff51 51 }
RichardE 13:50779b12ff51 52
RichardE 13:50779b12ff51 53 /************************/
RichardE 13:50779b12ff51 54 /* GET GAME OBJECT TYPE */
RichardE 13:50779b12ff51 55 /************************/
RichardE 13:50779b12ff51 56 // Returns type of game object.
RichardE 13:50779b12ff51 57 virtual GameObjectTypes GetType( void ) {
RichardE 13:50779b12ff51 58 return EnemyObjectType;
RichardE 13:50779b12ff51 59 }
RichardE 7:e72691603fd3 60
RichardE 13:50779b12ff51 61 /*****************************/
RichardE 13:50779b12ff51 62 /* GET TYPE OF ENEMY THIS IS */
RichardE 13:50779b12ff51 63 /*****************************/
RichardE 13:50779b12ff51 64 // Returns enemy type.
RichardE 13:50779b12ff51 65 virtual EnemyType GetEnemyType( void ) = 0;
RichardE 13:50779b12ff51 66
RichardE 13:50779b12ff51 67 /*******************************************************/
RichardE 13:50779b12ff51 68 /* GET NUMBER OF POINTS AWARDED FOR KILLING THIS ENEMY */
RichardE 13:50779b12ff51 69 /*******************************************************/
RichardE 13:50779b12ff51 70 // Returns number of points (in BCD).
RichardE 13:50779b12ff51 71 virtual UInt8 GetPoints( void ) = 0;
RichardE 13:50779b12ff51 72
RichardE 13:50779b12ff51 73 /***********************/
RichardE 13:50779b12ff51 74 /* SET OBJECT TO CHASE */
RichardE 13:50779b12ff51 75 /***********************/
RichardE 13:50779b12ff51 76 // Pass pointer to object to chase in co.
RichardE 13:50779b12ff51 77 void SetChaseObject( GameObject *co ) {
RichardE 13:50779b12ff51 78 chaseObject = co;
RichardE 13:50779b12ff51 79 }
RichardE 13:50779b12ff51 80
RichardE 13:50779b12ff51 81 /*****************************************************************/
RichardE 13:50779b12ff51 82 /* PERFORM ANY INIITALISATION REQUIRED AT LEVEL START OR RESTART */
RichardE 13:50779b12ff51 83 /*****************************************************************/
RichardE 13:50779b12ff51 84 // Derived classes should override this if necessary.
RichardE 13:50779b12ff51 85 virtual void LevelRestart( void ) {
RichardE 13:50779b12ff51 86 }
RichardE 13:50779b12ff51 87
RichardE 13:50779b12ff51 88 /********************************************/
RichardE 13:50779b12ff51 89 /* INFORM ENEMY IT HAS BEEN HIT BY A BULLET */
RichardE 13:50779b12ff51 90 /********************************************/
RichardE 13:50779b12ff51 91 // Default implementation does nothing but if special behaviour
RichardE 13:50779b12ff51 92 // is required in a derived class then this should be overridden.
RichardE 13:50779b12ff51 93 // Note that this does NOT deal with determining if the enemy is dead or not.
RichardE 13:50779b12ff51 94 // An enemy ALWAYS dies if HitPoints reaches zero.
RichardE 13:50779b12ff51 95 virtual void RegisterHitByBullet( void ) {}
RichardE 13:50779b12ff51 96
RichardE 13:50779b12ff51 97 /*****************************************************/
RichardE 13:50779b12ff51 98 /* CHECK IF ALL SURVIVING ENEMIES ARE INDESTRUCTABLE */
RichardE 13:50779b12ff51 99 /*****************************************************/
RichardE 13:50779b12ff51 100 // Pass pointer to array of pointers to EnemyObjects in enemies.
RichardE 13:50779b12ff51 101 // Pass number of pointers in the array in enemyCount.
RichardE 13:50779b12ff51 102 static bool AreAllIndestructable( const EnemyObject **enemies, UInt8 enemyCount );
RichardE 13:50779b12ff51 103
RichardE 13:50779b12ff51 104 protected :
RichardE 13:50779b12ff51 105
RichardE 13:50779b12ff51 106 // Object to chase.
RichardE 13:50779b12ff51 107 GameObject *chaseObject;
RichardE 13:50779b12ff51 108
RichardE 13:50779b12ff51 109 private :
RichardE 13:50779b12ff51 110
RichardE 13:50779b12ff51 111 // Default object to chase.
RichardE 13:50779b12ff51 112 static PlayerObject defaultChaseObject;
RichardE 13:50779b12ff51 113
RichardE 13:50779b12ff51 114 };
RichardE 13:50779b12ff51 115
RichardE 13:50779b12ff51 116 #endif
RichardE 13:50779b12ff51 117
RichardE 13:50779b12ff51 118 /* END of EnemyObject.h */
RichardE 13:50779b12ff51 119
RichardE 13:50779b12ff51 120