ELEC2645 (2015/16) / Mbed 2 deprecated Elec2645_Space_Invaders_Project

Dependencies:   N5110 mbed

Committer:
el14mtg
Date:
Thu May 05 14:57:36 2016 +0000
Revision:
0:1a38a3ec358a
Elec2645 Space Invaders Project by Martin Georgiev

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el14mtg 0:1a38a3ec358a 1 /**
el14mtg 0:1a38a3ec358a 2 @file main.h
el14mtg 0:1a38a3ec358a 3 @brief Header file containing functions prototypes, defines and global variables.
el14mtg 0:1a38a3ec358a 4 @author Martin T. Georgiev
el14mtg 0:1a38a3ec358a 5 @date May 2016
el14mtg 0:1a38a3ec358a 6 */
el14mtg 0:1a38a3ec358a 7
el14mtg 0:1a38a3ec358a 8 #ifndef MAIN_H
el14mtg 0:1a38a3ec358a 9 #define MAIN_H
el14mtg 0:1a38a3ec358a 10
el14mtg 0:1a38a3ec358a 11 #define PI 3.14159265359
el14mtg 0:1a38a3ec358a 12
el14mtg 0:1a38a3ec358a 13 #include "mbed.h"
el14mtg 0:1a38a3ec358a 14
el14mtg 0:1a38a3ec358a 15 /**
el14mtg 0:1a38a3ec358a 16 @namespace myled
el14mtg 0:1a38a3ec358a 17 @brief GPIO output for status LED
el14mtg 0:1a38a3ec358a 18 */
el14mtg 0:1a38a3ec358a 19 /** LCD screen inputs and outputs
el14mtg 0:1a38a3ec358a 20 */
el14mtg 0:1a38a3ec358a 21 // VCC, SCE, RST, D/C, MOSI, SCLK, LED
el14mtg 0:1a38a3ec358a 22 N5110 lcd (PTE26 , PTA0 , PTC4 , PTD0 , PTD2 , PTD1 , PTC3);
el14mtg 0:1a38a3ec358a 23
el14mtg 0:1a38a3ec358a 24 // change this to alter tolerance of joystick direction
el14mtg 0:1a38a3ec358a 25 #define DIRECTION_TOLERANCE 0.05
el14mtg 0:1a38a3ec358a 26
el14mtg 0:1a38a3ec358a 27 // connections for joystick
el14mtg 0:1a38a3ec358a 28 /**
el14mtg 0:1a38a3ec358a 29 Joystick button
el14mtg 0:1a38a3ec358a 30 */
el14mtg 0:1a38a3ec358a 31 DigitalIn button(PTB11);
el14mtg 0:1a38a3ec358a 32 /**
el14mtg 0:1a38a3ec358a 33 Joystick X directions
el14mtg 0:1a38a3ec358a 34 */
el14mtg 0:1a38a3ec358a 35 AnalogIn xPot(PTB3);
el14mtg 0:1a38a3ec358a 36 /**
el14mtg 0:1a38a3ec358a 37 Joystick Y value
el14mtg 0:1a38a3ec358a 38 */
el14mtg 0:1a38a3ec358a 39 AnalogIn yPot(PTB2);
el14mtg 0:1a38a3ec358a 40
el14mtg 0:1a38a3ec358a 41 // timer to regularly read the joystick
el14mtg 0:1a38a3ec358a 42 /**
el14mtg 0:1a38a3ec358a 43 Ticker for Joystick
el14mtg 0:1a38a3ec358a 44 */
el14mtg 0:1a38a3ec358a 45 Ticker pollJoystick;
el14mtg 0:1a38a3ec358a 46 /**
el14mtg 0:1a38a3ec358a 47 interrupts
el14mtg 0:1a38a3ec358a 48 */
el14mtg 0:1a38a3ec358a 49 Ticker ticker1,ticker2;
el14mtg 0:1a38a3ec358a 50
el14mtg 0:1a38a3ec358a 51 /**
el14mtg 0:1a38a3ec358a 52 create enumerated type (0,1,2,3 etc. for direction)
el14mtg 0:1a38a3ec358a 53 could be extended for diagonals etc.
el14mtg 0:1a38a3ec358a 54 */
el14mtg 0:1a38a3ec358a 55 enum DirectionName {
el14mtg 0:1a38a3ec358a 56 UP,
el14mtg 0:1a38a3ec358a 57 DOWN,
el14mtg 0:1a38a3ec358a 58 LEFT,
el14mtg 0:1a38a3ec358a 59 RIGHT,
el14mtg 0:1a38a3ec358a 60 CENTRE,
el14mtg 0:1a38a3ec358a 61 UNKNOWN
el14mtg 0:1a38a3ec358a 62 };
el14mtg 0:1a38a3ec358a 63
el14mtg 0:1a38a3ec358a 64 /**
el14mtg 0:1a38a3ec358a 65 structfor Joystick
el14mtg 0:1a38a3ec358a 66 */
el14mtg 0:1a38a3ec358a 67 typedef struct JoyStick Joystick;
el14mtg 0:1a38a3ec358a 68 struct JoyStick {
el14mtg 0:1a38a3ec358a 69 float x; // current x value
el14mtg 0:1a38a3ec358a 70 float x0; // 'centred' x value
el14mtg 0:1a38a3ec358a 71 float y; // current y value
el14mtg 0:1a38a3ec358a 72 float y0; // 'centred' y value
el14mtg 0:1a38a3ec358a 73 int button; // button state (assume pull-down used, so 1 = pressed, 0 = unpressed)
el14mtg 0:1a38a3ec358a 74 DirectionName direction; // current direction
el14mtg 0:1a38a3ec358a 75 };
el14mtg 0:1a38a3ec358a 76
el14mtg 0:1a38a3ec358a 77
el14mtg 0:1a38a3ec358a 78 /**
el14mtg 0:1a38a3ec358a 79 Ticker interrupts
el14mtg 0:1a38a3ec358a 80 */
el14mtg 0:1a38a3ec358a 81 void timer1_isr();
el14mtg 0:1a38a3ec358a 82 void timer2_isr();
el14mtg 0:1a38a3ec358a 83
el14mtg 0:1a38a3ec358a 84 //-------------------------------Variables-------------------------//
el14mtg 0:1a38a3ec358a 85
el14mtg 0:1a38a3ec358a 86 /**
el14mtg 0:1a38a3ec358a 87 variable used in detecting whether game has finished of not
el14mtg 0:1a38a3ec358a 88 *//
el14mtg 0:1a38a3ec358a 89 bool gameState = false; //This variable checks whether the game is on.
el14mtg 0:1a38a3ec358a 90 /**
el14mtg 0:1a38a3ec358a 91 variable used in checking whether any enemy sprites have reached the player
el14mtg 0:1a38a3ec358a 92 */
el14mtg 0:1a38a3ec358a 93 bool enemyWin = false; //This variable is used to check if any sprites have reached the player
el14mtg 0:1a38a3ec358a 94
el14mtg 0:1a38a3ec358a 95 /**
el14mtg 0:1a38a3ec358a 96 array used to determine every aliens on or off state
el14mtg 0:1a38a3ec358a 97 */
el14mtg 0:1a38a3ec358a 98 bool enemy [15]; //this array checks the state of each individual enemy sprite;
el14mtg 0:1a38a3ec358a 99 /**
el14mtg 0:1a38a3ec358a 100 varuable used to count how any enemy sprites are still on
el14mtg 0:1a38a3ec358a 101 */
el14mtg 0:1a38a3ec358a 102 int enemyCounter = 16; //count the number of enemies still alive
el14mtg 0:1a38a3ec358a 103 /** variable used to determine whether or not projectile has hit enemy sprite of top of screen
el14mtg 0:1a38a3ec358a 104 */
el14mtg 0:1a38a3ec358a 105 bool bullet = false;
el14mtg 0:1a38a3ec358a 106 /**
el14mtg 0:1a38a3ec358a 107 variable holding screen parameters
el14mtg 0:1a38a3ec358a 108 */
el14mtg 0:1a38a3ec358a 109 int screenW = 83, screenH = 47;
el14mtg 0:1a38a3ec358a 110 /**
el14mtg 0:1a38a3ec358a 111 variables containing values of all enemy X and Y coordinates
el14mtg 0:1a38a3ec358a 112 */
el14mtg 0:1a38a3ec358a 113 int enemyX1 = 2 , enemyY1 = 4 , enemyX2 = 10 , enemyY2 = 4, enemyX3 = 18 , enemyY3 = 4,
el14mtg 0:1a38a3ec358a 114 enemyX4 = 26 , enemyY4 = 4 , enemyX5 = 34 , enemyY5 = 4 ,enemyX6 = 42 , enemyY6 = 4,
el14mtg 0:1a38a3ec358a 115 enemyX7 = 50 , enemyY7 = 4 , enemyX8 = 58 , enemyY8 = 4 , enemyX9 = 2 , enemyY9 = 11 ,
el14mtg 0:1a38a3ec358a 116 enemyX10 = 10 , enemyY10 = 11 , enemyX11 = 18 , enemyY11 = 11 , enemyX12 = 26 , enemyY12 = 11 ,
el14mtg 0:1a38a3ec358a 117 enemyX13 = 34 , enemyY13 = 11 , enemyX14 = 42 , enemyY14 = 11 , enemyX15 = 50 , enemyY15 = 11,
el14mtg 0:1a38a3ec358a 118 enemyX16 = 58 , enemyY16 = 11 ;
el14mtg 0:1a38a3ec358a 119 /**
el14mtg 0:1a38a3ec358a 120 Varibles used to move enemy Sprites down Rows and also declare their on/off state
el14mtg 0:1a38a3ec358a 121 */
el14mtg 0:1a38a3ec358a 122 int enemyRowCounter = 0, enemyNumber = 0; //this variable are used to determine which row the aliens
el14mtg 0:1a38a3ec358a 123 /**
el14mtg 0:1a38a3ec358a 124 Variables containing player X and Y coordinates
el14mtg 0:1a38a3ec358a 125 */
el14mtg 0:1a38a3ec358a 126 int playerX = 42 , playerY = 46 ;
el14mtg 0:1a38a3ec358a 127 /** Value of ticker2 time and Delay used in startUp function;
el14mtg 0:1a38a3ec358a 128 */
el14mtg 0:1a38a3ec358a 129 float t = 0.05, Delay=0;
el14mtg 0:1a38a3ec358a 130 /**
el14mtg 0:1a38a3ec358a 131 Variables containing Projectile X and Y coordinates
el14mtg 0:1a38a3ec358a 132 */
el14mtg 0:1a38a3ec358a 133 int bulletX = playerX, bulletY = playerY-6;
el14mtg 0:1a38a3ec358a 134
el14mtg 0:1a38a3ec358a 135 //-----------------------------------Functions--------------------------------//
el14mtg 0:1a38a3ec358a 136 /**
el14mtg 0:1a38a3ec358a 137 funtion played on device start up which displays module code and author
el14mtg 0:1a38a3ec358a 138 */
el14mtg 0:1a38a3ec358a 139 void startUp();
el14mtg 0:1a38a3ec358a 140 /**
el14mtg 0:1a38a3ec358a 141 Funtion containing project Menu
el14mtg 0:1a38a3ec358a 142 */
el14mtg 0:1a38a3ec358a 143 void Menu();
el14mtg 0:1a38a3ec358a 144 /**
el14mtg 0:1a38a3ec358a 145 Funtion containing all game functions
el14mtg 0:1a38a3ec358a 146 */
el14mtg 0:1a38a3ec358a 147 void Game();
el14mtg 0:1a38a3ec358a 148 /**
el14mtg 0:1a38a3ec358a 149 Time funtion used for convenience instead of if statements
el14mtg 0:1a38a3ec358a 150 */
el14mtg 0:1a38a3ec358a 151 void timeDelay();
el14mtg 0:1a38a3ec358a 152 /**
el14mtg 0:1a38a3ec358a 153 funtion that turns all enemy sprites on before starting game
el14mtg 0:1a38a3ec358a 154 */
el14mtg 0:1a38a3ec358a 155 void alienStateInitialise();
el14mtg 0:1a38a3ec358a 156 /**
el14mtg 0:1a38a3ec358a 157 Funtion that draws enemy sprites and determined whether certain alien is on/off
el14mtg 0:1a38a3ec358a 158 */
el14mtg 0:1a38a3ec358a 159 void alien(int x, int y,bool state);
el14mtg 0:1a38a3ec358a 160 /**
el14mtg 0:1a38a3ec358a 161 funtion containing all enemy sprites
el14mtg 0:1a38a3ec358a 162 */
el14mtg 0:1a38a3ec358a 163 void groupAlien(int x,int y);
el14mtg 0:1a38a3ec358a 164 /**
el14mtg 0:1a38a3ec358a 165 Funtion responsible for the movement of enemy sprites
el14mtg 0:1a38a3ec358a 166 */
el14mtg 0:1a38a3ec358a 167 void moveAliens();
el14mtg 0:1a38a3ec358a 168 /**
el14mtg 0:1a38a3ec358a 169 funtion that draws player sprite
el14mtg 0:1a38a3ec358a 170 */
el14mtg 0:1a38a3ec358a 171 void player(int x, int y);
el14mtg 0:1a38a3ec358a 172 /**
el14mtg 0:1a38a3ec358a 173 function responsible for player sprite movement
el14mtg 0:1a38a3ec358a 174 */
el14mtg 0:1a38a3ec358a 175 int playerMove();
el14mtg 0:1a38a3ec358a 176 /**
el14mtg 0:1a38a3ec358a 177 Function that draws the projetile Sprite
el14mtg 0:1a38a3ec358a 178 */
el14mtg 0:1a38a3ec358a 179 void projectile(int x, int y);
el14mtg 0:1a38a3ec358a 180 /**
el14mtg 0:1a38a3ec358a 181 Funtion responsible for firing projectile
el14mtg 0:1a38a3ec358a 182 */
el14mtg 0:1a38a3ec358a 183 void fireProjectile();
el14mtg 0:1a38a3ec358a 184 /**
el14mtg 0:1a38a3ec358a 185 Function which detect whether projectile has collided with top of screen or enemy srites that are still on
el14mtg 0:1a38a3ec358a 186 */
el14mtg 0:1a38a3ec358a 187 void collision();
el14mtg 0:1a38a3ec358a 188 /**
el14mtg 0:1a38a3ec358a 189 funtion which detects whether any enemy has reached player
el14mtg 0:1a38a3ec358a 190 */
el14mtg 0:1a38a3ec358a 191 void enemyDetection();
el14mtg 0:1a38a3ec358a 192
el14mtg 0:1a38a3ec358a 193 /**
el14mtg 0:1a38a3ec358a 194 Funtion to calibrate neutral position of Joystick
el14mtg 0:1a38a3ec358a 195 */
el14mtg 0:1a38a3ec358a 196 void calibrateJoystick();
el14mtg 0:1a38a3ec358a 197 /**
el14mtg 0:1a38a3ec358a 198 Funtion updating the joystick values
el14mtg 0:1a38a3ec358a 199 */
el14mtg 0:1a38a3ec358a 200 void updateJoystick();