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

Revision:
7:e72691603fd3
Child:
13:50779b12ff51
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/EnemyObject.h	Sat Jun 08 16:44:54 2013 +0000
@@ -0,0 +1,112 @@
+/*
+ * SOURCE FILE : EnemyObject.h
+ *
+ * Base class for enemy objects.
+ *
+ */
+
+#ifndef EnemyObjectIncluded
+  
+  #define EnemyObjectIncluded
+
+  #include "GameObject.h"
+  #include "PlayerObject.h"
+    #include "EnemyType.h"
+
+  class EnemyObject : public GameObject {
+    
+  public :
+
+        enum {
+            Indestructable = 0xFF,
+        };
+
+        // Number of hit points remaining.
+        // When this reaches zero the enemy dies.
+        // However, if this has the special value Indestructable then enemy cannot be killed.
+        UInt8 HitPoints;
+        
+        // Set to true of the enemy squashes humans.
+        bool SquashesHumans;
+        
+        // Pointer to array of pointers to enemies.
+        // Some enemies may need to add new enemies (such as bullets or new spawning enemies) to this array.
+        GameObject **Enemies;
+        
+    /***************/
+    /* CONSTRUCTOR */
+    /***************/
+    EnemyObject() :
+            HitPoints( 1 ),
+            SquashesHumans( false ),
+            Enemies( (GameObject**)NULL ),
+      chaseObject( &defaultChaseObject )
+    {
+    }
+
+    /**************/
+    /* DESTRUCTOR */
+    /**************/
+    virtual ~EnemyObject() {
+    }
+    
+    /************************/
+    /* GET GAME OBJECT TYPE */
+    /************************/
+    // Returns type of game object.
+    virtual GameObjectTypes GetType( void ) {
+      return EnemyObjectType;
+    }
+
+        /*****************************/
+        /* GET TYPE OF ENEMY THIS IS */
+        /*****************************/
+        // Returns enemy type.
+        virtual EnemyType GetEnemyType( void ) = 0;
+        
+    /*******************************************************/
+    /* GET NUMBER OF POINTS AWARDED FOR KILLING THIS ENEMY */
+    /*******************************************************/
+    // Returns number of points (in BCD).
+    virtual UInt8 GetPoints( void ) = 0;
+
+    /***********************/
+    /* SET OBJECT TO CHASE */
+    /***********************/
+    // Pass pointer to object to chase in co.
+    void SetChaseObject( GameObject *co ) {
+      chaseObject = co;
+    }
+    
+        /********************************************/
+        /* INFORM ENEMY IT HAS BEEN HIT BY A BULLET */
+        /********************************************/
+        // Default implementation does nothing but if special behaviour
+        // is required in a derived class then this should be overridden.
+        // Note that this does NOT deal with determining if the enemy is dead or not.
+        // An enemy ALWAYS dies if HitPoints reaches zero.
+        virtual void RegisterHitByBullet( void ) {}
+        
+        /*****************************************************/
+        /* CHECK IF ALL SURVIVING ENEMIES ARE INDESTRUCTABLE */
+        /*****************************************************/
+        // Pass pointer to array of pointers to EnemyObjects in enemies.
+        // Pass number of pointers in the array in enemyCount.
+        static bool AreAllIndestructable( const EnemyObject **enemies, UInt8 enemyCount );
+        
+  protected :
+
+    // Object to chase.
+    GameObject *chaseObject;
+    
+  private :
+  
+    // Default object to chase.
+    static PlayerObject defaultChaseObject;
+    
+  };
+    
+#endif
+
+/* END of EnemyObject.h */
+