ELEC2645 (2018/19)
/
el17ttds
Thomas Foster 201 096 550 Re published. Please check time of final commit
main.cpp@11:fd7f7b531e50, 2019-05-12 (annotated)
- Committer:
- el17ttds
- Date:
- Sun May 12 16:31:45 2019 +0000
- Revision:
- 11:fd7f7b531e50
- Parent:
- 9:3a0194c87afe
Final submission. I have read and agreed with Statement of Academic Integrity.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el17ttds | 8:d1c04f0e4890 | 1 | /* |
el17ttds | 8:d1c04f0e4890 | 2 | ELEC2645 Embedded Systems Project |
el17ttds | 8:d1c04f0e4890 | 3 | School of Electronic & Electrical Engineering |
el17ttds | 8:d1c04f0e4890 | 4 | University of Leeds |
el17ttds | 8:d1c04f0e4890 | 5 | Name: Thomas Foster |
el17ttds | 8:d1c04f0e4890 | 6 | Username: el17ttds |
el17ttds | 8:d1c04f0e4890 | 7 | Student ID Number: 201096550 |
el17ttds | 8:d1c04f0e4890 | 8 | Date: 11 / 05 / 2019 |
el17ttds | 8:d1c04f0e4890 | 9 | */ |
el17ttds | 8:d1c04f0e4890 | 10 | |
el17ttds | 9:3a0194c87afe | 11 | #include "main.h" |
el17ttds | 9:3a0194c87afe | 12 | |
el17ttds | 0:7769e2ad5d7a | 13 | /////////////// objects /////////////// |
el17ttds | 0:7769e2ad5d7a | 14 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
el17ttds | 0:7769e2ad5d7a | 15 | Gamepad pad; |
el17ttds | 2:ee9b361ba6df | 16 | Engine engine; |
el17ttds | 0:7769e2ad5d7a | 17 | |
el17ttds | 0:7769e2ad5d7a | 18 | int main() { |
el17ttds | 9:3a0194c87afe | 19 | lcd.init(); |
el17ttds | 9:3a0194c87afe | 20 | pad.init(); |
el17ttds | 9:3a0194c87afe | 21 | opening(); |
el17ttds | 0:7769e2ad5d7a | 22 | welcome(); |
el17ttds | 9:3a0194c87afe | 23 | menu(); |
el17ttds | 3:3d35ab70b565 | 24 | |
el17ttds | 9:3a0194c87afe | 25 | lcd.printString("PLEASE RESET",0,5); |
el17ttds | 4:3446009e2f38 | 26 | lcd.refresh(); |
el17ttds | 0:7769e2ad5d7a | 27 | } |
el17ttds | 0:7769e2ad5d7a | 28 | |
el17ttds | 0:7769e2ad5d7a | 29 | void init() { |
el17ttds | 8:d1c04f0e4890 | 30 | health = 3; |
el17ttds | 8:d1c04f0e4890 | 31 | score = 0; |
el17ttds | 7:08f78909dda7 | 32 | // initialise display and peripherals |
el17ttds | 7:08f78909dda7 | 33 | lcd.init(); |
el17ttds | 7:08f78909dda7 | 34 | pad.init(); |
el17ttds | 3:3d35ab70b565 | 35 | |
el17ttds | 0:7769e2ad5d7a | 36 | // initialise any in game functions (e.g: sprites) |
el17ttds | 8:d1c04f0e4890 | 37 | engine.init(MAP_WIDTH,MAP_HEIGHT,SCREEN_WIDTH,SCREEN_HEIGHT); |
el17ttds | 0:7769e2ad5d7a | 38 | } |
el17ttds | 0:7769e2ad5d7a | 39 | |
el17ttds | 9:3a0194c87afe | 40 | void opening() { |
el17ttds | 9:3a0194c87afe | 41 | int happy[11][11] = { |
el17ttds | 9:3a0194c87afe | 42 | {0,0,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 43 | {0,1,1,0,0,0,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 44 | {1,1,0,0,0,0,0,0,0,1,1}, |
el17ttds | 9:3a0194c87afe | 45 | {1,0,0,1,1,0,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 46 | {1,0,0,1,1,0,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 47 | {1,0,0,0,0,0,0,0,0,0,1}, |
el17ttds | 9:3a0194c87afe | 48 | {1,0,1,1,0,0,0,1,1,0,1}, |
el17ttds | 9:3a0194c87afe | 49 | {1,0,0,1,1,0,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 50 | {1,1,0,0,1,1,1,0,0,1,1}, |
el17ttds | 9:3a0194c87afe | 51 | {0,1,1,0,0,0,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 52 | {0,0,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 53 | }; |
el17ttds | 9:3a0194c87afe | 54 | int mad[11][11] = { |
el17ttds | 9:3a0194c87afe | 55 | {0,0,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 56 | {0,1,1,0,0,0,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 57 | {1,1,0,0,0,0,0,0,0,1,1}, |
el17ttds | 9:3a0194c87afe | 58 | {1,0,0,1,1,0,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 59 | {1,0,0,1,1,0,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 60 | {1,0,0,0,0,0,0,0,0,0,1}, |
el17ttds | 9:3a0194c87afe | 61 | {1,0,0,1,1,1,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 62 | {1,0,0,1,1,1,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 63 | {1,1,0,1,1,1,1,1,0,1,1}, |
el17ttds | 9:3a0194c87afe | 64 | {0,1,1,0,0,0,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 65 | {0,0,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 66 | }; |
el17ttds | 9:3a0194c87afe | 67 | int eye[21][21] = { |
el17ttds | 9:3a0194c87afe | 68 | {0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 69 | {0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 70 | {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 71 | {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}, |
el17ttds | 9:3a0194c87afe | 72 | {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 73 | {0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 74 | {0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 75 | {1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 76 | {1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 77 | {1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1}, |
el17ttds | 9:3a0194c87afe | 78 | {1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1}, |
el17ttds | 9:3a0194c87afe | 79 | {1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1}, |
el17ttds | 9:3a0194c87afe | 80 | {1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 81 | {1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 82 | {0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 83 | {0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 84 | {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 85 | {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}, |
el17ttds | 9:3a0194c87afe | 86 | {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 87 | {0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 88 | {0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 89 | }; |
el17ttds | 9:3a0194c87afe | 90 | lcd.drawSprite(37, 19, 11, 11, (int *)happy); |
el17ttds | 9:3a0194c87afe | 91 | lcd.refresh(), |
el17ttds | 9:3a0194c87afe | 92 | wait(1.0); |
el17ttds | 9:3a0194c87afe | 93 | for(int i = 84; i >= 0; i--) { |
el17ttds | 9:3a0194c87afe | 94 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 95 | lcd.drawSprite(37, 19, 11, 11, (int *)happy); |
el17ttds | 9:3a0194c87afe | 96 | lcd.drawRect(i, 0, 84, 48, FILL_BLACK); |
el17ttds | 9:3a0194c87afe | 97 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 98 | wait(0.07); |
el17ttds | 9:3a0194c87afe | 99 | } |
el17ttds | 9:3a0194c87afe | 100 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 101 | pad.tone(2000, 2); |
el17ttds | 9:3a0194c87afe | 102 | lcd.setBrightness(0.5); |
el17ttds | 9:3a0194c87afe | 103 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 104 | wait(1.0); |
el17ttds | 9:3a0194c87afe | 105 | for(int i = 0; i < 85; i++) { |
el17ttds | 9:3a0194c87afe | 106 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 107 | lcd.drawSprite(i - 69, 1, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 108 | lcd.drawSprite(i - 69, 27, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 109 | lcd.drawSprite(49, 1, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 110 | lcd.drawSprite(49, 27, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 111 | lcd.drawSprite(37, 19, 11, 11, (int *)happy); |
el17ttds | 9:3a0194c87afe | 112 | lcd.drawRect(i, 0, 84, 48, FILL_BLACK); |
el17ttds | 9:3a0194c87afe | 113 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 114 | wait(0.02); |
el17ttds | 9:3a0194c87afe | 115 | } |
el17ttds | 9:3a0194c87afe | 116 | wait(1.5); |
el17ttds | 9:3a0194c87afe | 117 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 118 | lcd.printString(" THEY ",0,0); |
el17ttds | 9:3a0194c87afe | 119 | lcd.printString(" SAW ",0,1); |
el17ttds | 9:3a0194c87afe | 120 | lcd.printString(" WHAT ",0,2); |
el17ttds | 9:3a0194c87afe | 121 | lcd.printString(" YOU ",0,3); |
el17ttds | 9:3a0194c87afe | 122 | lcd.printString(" DID ",0,4); |
el17ttds | 9:3a0194c87afe | 123 | lcd.printString(" !!! ",0,5); |
el17ttds | 9:3a0194c87afe | 124 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 125 | wait(2); |
el17ttds | 9:3a0194c87afe | 126 | for(int i = 0; i < 40; i++) { |
el17ttds | 9:3a0194c87afe | 127 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 128 | lcd.drawSprite(15 - i, 1, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 129 | lcd.drawSprite(15 - i, 27, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 130 | lcd.drawSprite(49 + i, 1, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 131 | lcd.drawSprite(49 + i, 27, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 132 | lcd.drawSprite(37, 19, 11, 11, (int *)mad); |
el17ttds | 9:3a0194c87afe | 133 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 134 | wait(0.1); |
el17ttds | 9:3a0194c87afe | 135 | } |
el17ttds | 9:3a0194c87afe | 136 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 137 | lcd.drawSprite(37, 19, 11, 11, (int *)mad); |
el17ttds | 9:3a0194c87afe | 138 | lcd.printString("AND THEY STOLE",0,0); |
el17ttds | 9:3a0194c87afe | 139 | lcd.printString(" YOUR BRIBES! ",0,5); |
el17ttds | 9:3a0194c87afe | 140 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 141 | wait(2.0); |
el17ttds | 9:3a0194c87afe | 142 | |
el17ttds | 9:3a0194c87afe | 143 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 144 | lcd.printString(" KEEP ",0,0); |
el17ttds | 9:3a0194c87afe | 145 | lcd.printString(" THE ",0,1); |
el17ttds | 9:3a0194c87afe | 146 | lcd.printString(" SECRET ",0,2); |
el17ttds | 9:3a0194c87afe | 147 | lcd.printString(" SAFE ",0,3); |
el17ttds | 9:3a0194c87afe | 148 | lcd.printString(" !!! ",0,4); |
el17ttds | 9:3a0194c87afe | 149 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 150 | wait(1.5); |
el17ttds | 9:3a0194c87afe | 151 | |
el17ttds | 9:3a0194c87afe | 152 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 153 | lcd.printString(" KILL ",0,0); |
el17ttds | 9:3a0194c87afe | 154 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 155 | wait(0.6); |
el17ttds | 9:3a0194c87afe | 156 | lcd.printString(" THEM ",0,2); |
el17ttds | 9:3a0194c87afe | 157 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 158 | wait(0.6); |
el17ttds | 9:3a0194c87afe | 159 | lcd.printString(" ALL! ",0,4); |
el17ttds | 9:3a0194c87afe | 160 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 161 | wait(1.0); |
el17ttds | 9:3a0194c87afe | 162 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 163 | } |
el17ttds | 9:3a0194c87afe | 164 | |
el17ttds | 0:7769e2ad5d7a | 165 | void welcome() { |
el17ttds | 9:3a0194c87afe | 166 | lcd.printString(" THE SECRET!! ",0,0); |
el17ttds | 0:7769e2ad5d7a | 167 | lcd.refresh(); |
el17ttds | 0:7769e2ad5d7a | 168 | wait(1.0); |
el17ttds | 0:7769e2ad5d7a | 169 | lcd.printString("By Thomas",0,2); |
el17ttds | 0:7769e2ad5d7a | 170 | lcd.printString("Foster",0,3); |
el17ttds | 0:7769e2ad5d7a | 171 | lcd.refresh(); |
el17ttds | 0:7769e2ad5d7a | 172 | wait(2.0); |
el17ttds | 3:3d35ab70b565 | 173 | |
el17ttds | 0:7769e2ad5d7a | 174 | while (pad.check_event(Gamepad::START_PRESSED) == false) { |
el17ttds | 7:08f78909dda7 | 175 | lcd.printString("Press Start ",0,5); |
el17ttds | 0:7769e2ad5d7a | 176 | lcd.refresh(); |
el17ttds | 0:7769e2ad5d7a | 177 | wait(0.2); |
el17ttds | 7:08f78909dda7 | 178 | lcd.printString("Press Start. ",0,5); |
el17ttds | 0:7769e2ad5d7a | 179 | lcd.refresh(); |
el17ttds | 0:7769e2ad5d7a | 180 | wait(0.2); |
el17ttds | 7:08f78909dda7 | 181 | lcd.printString("Press Start.. ",0,5); |
el17ttds | 0:7769e2ad5d7a | 182 | lcd.refresh(); |
el17ttds | 0:7769e2ad5d7a | 183 | wait(0.2); |
el17ttds | 7:08f78909dda7 | 184 | lcd.printString("Press Start... ",0,5); |
el17ttds | 0:7769e2ad5d7a | 185 | wait(0.2); |
el17ttds | 0:7769e2ad5d7a | 186 | } |
el17ttds | 0:7769e2ad5d7a | 187 | } |
el17ttds | 0:7769e2ad5d7a | 188 | |
el17ttds | 9:3a0194c87afe | 189 | void menu() { |
el17ttds | 3:3d35ab70b565 | 190 | |
el17ttds | 9:3a0194c87afe | 191 | option = 0; |
el17ttds | 0:7769e2ad5d7a | 192 | lcd.init(); |
el17ttds | 3:3d35ab70b565 | 193 | |
el17ttds | 9:3a0194c87afe | 194 | while(option == 0) { |
el17ttds | 3:3d35ab70b565 | 195 | |
el17ttds | 9:3a0194c87afe | 196 | lcd.printString("A - Play Now",0,2); |
el17ttds | 9:3a0194c87afe | 197 | lcd.printString("B - Tutorial",0,4); |
el17ttds | 0:7769e2ad5d7a | 198 | lcd.refresh(); |
el17ttds | 3:3d35ab70b565 | 199 | |
el17ttds | 0:7769e2ad5d7a | 200 | if (pad.check_event(Gamepad::A_PRESSED) == true) { |
el17ttds | 9:3a0194c87afe | 201 | option = 1; |
el17ttds | 0:7769e2ad5d7a | 202 | } else if (pad.check_event(Gamepad::B_PRESSED) == true) { |
el17ttds | 9:3a0194c87afe | 203 | option = 2; |
el17ttds | 0:7769e2ad5d7a | 204 | } |
el17ttds | 3:3d35ab70b565 | 205 | |
el17ttds | 0:7769e2ad5d7a | 206 | wait(0.2); |
el17ttds | 0:7769e2ad5d7a | 207 | } |
el17ttds | 9:3a0194c87afe | 208 | lcd.init(); |
el17ttds | 9:3a0194c87afe | 209 | pad.init(); |
el17ttds | 9:3a0194c87afe | 210 | if (option == 1) { |
el17ttds | 0:7769e2ad5d7a | 211 | lcd.printString(" Play game? ",0,0); |
el17ttds | 9:3a0194c87afe | 212 | ask(); |
el17ttds | 9:3a0194c87afe | 213 | } else if (option == 2) { |
el17ttds | 0:7769e2ad5d7a | 214 | lcd.printString("Play tutorial?",0,0); |
el17ttds | 9:3a0194c87afe | 215 | ask(); |
el17ttds | 1:8e319bd14b84 | 216 | } |
el17ttds | 1:8e319bd14b84 | 217 | } |
el17ttds | 1:8e319bd14b84 | 218 | |
el17ttds | 9:3a0194c87afe | 219 | void ask() { |
el17ttds | 9:3a0194c87afe | 220 | begin = 0; |
el17ttds | 9:3a0194c87afe | 221 | lcd.printString("Are you sure?",0,3); |
el17ttds | 9:3a0194c87afe | 222 | lcd.printString("Back? Start?",0,5); |
el17ttds | 9:3a0194c87afe | 223 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 224 | while (begin == 0) { |
el17ttds | 9:3a0194c87afe | 225 | if (pad.check_event(Gamepad::START_PRESSED) == true) { |
el17ttds | 9:3a0194c87afe | 226 | begin = 1; |
el17ttds | 9:3a0194c87afe | 227 | } else if(pad.check_event(Gamepad::BACK_PRESSED) == true) { |
el17ttds | 9:3a0194c87afe | 228 | begin = -1; |
el17ttds | 9:3a0194c87afe | 229 | } |
el17ttds | 9:3a0194c87afe | 230 | wait(0.2); |
el17ttds | 9:3a0194c87afe | 231 | } |
el17ttds | 9:3a0194c87afe | 232 | init(); |
el17ttds | 9:3a0194c87afe | 233 | if (begin == -1) { |
el17ttds | 9:3a0194c87afe | 234 | menu(); |
el17ttds | 9:3a0194c87afe | 235 | } else { |
el17ttds | 1:8e319bd14b84 | 236 | init(); |
el17ttds | 9:3a0194c87afe | 237 | if (option == 1) { |
el17ttds | 9:3a0194c87afe | 238 | gameLoop(); |
el17ttds | 0:7769e2ad5d7a | 239 | } else { |
el17ttds | 9:3a0194c87afe | 240 | tutorial(); |
el17ttds | 0:7769e2ad5d7a | 241 | } |
el17ttds | 9:3a0194c87afe | 242 | } |
el17ttds | 7:08f78909dda7 | 243 | } |
el17ttds | 3:3d35ab70b565 | 244 | |
el17ttds | 7:08f78909dda7 | 245 | void gameLoop() { |
el17ttds | 9:3a0194c87afe | 246 | pad.tone(750, 1.0); |
el17ttds | 8:d1c04f0e4890 | 247 | while ( (health > 0) && (pad.check_event(Gamepad::START_PRESSED) == false) ) { |
el17ttds | 7:08f78909dda7 | 248 | lcd.refresh(); |
el17ttds | 7:08f78909dda7 | 249 | engine.read(pad); |
el17ttds | 8:d1c04f0e4890 | 250 | engine.write(MAX_SPEED, pad, lcd); |
el17ttds | 7:08f78909dda7 | 251 | engine.render(lcd); |
el17ttds | 8:d1c04f0e4890 | 252 | health = engine.get_health(); |
el17ttds | 7:08f78909dda7 | 253 | wait(0.1); |
el17ttds | 7:08f78909dda7 | 254 | } |
el17ttds | 8:d1c04f0e4890 | 255 | wait(0.2); |
el17ttds | 9:3a0194c87afe | 256 | score = engine.get_score(); |
el17ttds | 9:3a0194c87afe | 257 | buffer[4]; |
el17ttds | 9:3a0194c87afe | 258 | sprintf(buffer, " %2d", score); |
el17ttds | 8:d1c04f0e4890 | 259 | if (health > 0) { |
el17ttds | 9:3a0194c87afe | 260 | paused(); |
el17ttds | 7:08f78909dda7 | 261 | } else { |
el17ttds | 9:3a0194c87afe | 262 | died(); |
el17ttds | 7:08f78909dda7 | 263 | } |
el17ttds | 1:8e319bd14b84 | 264 | } |
el17ttds | 1:8e319bd14b84 | 265 | |
el17ttds | 9:3a0194c87afe | 266 | void paused() { |
el17ttds | 9:3a0194c87afe | 267 | while (pad.check_event(Gamepad::A_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 268 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 269 | lcd.printString(" PAUSED ", 0, 0); |
el17ttds | 9:3a0194c87afe | 270 | lcd.printString(buffer, 0, 3); |
el17ttds | 9:3a0194c87afe | 271 | lcd.printString("coins", 28, 3); |
el17ttds | 9:3a0194c87afe | 272 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 273 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 274 | lcd.printString("Press A", 0, 5); |
el17ttds | 9:3a0194c87afe | 275 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 276 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 277 | } |
el17ttds | 9:3a0194c87afe | 278 | gameLoop(); |
el17ttds | 9:3a0194c87afe | 279 | } |
el17ttds | 3:3d35ab70b565 | 280 | |
el17ttds | 9:3a0194c87afe | 281 | void died() { |
el17ttds | 9:3a0194c87afe | 282 | wait(1.0); |
el17ttds | 11:fd7f7b531e50 | 283 | pad.init(); |
el17ttds | 9:3a0194c87afe | 284 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 285 | lcd.printString(" KO ", 0, 0); |
el17ttds | 9:3a0194c87afe | 286 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 287 | for (int i = 0; i < 10; i++) { |
el17ttds | 9:3a0194c87afe | 288 | lcd.setBrightness(1 - (i / 10) ); |
el17ttds | 9:3a0194c87afe | 289 | wait(0.15); |
el17ttds | 9:3a0194c87afe | 290 | } |
el17ttds | 9:3a0194c87afe | 291 | lcd.init(); |
el17ttds | 9:3a0194c87afe | 292 | pad.leds_on(); |
el17ttds | 9:3a0194c87afe | 293 | lcd.printString("EVERYONE KNOWS", 0, 0); |
el17ttds | 9:3a0194c87afe | 294 | lcd.printString(buffer, 0, 3); |
el17ttds | 9:3a0194c87afe | 295 | lcd.printString("coins", 28, 3); |
el17ttds | 9:3a0194c87afe | 296 | lcd.printString("recollected", 0, 4); |
el17ttds | 9:3a0194c87afe | 297 | while(pad.check_event(Gamepad::A_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 298 | lcd.printString("Press A.", 0, 5); |
el17ttds | 1:8e319bd14b84 | 299 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 300 | wait(0.1); |
el17ttds | 9:3a0194c87afe | 301 | lcd.printString("Press A .", 0, 5); |
el17ttds | 9:3a0194c87afe | 302 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 303 | wait(0.1); |
el17ttds | 9:3a0194c87afe | 304 | lcd.printString("Press A .", 0, 5); |
el17ttds | 9:3a0194c87afe | 305 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 306 | wait(0.1); |
el17ttds | 9:3a0194c87afe | 307 | } |
el17ttds | 9:3a0194c87afe | 308 | menu(); |
el17ttds | 1:8e319bd14b84 | 309 | } |
el17ttds | 1:8e319bd14b84 | 310 | |
el17ttds | 9:3a0194c87afe | 311 | void tutorial() { |
el17ttds | 9:3a0194c87afe | 312 | int mad[11][11] = { |
el17ttds | 9:3a0194c87afe | 313 | {0,0,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 314 | {0,1,1,0,0,0,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 315 | {1,1,0,0,0,0,0,0,0,1,1}, |
el17ttds | 9:3a0194c87afe | 316 | {1,0,0,1,1,0,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 317 | {1,0,0,1,1,0,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 318 | {1,0,0,0,0,0,0,0,0,0,1}, |
el17ttds | 9:3a0194c87afe | 319 | {1,0,0,1,1,1,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 320 | {1,0,0,1,1,1,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 321 | {1,1,0,1,1,1,1,1,0,1,1}, |
el17ttds | 9:3a0194c87afe | 322 | {0,1,1,0,0,0,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 323 | {0,0,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 324 | }; |
el17ttds | 9:3a0194c87afe | 325 | int bribe[11][11] = { |
el17ttds | 9:3a0194c87afe | 326 | {0,0,0,1,1,1,1,1,0,0,0}, |
el17ttds | 9:3a0194c87afe | 327 | {0,0,1,1,0,0,0,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 328 | {0,1,1,0,0,1,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 329 | {1,1,0,1,1,1,1,1,0,1,1}, |
el17ttds | 9:3a0194c87afe | 330 | {1,0,0,1,0,1,0,0,0,0,1}, |
el17ttds | 9:3a0194c87afe | 331 | {1,0,0,1,1,1,1,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 332 | {1,0,0,0,0,1,0,1,0,0,1}, |
el17ttds | 9:3a0194c87afe | 333 | {1,1,0,1,1,1,1,1,0,1,1}, |
el17ttds | 9:3a0194c87afe | 334 | {0,1,1,0,0,1,0,0,1,1,0}, |
el17ttds | 9:3a0194c87afe | 335 | {0,0,1,1,0,0,0,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 336 | {0,0,0,1,1,1,1,1,0,0,0}, |
el17ttds | 9:3a0194c87afe | 337 | }; |
el17ttds | 9:3a0194c87afe | 338 | int eye[21][21] = { |
el17ttds | 9:3a0194c87afe | 339 | {0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 340 | {0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 341 | {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 342 | {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}, |
el17ttds | 9:3a0194c87afe | 343 | {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 344 | {0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 345 | {0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 346 | {1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 347 | {1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 348 | {1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1}, |
el17ttds | 9:3a0194c87afe | 349 | {1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1}, |
el17ttds | 9:3a0194c87afe | 350 | {1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1}, |
el17ttds | 9:3a0194c87afe | 351 | {1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 352 | {1,1,1,1,1,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1}, |
el17ttds | 9:3a0194c87afe | 353 | {0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 354 | {0,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0}, |
el17ttds | 9:3a0194c87afe | 355 | {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0}, |
el17ttds | 9:3a0194c87afe | 356 | {0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0}, |
el17ttds | 9:3a0194c87afe | 357 | {0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 358 | {0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 359 | {0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0}, |
el17ttds | 9:3a0194c87afe | 360 | }; |
el17ttds | 9:3a0194c87afe | 361 | lcd.printString(" Tutorial!! ",0,0); |
el17ttds | 9:3a0194c87afe | 362 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 363 | wait(1.0); |
el17ttds | 9:3a0194c87afe | 364 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 365 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 366 | lcd.printString("Shoot The Eyes", 0, 1); |
el17ttds | 9:3a0194c87afe | 367 | lcd.printString("To Keep Your", 0, 2); |
el17ttds | 9:3a0194c87afe | 368 | lcd.printString("Secret!", 0, 3); |
el17ttds | 9:3a0194c87afe | 369 | lcd.drawSprite(42, 23, 21, 21, (int *)eye); |
el17ttds | 9:3a0194c87afe | 370 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 371 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 372 | lcd.printString("Press B", 0, 5); |
el17ttds | 9:3a0194c87afe | 373 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 374 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 375 | } |
el17ttds | 9:3a0194c87afe | 376 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 377 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 378 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 379 | lcd.printString("Use Joystick", 0, 1); |
el17ttds | 9:3a0194c87afe | 380 | lcd.printString("To Move!", 0, 2); |
el17ttds | 9:3a0194c87afe | 381 | lcd.drawSprite(37, 23, 11, 11, (int *)mad); |
el17ttds | 9:3a0194c87afe | 382 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 383 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 384 | lcd.printString("Press B", 0, 5); |
el17ttds | 0:7769e2ad5d7a | 385 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 386 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 387 | } |
el17ttds | 9:3a0194c87afe | 388 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 389 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 390 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 391 | lcd.printString("A To Shoot", 0, 1); |
el17ttds | 9:3a0194c87afe | 392 | lcd.printString("Forward", 0, 2); |
el17ttds | 9:3a0194c87afe | 393 | lcd.drawSprite(37, 23, 11, 11, (int *)mad); |
el17ttds | 9:3a0194c87afe | 394 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 395 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 396 | lcd.printString("Press B", 0, 5); |
el17ttds | 9:3a0194c87afe | 397 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 398 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 399 | } |
el17ttds | 9:3a0194c87afe | 400 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 401 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 402 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 403 | lcd.printString("B To Shoot", 0, 1); |
el17ttds | 9:3a0194c87afe | 404 | lcd.printString("Backwards", 0, 2); |
el17ttds | 9:3a0194c87afe | 405 | lcd.drawSprite(37, 23, 11, 11, (int *)mad); |
el17ttds | 9:3a0194c87afe | 406 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 407 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 408 | lcd.printString("Press B", 0, 5); |
el17ttds | 9:3a0194c87afe | 409 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 410 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 411 | } |
el17ttds | 9:3a0194c87afe | 412 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 413 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 414 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 415 | lcd.printString("AMMO | HEALTH", 0, 1); |
el17ttds | 9:3a0194c87afe | 416 | lcd.printString(" LED ", 0,3); |
el17ttds | 9:3a0194c87afe | 417 | lcd.printString("123 | 456", 0, 4); |
el17ttds | 9:3a0194c87afe | 418 | pad.leds_on(); |
el17ttds | 9:3a0194c87afe | 419 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 420 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 421 | lcd.printString("Press B", 0, 5); |
el17ttds | 9:3a0194c87afe | 422 | pad.leds_off(); |
el17ttds | 9:3a0194c87afe | 423 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 424 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 425 | } |
el17ttds | 9:3a0194c87afe | 426 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 427 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 428 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 429 | lcd.printString("Recover Your", 0, 0); |
el17ttds | 9:3a0194c87afe | 430 | lcd.printString("Bribes Quickly", 0,1); |
el17ttds | 9:3a0194c87afe | 431 | lcd.printString("From Enemies", 0,2); |
el17ttds | 9:3a0194c87afe | 432 | lcd.drawSprite(37, 26, 11, 11, (int *)bribe); |
el17ttds | 9:3a0194c87afe | 433 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 434 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 435 | lcd.printString("Press B", 0, 5); |
el17ttds | 9:3a0194c87afe | 436 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 437 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 438 | } |
el17ttds | 9:3a0194c87afe | 439 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 440 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 441 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 442 | lcd.printString("Difficulty", 0, 1); |
el17ttds | 9:3a0194c87afe | 443 | lcd.printString("Increases", 0,2); |
el17ttds | 9:3a0194c87afe | 444 | lcd.printString("With Time", 0,3); |
el17ttds | 9:3a0194c87afe | 445 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 446 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 447 | lcd.printString("Press B", 0, 5); |
el17ttds | 9:3a0194c87afe | 448 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 449 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 450 | } |
el17ttds | 9:3a0194c87afe | 451 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 452 | while (pad.check_event(Gamepad::B_PRESSED) == false) { |
el17ttds | 9:3a0194c87afe | 453 | lcd.clear(); |
el17ttds | 9:3a0194c87afe | 454 | lcd.printString("Aim Well", 0, 1); |
el17ttds | 9:3a0194c87afe | 455 | lcd.printString("And", 0,2); |
el17ttds | 9:3a0194c87afe | 456 | lcd.printString("Stay Alive!", 0,3); |
el17ttds | 9:3a0194c87afe | 457 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 458 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 459 | lcd.printString("Press B", 0, 5); |
el17ttds | 9:3a0194c87afe | 460 | lcd.refresh(); |
el17ttds | 9:3a0194c87afe | 461 | wait(0.5); |
el17ttds | 9:3a0194c87afe | 462 | } |
el17ttds | 9:3a0194c87afe | 463 | wait(0.3); |
el17ttds | 9:3a0194c87afe | 464 | menu(); |
el17ttds | 0:7769e2ad5d7a | 465 | } |