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

Dependencies:   mbed

Committer:
fy14lkaa
Date:
Wed May 08 18:54:03 2019 +0000
Revision:
133:eed60548d170
Parent:
131:2084e4a8338f
Child:
137:fe80c0f2da9d
choose the alien to move randomly by using srand function.

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 133:eed60548d170 11 const
fy14lkaa 133:eed60548d170 12 int spaceman [48][48]={
fy14lkaa 133:eed60548d170 13
fy14lkaa 133:eed60548d170 14
fy14lkaa 133:eed60548d170 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,1,1,1,0,0,0,0,0,0},
fy14lkaa 133:eed60548d170 16 {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 133:eed60548d170 17 {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 133:eed60548d170 18 {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 133:eed60548d170 19 {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 133:eed60548d170 20 {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 133:eed60548d170 21 {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 133:eed60548d170 22 {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 133:eed60548d170 23 {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 133:eed60548d170 24 {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 133:eed60548d170 25 {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 133:eed60548d170 26 {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 133:eed60548d170 27 {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 133:eed60548d170 28 {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 133:eed60548d170 29 {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 133:eed60548d170 30 {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 133:eed60548d170 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 133:eed60548d170 32 {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 133:eed60548d170 33 {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 133:eed60548d170 34 {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 133:eed60548d170 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 133:eed60548d170 36 {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 133:eed60548d170 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 133:eed60548d170 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 133:eed60548d170 39 {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 133:eed60548d170 40 {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 133:eed60548d170 41 {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 133:eed60548d170 42 {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 133:eed60548d170 43 {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 133:eed60548d170 44 {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 133:eed60548d170 45 {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 133:eed60548d170 46 {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 133:eed60548d170 47 {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 133:eed60548d170 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 133:eed60548d170 49 {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 133:eed60548d170 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 133:eed60548d170 51 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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 133:eed60548d170 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 133:eed60548d170 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 {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 55 };
fy14lkaa 133:eed60548d170 56
fy14lkaa 133:eed60548d170 57
fy14lkaa 133:eed60548d170 58
fy14lkaa 133:eed60548d170 59
fy14lkaa 133:eed60548d170 60
fy14lkaa 133:eed60548d170 61
fy14lkaa 131:2084e4a8338f 62 // structs //
fy14lkaa 0:e2af4c8e462e 63 struct UserInput {
fy14lkaa 0:e2af4c8e462e 64 Direction d;
fy14lkaa 0:e2af4c8e462e 65 float mag;
fy14lkaa 0:e2af4c8e462e 66 };
fy14lkaa 133:eed60548d170 67
fy14lkaa 133:eed60548d170 68
fy14lkaa 127:8bd8cf136f19 69 /////////////// objects ///////////////
fy14lkaa 50:f538885a788b 70 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
fy14lkaa 0:e2af4c8e462e 71 Gamepad pad;
fy14lkaa 127:8bd8cf136f19 72 SpaceEngine space;
fy14lkaa 13:9d6ee753eca6 73
fy14lkaa 3:985fab783b92 74 ///////////// prototypes ///////////////
fy14lkaa 0:e2af4c8e462e 75 void init();
fy14lkaa 0:e2af4c8e462e 76 void update_game(UserInput input);
fy14lkaa 0:e2af4c8e462e 77 void render();
fy14lkaa 0:e2af4c8e462e 78 void welcome();
fy14lkaa 12:45b1249b3d9a 79
fy14lkaa 13:9d6ee753eca6 80 ///////////// functions ////////////////
fy14lkaa 54:095eae44895b 81 int main()
fy14lkaa 54:095eae44895b 82 {
fy14lkaa 12:45b1249b3d9a 83
fy14lkaa 131:2084e4a8338f 84 int fps = 8;
fy14lkaa 131:2084e4a8338f 85 init();
fy14lkaa 131:2084e4a8338f 86 welcome();
fy14lkaa 131:2084e4a8338f 87 render();
fy14lkaa 128:a3f581b8461c 88 wait(1.0f/fps);
fy14lkaa 54:095eae44895b 89
fy14lkaa 0:e2af4c8e462e 90 while (1) {
fy14lkaa 54:095eae44895b 91 space.read_input(pad);
fy14lkaa 12:45b1249b3d9a 92 space.update(pad);
fy14lkaa 54:095eae44895b 93 render();
fy14lkaa 127:8bd8cf136f19 94 wait(1.0f/fps);
fy14lkaa 57:45c5de9cefdf 95 }
fy14lkaa 54:095eae44895b 96 }
fy14lkaa 54:095eae44895b 97
fy14lkaa 54:095eae44895b 98 // initialies all classes and libraries
fy14lkaa 54:095eae44895b 99 void init()
fy14lkaa 54:095eae44895b 100 {
fy14lkaa 0:e2af4c8e462e 101 lcd.init();
fy14lkaa 54:095eae44895b 102 pad.init();
fy14lkaa 131:2084e4a8338f 103
fy14lkaa 131:2084e4a8338f 104
fy14lkaa 133:eed60548d170 105 space.init(0,10,16,10,0,70,10,1,1,1);
fy14lkaa 54:095eae44895b 106
fy14lkaa 3:985fab783b92 107 }
fy14lkaa 54:095eae44895b 108
fy14lkaa 54:095eae44895b 109 void render()
fy14lkaa 54:095eae44895b 110 {
fy14lkaa 131:2084e4a8338f 111
fy14lkaa 131:2084e4a8338f 112 lcd.clear();
fy14lkaa 12:45b1249b3d9a 113 space.draw(lcd);
fy14lkaa 0:e2af4c8e462e 114 lcd.refresh();
fy14lkaa 0:e2af4c8e462e 115 }
fy14lkaa 3:985fab783b92 116
fy14lkaa 128:a3f581b8461c 117
fy14lkaa 131:2084e4a8338f 118 void welcome()
fy14lkaa 131:2084e4a8338f 119 {
fy14lkaa 133:eed60548d170 120 lcd.clear();
fy14lkaa 133:eed60548d170 121
fy14lkaa 133:eed60548d170 122 lcd.printString("SpaceInvaders!",0,1);
fy14lkaa 133:eed60548d170 123 lcd.printString(" Press Start ",4,4);
fy14lkaa 133:eed60548d170 124 lcd.clear();
fy14lkaa 133:eed60548d170 125 lcd.refresh();
fy14lkaa 133:eed60548d170 126 lcd.printString(" Space is yours!",0,1);
fy14lkaa 133:eed60548d170 127 lcd.drawSprite(10,10,48,48,(int *)spaceman);
fy14lkaa 0:e2af4c8e462e 128 lcd.refresh();
fy14lkaa 131:2084e4a8338f 129
fy14lkaa 131:2084e4a8338f 130 // wait flashing LEDs until start button is pressed
fy14lkaa 0:e2af4c8e462e 131 while ( pad.check_event(Gamepad::START_PRESSED) == false) {
fy14lkaa 0:e2af4c8e462e 132 pad.leds_on();
fy14lkaa 127:8bd8cf136f19 133 wait(0.1);
fy14lkaa 0:e2af4c8e462e 134 pad.leds_off();
fy14lkaa 0:e2af4c8e462e 135 wait(0.1);
fy14lkaa 0:e2af4c8e462e 136 }
fy14lkaa 131:2084e4a8338f 137
fy14lkaa 127:8bd8cf136f19 138 }
fy14lkaa 54:095eae44895b 139
fy14lkaa 54:095eae44895b 140
fy14lkaa 54:095eae44895b 141
fy14lkaa 133:eed60548d170 142