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
EnemyFactory.cpp@18:70190f956a24, 2013-06-17 (annotated)
- 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?
User | Revision | Line number | New 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 | } |