Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.h@0:1a38a3ec358a, 2016-05-05 (annotated)
- 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?
| User | Revision | Line number | New 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(); |