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