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:
11:2ddaf46e95cb
Improved response to button 1 when entering high scores (HighScoreEntry.cpp).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 10:bfa1c307c99d 1 /*
RichardE 10:bfa1c307c99d 2 * SOURCE FILE : EnemyFactory.cpp
RichardE 10:bfa1c307c99d 3 *
RichardE 10:bfa1c307c99d 4 * Definition of class EnemyFactory.
RichardE 10:bfa1c307c99d 5 *
RichardE 10:bfa1c307c99d 6 */
RichardE 10:bfa1c307c99d 7
RichardE 10:bfa1c307c99d 8 #include "EnemyFactory.h"
RichardE 10:bfa1c307c99d 9
RichardE 10:bfa1c307c99d 10 // Define this for debugging messages.
RichardE 11:2ddaf46e95cb 11 #undef CHATTY
RichardE 10:bfa1c307c99d 12
RichardE 10:bfa1c307c99d 13 #ifdef CHATTY
RichardE 10:bfa1c307c99d 14 #include "mbed.h"
RichardE 10:bfa1c307c99d 15 extern Serial pc;
RichardE 10:bfa1c307c99d 16 #endif
RichardE 10:bfa1c307c99d 17
RichardE 10:bfa1c307c99d 18 // An instance of this class.
RichardE 10:bfa1c307c99d 19 EnemyFactory EnemyFactory::Instance;
RichardE 10:bfa1c307c99d 20
RichardE 10:bfa1c307c99d 21 /***************/
RichardE 10:bfa1c307c99d 22 /* CONSTRUCTOR */
RichardE 10:bfa1c307c99d 23 /***************/
RichardE 10:bfa1c307c99d 24 EnemyFactory::EnemyFactory() :
RichardE 10:bfa1c307c99d 25 enemyCount( 0UL )
RichardE 10:bfa1c307c99d 26 {
RichardE 10:bfa1c307c99d 27 }
RichardE 10:bfa1c307c99d 28
RichardE 10:bfa1c307c99d 29 /**************/
RichardE 10:bfa1c307c99d 30 /* DESTRUCTOR */
RichardE 10:bfa1c307c99d 31 /**************/
RichardE 10:bfa1c307c99d 32 EnemyFactory::~EnemyFactory()
RichardE 10:bfa1c307c99d 33 {
RichardE 10:bfa1c307c99d 34 }
RichardE 10:bfa1c307c99d 35
RichardE 10:bfa1c307c99d 36 /*****************/
RichardE 10:bfa1c307c99d 37 /* MAKE AN ENEMY */
RichardE 10:bfa1c307c99d 38 /*****************/
RichardE 10:bfa1c307c99d 39 // Pass enemy type in et.
RichardE 10:bfa1c307c99d 40 // Returns a newly created object or NULL on failure.
RichardE 10:bfa1c307c99d 41 EnemyObject* EnemyFactory::MakeEnemy( EnemyType et ) {
RichardE 10:bfa1c307c99d 42 EnemyObject *enemy;
RichardE 10:bfa1c307c99d 43 switch( et ) {
RichardE 10:bfa1c307c99d 44
RichardE 10:bfa1c307c99d 45 case Grunt :
RichardE 10:bfa1c307c99d 46 enemy = new GruntObject();
RichardE 10:bfa1c307c99d 47 break;
RichardE 10:bfa1c307c99d 48
RichardE 10:bfa1c307c99d 49 case BlueMeany :
RichardE 10:bfa1c307c99d 50 enemy = new BlueMeanyObject();
RichardE 10:bfa1c307c99d 51 break;
RichardE 10:bfa1c307c99d 52
RichardE 10:bfa1c307c99d 53 case Crusher :
RichardE 10:bfa1c307c99d 54 enemy = new CrusherObject();
RichardE 10:bfa1c307c99d 55 break;
RichardE 10:bfa1c307c99d 56
RichardE 10:bfa1c307c99d 57 case Brain :
RichardE 10:bfa1c307c99d 58 enemy = new BrainObject();
RichardE 10:bfa1c307c99d 59 break;
RichardE 10:bfa1c307c99d 60
RichardE 10:bfa1c307c99d 61 case BrainBullet :
RichardE 10:bfa1c307c99d 62 enemy = new BrainBulletObject();
RichardE 10:bfa1c307c99d 63 break;
RichardE 10:bfa1c307c99d 64
RichardE 10:bfa1c307c99d 65 case Mutant :
RichardE 10:bfa1c307c99d 66 enemy = new MutantObject();
RichardE 10:bfa1c307c99d 67 break;
RichardE 10:bfa1c307c99d 68
RichardE 10:bfa1c307c99d 69 default :
RichardE 10:bfa1c307c99d 70 enemy = (EnemyObject*)NULL;
RichardE 10:bfa1c307c99d 71 break;
RichardE 10:bfa1c307c99d 72
RichardE 10:bfa1c307c99d 73 }
RichardE 10:bfa1c307c99d 74
RichardE 10:bfa1c307c99d 75 if( enemy != (EnemyObject*)NULL ) {
RichardE 10:bfa1c307c99d 76 enemyCount++;
RichardE 10:bfa1c307c99d 77 #ifdef CHATTY
RichardE 10:bfa1c307c99d 78 pc.printf( "Enemy type %d created. %lu enemies exist.\r\n", (int)enemy->GetEnemyType(), enemyCount );
RichardE 10:bfa1c307c99d 79 #endif
RichardE 10:bfa1c307c99d 80 }
RichardE 10:bfa1c307c99d 81
RichardE 10:bfa1c307c99d 82 return enemy;
RichardE 10:bfa1c307c99d 83 }
RichardE 10:bfa1c307c99d 84
RichardE 10:bfa1c307c99d 85 /*******************/
RichardE 10:bfa1c307c99d 86 /* DELETE AN ENEMY */
RichardE 10:bfa1c307c99d 87 /*******************/
RichardE 10:bfa1c307c99d 88 // Pass pointer to enemy to delete.
RichardE 10:bfa1c307c99d 89 // ONLY USE THIS ON OBJECTS CREATED USING MakeEnemy method.
RichardE 10:bfa1c307c99d 90 void EnemyFactory::DeleteEnemy( EnemyObject *enemy ) {
RichardE 10:bfa1c307c99d 91 enemyCount--;
RichardE 10:bfa1c307c99d 92 #ifdef CHATTY
RichardE 10:bfa1c307c99d 93 pc.printf( "Enemy type %d deleted. %lu enemies exist.\r\n", (int)enemy->GetEnemyType(), enemyCount );
RichardE 10:bfa1c307c99d 94 #endif
RichardE 10:bfa1c307c99d 95 delete enemy;
RichardE 10:bfa1c307c99d 96 }