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:
8:82d88f9381f3
Improved response to button 1 when entering high scores (HighScoreEntry.cpp).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 8:82d88f9381f3 1 /*
RichardE 8:82d88f9381f3 2 * SOURCE FILE : MutantObject.cpp
RichardE 8:82d88f9381f3 3 *
RichardE 8:82d88f9381f3 4 * Represents a mutated human.
RichardE 8:82d88f9381f3 5 *
RichardE 8:82d88f9381f3 6 */
RichardE 8:82d88f9381f3 7
RichardE 8:82d88f9381f3 8 #include "MutantObject.h"
RichardE 8:82d88f9381f3 9 #include "SpriteImageId.h"
RichardE 8:82d88f9381f3 10
RichardE 8:82d88f9381f3 11 // Speed at which grunt moves.
RichardE 8:82d88f9381f3 12 Int16 MutantObject::mutantSpeed = FromPixel( 1 );
RichardE 8:82d88f9381f3 13
RichardE 8:82d88f9381f3 14 /**********************/
RichardE 8:82d88f9381f3 15 /* START OFF A MUTANT */
RichardE 8:82d88f9381f3 16 /**********************/
RichardE 8:82d88f9381f3 17 // Pass pointer to human mutant will replace in human.
RichardE 8:82d88f9381f3 18 // Pass pointer to object it will chase in player.
RichardE 8:82d88f9381f3 19 void MutantObject::Start( HumanObject *human, GameObject *player ) {
RichardE 8:82d88f9381f3 20 // Copy coordinate of human to mutant.
RichardE 8:82d88f9381f3 21 Xco = human->Xco;
RichardE 8:82d88f9381f3 22 Yco = human->Yco;
RichardE 8:82d88f9381f3 23 // Use the same sprite number as the human.
RichardE 8:82d88f9381f3 24 SpriteNumber = human->SpriteNumber;
RichardE 8:82d88f9381f3 25 // Use an appropriate sprite image.
RichardE 8:82d88f9381f3 26 SpriteImage = ( human->GetHumanType() == HumanObject::Woman ) ? MutantWomanImage : MutantManImage;
RichardE 8:82d88f9381f3 27 // Make it chase the player.
RichardE 8:82d88f9381f3 28 SetChaseObject( player );
RichardE 8:82d88f9381f3 29 // Set initial direction as either up or down.
RichardE 8:82d88f9381f3 30 direction = ( Yco > chaseObject->Yco ) ? UpDir4 : DownDir4;
RichardE 8:82d88f9381f3 31 }
RichardE 8:82d88f9381f3 32
RichardE 8:82d88f9381f3 33 /************************/
RichardE 8:82d88f9381f3 34 /* MOVE THE GAME OBJECT */
RichardE 8:82d88f9381f3 35 /************************/
RichardE 8:82d88f9381f3 36 void MutantObject::ProtectedMove( void ) {
RichardE 8:82d88f9381f3 37 switch( direction ) {
RichardE 8:82d88f9381f3 38 case UpDir4 :
RichardE 8:82d88f9381f3 39 Yco -= mutantSpeed;
RichardE 8:82d88f9381f3 40 if( Yco <= chaseObject->Yco ) {
RichardE 8:82d88f9381f3 41 direction = ( Xco > chaseObject->Xco ) ? LeftDir4 : RightDir4;
RichardE 8:82d88f9381f3 42 }
RichardE 8:82d88f9381f3 43 break;
RichardE 8:82d88f9381f3 44 case RightDir4 :
RichardE 8:82d88f9381f3 45 Xco += mutantSpeed;
RichardE 8:82d88f9381f3 46 if( Xco >= chaseObject->Xco ) {
RichardE 8:82d88f9381f3 47 direction = ( Yco > chaseObject->Yco ) ? UpDir4 : DownDir4;
RichardE 8:82d88f9381f3 48 }
RichardE 8:82d88f9381f3 49 break;
RichardE 8:82d88f9381f3 50 case DownDir4 :
RichardE 8:82d88f9381f3 51 Yco += mutantSpeed;
RichardE 8:82d88f9381f3 52 if( Yco >= chaseObject->Yco ) {
RichardE 8:82d88f9381f3 53 direction = ( Xco > chaseObject->Xco ) ? LeftDir4 : RightDir4;
RichardE 8:82d88f9381f3 54 }
RichardE 8:82d88f9381f3 55 break;
RichardE 8:82d88f9381f3 56 case LeftDir4 :
RichardE 8:82d88f9381f3 57 Xco -= mutantSpeed;
RichardE 8:82d88f9381f3 58 if( Xco <= chaseObject->Xco ) {
RichardE 8:82d88f9381f3 59 direction = ( Yco > chaseObject->Yco ) ? UpDir4 : DownDir4;
RichardE 8:82d88f9381f3 60 }
RichardE 8:82d88f9381f3 61 break;
RichardE 8:82d88f9381f3 62 }
RichardE 8:82d88f9381f3 63 }
RichardE 8:82d88f9381f3 64