Laila Al Badwawi 200906179 SpaceInvaders I declare this my own independent work and understand the university rules on plagiarism.

Dependencies:   mbed

Committer:
fy14lkaa
Date:
Thu May 09 14:23:44 2019 +0000
Revision:
150:bd02678bfdb1
Parent:
149:bd0f37008f5a
finished the games and the last formatting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fy14lkaa 3:985fab783b92 1 ///////// pre-processor directives ////////
fy14lkaa 0:e2af4c8e462e 2 #include "mbed.h"
fy14lkaa 0:e2af4c8e462e 3 #include "Gamepad.h"
fy14lkaa 0:e2af4c8e462e 4 #include "N5110.h"
fy14lkaa 127:8bd8cf136f19 5 #include "SpaceEngine.h"
fy14lkaa 8:eec0d7fc365f 6
fy14lkaa 150:bd02678bfdb1 7 /*
fy14lkaa 150:bd02678bfdb1 8 ELEC2645 Embedded Systems Project
fy14lkaa 150:bd02678bfdb1 9 School of Electronic & Electrical Engineering
fy14lkaa 150:bd02678bfdb1 10 University of Leeds
fy14lkaa 150:bd02678bfdb1 11 Name: Laila Al Badwawi
fy14lkaa 150:bd02678bfdb1 12 Username: fy14lkaa
fy14lkaa 150:bd02678bfdb1 13 Student ID Number:200906179
fy14lkaa 150:bd02678bfdb1 14 Date: 9/5/2019
fy14lkaa 150:bd02678bfdb1 15 */
fy14lkaa 131:2084e4a8338f 16
fy14lkaa 133:eed60548d170 17
fy14lkaa 133:eed60548d170 18
fy14lkaa 149:bd0f37008f5a 19 const int spaceman [48][48]= {
fy14lkaa 133:eed60548d170 20
fy14lkaa 133:eed60548d170 21
fy14lkaa 149:bd0f37008f5a 22 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 23 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 24 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 25 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 26 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 27 {0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 28 {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 29 {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 30 {0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 31 {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 32 {0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 33 {0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
fy14lkaa 149:bd0f37008f5a 34 {0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 35 {0,0,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 36 {0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 37 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 38 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 39 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 40 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 41 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 42 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 43 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 44 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 45 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 46 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 47 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 48 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 49 {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 50 {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 51 {0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 52 {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 53 {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 54 {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0},
fy14lkaa 149:bd0f37008f5a 55 {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0},
fy14lkaa 149:bd0f37008f5a 56 {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0},
fy14lkaa 149:bd0f37008f5a 57 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
fy14lkaa 149:bd0f37008f5a 58 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0},
fy14lkaa 149:bd0f37008f5a 59 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 60 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 149:bd0f37008f5a 61 {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
fy14lkaa 133:eed60548d170 62 };
fy14lkaa 133:eed60548d170 63
fy14lkaa 133:eed60548d170 64
fy14lkaa 133:eed60548d170 65
fy14lkaa 133:eed60548d170 66
fy14lkaa 133:eed60548d170 67
fy14lkaa 133:eed60548d170 68
fy14lkaa 131:2084e4a8338f 69 // structs //
fy14lkaa 0:e2af4c8e462e 70 struct UserInput {
fy14lkaa 0:e2af4c8e462e 71 Direction d;
fy14lkaa 0:e2af4c8e462e 72 float mag;
fy14lkaa 0:e2af4c8e462e 73 };
fy14lkaa 133:eed60548d170 74
fy14lkaa 133:eed60548d170 75
fy14lkaa 127:8bd8cf136f19 76 /////////////// objects ///////////////
fy14lkaa 50:f538885a788b 77 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
fy14lkaa 0:e2af4c8e462e 78 Gamepad pad;
fy14lkaa 127:8bd8cf136f19 79 SpaceEngine space;
fy14lkaa 13:9d6ee753eca6 80
fy14lkaa 3:985fab783b92 81 ///////////// prototypes ///////////////
fy14lkaa 0:e2af4c8e462e 82 void init();
fy14lkaa 0:e2af4c8e462e 83 void update_game(UserInput input);
fy14lkaa 0:e2af4c8e462e 84 void render();
fy14lkaa 0:e2af4c8e462e 85 void welcome();
fy14lkaa 12:45b1249b3d9a 86
fy14lkaa 13:9d6ee753eca6 87 ///////////// functions ////////////////
fy14lkaa 54:095eae44895b 88 int main()
fy14lkaa 54:095eae44895b 89 {
fy14lkaa 12:45b1249b3d9a 90
fy14lkaa 149:bd0f37008f5a 91 int fps = 8; // declaration of intger value of fps.
fy14lkaa 149:bd0f37008f5a 92 init(); // initialise first, then display welcome screen
fy14lkaa 149:bd0f37008f5a 93 welcome(); // wait the player to begin
fy14lkaa 149:bd0f37008f5a 94 render(); // start with drawing the first frame.
fy14lkaa 149:bd0f37008f5a 95 wait(1.0f/fps); // wait for one frame period
fy14lkaa 54:095eae44895b 96
fy14lkaa 0:e2af4c8e462e 97 while (1) {
fy14lkaa 149:bd0f37008f5a 98 space.read_input(pad); // Gamepad library reads the positions of the objects.
fy14lkaa 149:bd0f37008f5a 99 space.update(pad); // Gamepad library updates the positions of the objects.
fy14lkaa 149:bd0f37008f5a 100 render();
fy14lkaa 127:8bd8cf136f19 101 wait(1.0f/fps);
fy14lkaa 57:45c5de9cefdf 102 }
fy14lkaa 54:095eae44895b 103 }
fy14lkaa 54:095eae44895b 104
fy14lkaa 54:095eae44895b 105 // initialies all classes and libraries
fy14lkaa 54:095eae44895b 106 void init()
fy14lkaa 54:095eae44895b 107 {
fy14lkaa 149:bd0f37008f5a 108 lcd.init(); // intialise the N5110 library .
fy14lkaa 149:bd0f37008f5a 109 pad.init(); // ntialise the Gamepad library
fy14lkaa 149:bd0f37008f5a 110 space.init(0,10,16,10,0,70,10,1,1,1); // intialise the parameters of space.
fy14lkaa 3:985fab783b92 111 }
fy14lkaa 54:095eae44895b 112
fy14lkaa 54:095eae44895b 113 void render()
fy14lkaa 54:095eae44895b 114 {
fy14lkaa 149:bd0f37008f5a 115 lcd.clear(); // clear the screen
fy14lkaa 149:bd0f37008f5a 116 space.draw(lcd); // draw the objects in the lcd.
fy14lkaa 137:fe80c0f2da9d 117 lcd.refresh(); // refresh the screen.
fy14lkaa 0:e2af4c8e462e 118 }
fy14lkaa 3:985fab783b92 119
fy14lkaa 128:a3f581b8461c 120
fy14lkaa 131:2084e4a8338f 121 void welcome()
fy14lkaa 131:2084e4a8338f 122 {
fy14lkaa 149:bd0f37008f5a 123 lcd.clear();
fy14lkaa 149:bd0f37008f5a 124
fy14lkaa 149:bd0f37008f5a 125 lcd.printString("SpaceInvaders!",0,1); // print the title of the game.
fy14lkaa 149:bd0f37008f5a 126 lcd.refresh();
fy14lkaa 149:bd0f37008f5a 127 wait(1.5);
fy14lkaa 149:bd0f37008f5a 128
fy14lkaa 149:bd0f37008f5a 129 lcd.clear();
fy14lkaa 149:bd0f37008f5a 130 lcd.drawSprite(0,10,48,48,(int *)spaceman); // draw the spaceman to welcom the player.
fy14lkaa 133:eed60548d170 131 lcd.refresh();
fy14lkaa 149:bd0f37008f5a 132 wait(1.5);
fy14lkaa 149:bd0f37008f5a 133
fy14lkaa 149:bd0f37008f5a 134 lcd.clear();
fy14lkaa 149:bd0f37008f5a 135 lcd.printString(" Space is yours!",0,2); // motivation pharse.
fy14lkaa 0:e2af4c8e462e 136 lcd.refresh();
fy14lkaa 149:bd0f37008f5a 137 wait(1.5);
fy14lkaa 149:bd0f37008f5a 138
fy14lkaa 149:bd0f37008f5a 139 lcd.clear();
fy14lkaa 149:bd0f37008f5a 140 lcd.printString(" Press Start ",0,1); //print the press start to guide the user to the game.
fy14lkaa 149:bd0f37008f5a 141 lcd.refresh();
fy14lkaa 149:bd0f37008f5a 142 wait(1.5);
fy14lkaa 149:bd0f37008f5a 143
fy14lkaa 131:2084e4a8338f 144 // wait flashing LEDs until start button is pressed
fy14lkaa 0:e2af4c8e462e 145 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
fy14lkaa 0:e2af4c8e462e 146 pad.leds_on();
fy14lkaa 127:8bd8cf136f19 147 wait(0.1);
fy14lkaa 0:e2af4c8e462e 148 pad.leds_off();
fy14lkaa 0:e2af4c8e462e 149 wait(0.1);
fy14lkaa 0:e2af4c8e462e 150 }
fy14lkaa 131:2084e4a8338f 151
fy14lkaa 127:8bd8cf136f19 152 }
fy14lkaa 54:095eae44895b 153
fy14lkaa 54:095eae44895b 154
fy14lkaa 54:095eae44895b 155
fy14lkaa 133:eed60548d170 156