Laila Al Badwawi 200906179 SpaceInvaders I declare this my own independent work and understand the university rules on plagiarism.
Dependencies: mbed
main.cpp@150:bd02678bfdb1, 2019-05-09 (annotated)
- 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?
User | Revision | Line number | New 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 |