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:
4:673eb9735d44
Improved response to button 1 when entering high scores (HighScoreEntry.cpp).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 4:673eb9735d44 1 /*
RichardE 4:673eb9735d44 2 * SOURCE FILE : BulletVelocities.h
RichardE 4:673eb9735d44 3 *
RichardE 4:673eb9735d44 4 * Converts from set of joystick inputs to horizontal and vertical velocities.
RichardE 4:673eb9735d44 5 *
RichardE 4:673eb9735d44 6 */
RichardE 4:673eb9735d44 7
RichardE 4:673eb9735d44 8 #ifndef BulletVelocitiesIncluded
RichardE 4:673eb9735d44 9
RichardE 4:673eb9735d44 10 #define BulletVelocitiesIncluded
RichardE 4:673eb9735d44 11
RichardE 4:673eb9735d44 12 #include "Int16Pair.h"
RichardE 4:673eb9735d44 13
RichardE 4:673eb9735d44 14 class BulletVelocities {
RichardE 4:673eb9735d44 15
RichardE 4:673eb9735d44 16 public :
RichardE 4:673eb9735d44 17
RichardE 4:673eb9735d44 18 /***************/
RichardE 4:673eb9735d44 19 /* CONSTRUCTOR */
RichardE 4:673eb9735d44 20 /***************/
RichardE 4:673eb9735d44 21 // Pass velocity for a horizontally moving bullet in h.
RichardE 4:673eb9735d44 22 // Pass velocity for a vertically moving bullet in v.
RichardE 4:673eb9735d44 23 BulletVelocities( Int16 h, Int16 v ) {
RichardE 4:673eb9735d44 24 // Calculate velocities used on the diagonal.
RichardE 4:673eb9735d44 25 // This is really doing hd = h * cos( 45 degrees ) and
RichardE 4:673eb9735d44 26 // vd = v * sin( 45 degrees ).
RichardE 4:673eb9735d44 27 Int16 hd = (Int16)floor( (double)h * 0.707 + 0.5 );
RichardE 4:673eb9735d44 28 Int16 vd = (Int16)floor( (double)v * 0.707 + 0.5 );
RichardE 4:673eb9735d44 29 // Initialise the table of velocities.
RichardE 4:673eb9735d44 30 Int16Pair *ptr = pairs;
RichardE 4:673eb9735d44 31 // No joystick contacts closed. Index 0.
RichardE 4:673eb9735d44 32 ptr->X = 0;
RichardE 4:673eb9735d44 33 ptr->Y = 0;
RichardE 4:673eb9735d44 34 ptr++;
RichardE 4:673eb9735d44 35 // Joystick up. Index 1
RichardE 4:673eb9735d44 36 ptr->X = 0;
RichardE 4:673eb9735d44 37 ptr->Y = -v;
RichardE 4:673eb9735d44 38 ptr++;
RichardE 4:673eb9735d44 39 // Joystick down. Index 2.
RichardE 4:673eb9735d44 40 ptr->X = 0;
RichardE 4:673eb9735d44 41 ptr->Y = v;
RichardE 4:673eb9735d44 42 ptr++;
RichardE 4:673eb9735d44 43 // Joystick up and down (impossible). Index 3.
RichardE 4:673eb9735d44 44 ptr->X = 0;
RichardE 4:673eb9735d44 45 ptr->Y = v;
RichardE 4:673eb9735d44 46 ptr++;
RichardE 4:673eb9735d44 47 // Joystick left. Index 4.
RichardE 4:673eb9735d44 48 ptr->X = -h;
RichardE 4:673eb9735d44 49 ptr->Y = 0;
RichardE 4:673eb9735d44 50 ptr++;
RichardE 4:673eb9735d44 51 // Joystick left and up. Index 5.
RichardE 4:673eb9735d44 52 ptr->X = -hd;
RichardE 4:673eb9735d44 53 ptr->Y = -vd;
RichardE 4:673eb9735d44 54 ptr++;
RichardE 4:673eb9735d44 55 // Joystick left and down. Index 6.
RichardE 4:673eb9735d44 56 ptr->X = -hd;
RichardE 4:673eb9735d44 57 ptr->Y = vd;
RichardE 4:673eb9735d44 58 ptr++;
RichardE 4:673eb9735d44 59 // Joystick up, down and left (impossible). Index 7.
RichardE 4:673eb9735d44 60 ptr->X = 0;
RichardE 4:673eb9735d44 61 ptr->Y = v;
RichardE 4:673eb9735d44 62 ptr++;
RichardE 4:673eb9735d44 63 // Joystick right. Index 8.
RichardE 4:673eb9735d44 64 ptr->X = h;
RichardE 4:673eb9735d44 65 ptr->Y = 0;
RichardE 4:673eb9735d44 66 ptr++;
RichardE 4:673eb9735d44 67 // Joystick right and up. Index 9.
RichardE 4:673eb9735d44 68 ptr->X = hd;
RichardE 4:673eb9735d44 69 ptr->Y = -vd;
RichardE 4:673eb9735d44 70 ptr++;
RichardE 4:673eb9735d44 71 // Joystick right and down. Index 10.
RichardE 4:673eb9735d44 72 ptr->X = hd;
RichardE 4:673eb9735d44 73 ptr->Y = vd;
RichardE 4:673eb9735d44 74 ptr++;
RichardE 4:673eb9735d44 75 // Joystick up, down and right (impossible). Index 11.
RichardE 4:673eb9735d44 76 ptr->X = 0;
RichardE 4:673eb9735d44 77 ptr->Y = v;
RichardE 4:673eb9735d44 78 ptr++;
RichardE 4:673eb9735d44 79 // Joystick left and right (impossible). Index 12.
RichardE 4:673eb9735d44 80 ptr->X = 0;
RichardE 4:673eb9735d44 81 ptr->Y = v;
RichardE 4:673eb9735d44 82 ptr++;
RichardE 4:673eb9735d44 83 // Joystick up, left and right (impossible). Index 13.
RichardE 4:673eb9735d44 84 ptr->X = 0;
RichardE 4:673eb9735d44 85 ptr->Y = v;
RichardE 4:673eb9735d44 86 ptr++;
RichardE 4:673eb9735d44 87 // Joystick down, left and right (impossible) Index 14.
RichardE 4:673eb9735d44 88 ptr->X = 0;
RichardE 4:673eb9735d44 89 ptr->Y = v;
RichardE 4:673eb9735d44 90 ptr++;
RichardE 4:673eb9735d44 91 // Joystick up, down, left and right (impossible). Index 15.
RichardE 4:673eb9735d44 92 ptr->X = 0;
RichardE 4:673eb9735d44 93 ptr->Y = v;
RichardE 4:673eb9735d44 94 ptr++;
RichardE 4:673eb9735d44 95 }
RichardE 4:673eb9735d44 96
RichardE 4:673eb9735d44 97 /*******************************************************/
RichardE 4:673eb9735d44 98 /* GET VELOCITIES FOR A COMBINATION OF JOYSTICK INPUTS */
RichardE 4:673eb9735d44 99 /*******************************************************/
RichardE 4:673eb9735d44 100 // Pass a map containing joystick inputs where a set bit indicates a closed contact.
RichardE 4:673eb9735d44 101 // Bits must be ordered as follows :
RichardE 4:673eb9735d44 102 // Bit 0 = Up.
RichardE 4:673eb9735d44 103 // Bit 1 = Down.
RichardE 4:673eb9735d44 104 // Bit 2 = Left.
RichardE 4:673eb9735d44 105 // Bit 3 = Right.
RichardE 4:673eb9735d44 106 // Remaining bits are ignored.
RichardE 4:673eb9735d44 107 const Int16Pair *GetVelocities( UInt8 joyMap ) const {
RichardE 4:673eb9735d44 108 return pairs + ( joyMap & 0x0F );
RichardE 4:673eb9735d44 109 }
RichardE 4:673eb9735d44 110
RichardE 4:673eb9735d44 111 private :
RichardE 4:673eb9735d44 112
RichardE 4:673eb9735d44 113 // Horizontal and vertical velocities for each combination of joystick inputs.
RichardE 4:673eb9735d44 114 Int16Pair pairs[ 16 ];
RichardE 4:673eb9735d44 115
RichardE 4:673eb9735d44 116 };
RichardE 4:673eb9735d44 117
RichardE 4:673eb9735d44 118 #endif
RichardE 4:673eb9735d44 119
RichardE 4:673eb9735d44 120 /* END of BulletVelocities.h */
RichardE 4:673eb9735d44 121