Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@9:e6832bf222b7, 2019-05-07 (annotated)
- Committer:
- Kern_EL17KJTF
- Date:
- Tue May 07 17:40:29 2019 +0000
- Revision:
- 9:e6832bf222b7
- Parent:
- 8:421f94b816c4
- Child:
- 10:28575a6eaa13
Barrel hitting donkey kong causes a game over.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kern_EL17KJTF | 0:0130fd5738f7 | 1 | /* |
Kern_EL17KJTF | 0:0130fd5738f7 | 2 | ELEC2645 Embedded Systems Project |
Kern_EL17KJTF | 0:0130fd5738f7 | 3 | School of Electronic & Electrical Engineering |
Kern_EL17KJTF | 0:0130fd5738f7 | 4 | University of Leeds |
Kern_EL17KJTF | 0:0130fd5738f7 | 5 | |
Kern_EL17KJTF | 0:0130fd5738f7 | 6 | Name: Kern Fowler |
Kern_EL17KJTF | 0:0130fd5738f7 | 7 | Username: el17kjtf |
Kern_EL17KJTF | 0:0130fd5738f7 | 8 | Student ID Number: 201116686 |
Kern_EL17KJTF | 0:0130fd5738f7 | 9 | Date: 19/02/2019 |
Kern_EL17KJTF | 2:6baf849b0270 | 10 | Version: 1.2 |
Kern_EL17KJTF | 1:7a0917df015a | 11 | |
Kern_EL17KJTF | 1:7a0917df015a | 12 | */ |
Kern_EL17KJTF | 1:7a0917df015a | 13 | #include "main.h" |
Kern_EL17KJTF | 1:7a0917df015a | 14 | |
Kern_EL17KJTF | 6:478f81e79d9b | 15 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
Kern_EL17KJTF | 6:478f81e79d9b | 16 | Gamepad pad; |
Kern_EL17KJTF | 6:478f81e79d9b | 17 | Options opt; |
Kern_EL17KJTF | 7:ffbc921c20f7 | 18 | Donkey dky; |
Kern_EL17KJTF | 7:ffbc921c20f7 | 19 | GameEngine eng; |
Kern_EL17KJTF | 6:478f81e79d9b | 20 | |
Kern_EL17KJTF | 2:6baf849b0270 | 21 | int fps = 24; |
Kern_EL17KJTF | 2:6baf849b0270 | 22 | int direction; |
Kern_EL17KJTF | 3:b248dc1f3e8d | 23 | int menu_option_pos = 0; |
Kern_EL17KJTF | 2:6baf849b0270 | 24 | int arrow_pos = 0; |
Kern_EL17KJTF | 2:6baf849b0270 | 25 | |
Kern_EL17KJTF | 6:478f81e79d9b | 26 | |
Kern_EL17KJTF | 6:478f81e79d9b | 27 | // Donkey ----------- |
Kern_EL17KJTF | 6:478f81e79d9b | 28 | int donkeykong_x = 0; |
Kern_EL17KJTF | 6:478f81e79d9b | 29 | int donkeykong_y = 32; |
Kern_EL17KJTF | 9:e6832bf222b7 | 30 | int donkey_kong_speed = 10; |
Kern_EL17KJTF | 7:ffbc921c20f7 | 31 | |
Kern_EL17KJTF | 7:ffbc921c20f7 | 32 | Donkey::Donkey() |
Kern_EL17KJTF | 7:ffbc921c20f7 | 33 | { |
Kern_EL17KJTF | 7:ffbc921c20f7 | 34 | |
Kern_EL17KJTF | 7:ffbc921c20f7 | 35 | } |
Kern_EL17KJTF | 7:ffbc921c20f7 | 36 | Donkey::~Donkey() |
Kern_EL17KJTF | 7:ffbc921c20f7 | 37 | { |
Kern_EL17KJTF | 7:ffbc921c20f7 | 38 | |
Kern_EL17KJTF | 7:ffbc921c20f7 | 39 | } |
Kern_EL17KJTF | 7:ffbc921c20f7 | 40 | |
Kern_EL17KJTF | 7:ffbc921c20f7 | 41 | void Donkey::donkeykong_movement(Gamepad &pad, N5110 &lcd) { |
Kern_EL17KJTF | 6:478f81e79d9b | 42 | direction = pad.get_direction(); |
Kern_EL17KJTF | 6:478f81e79d9b | 43 | if (direction == NE || direction == E || direction == SE) { |
Kern_EL17KJTF | 6:478f81e79d9b | 44 | donkeykong_x = donkeykong_x + 1; |
Kern_EL17KJTF | 6:478f81e79d9b | 45 | lcd.drawSprite(donkeykong_x,donkeykong_y,16,16,(int *)game_dk_walking_right_1); |
Kern_EL17KJTF | 6:478f81e79d9b | 46 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 47 | else if (direction == NW || direction == W || direction == SW) { |
Kern_EL17KJTF | 6:478f81e79d9b | 48 | donkeykong_x = donkeykong_x - 1; |
Kern_EL17KJTF | 6:478f81e79d9b | 49 | lcd.drawSprite(donkeykong_x,donkeykong_y,16,16,(int *)game_dk_walking_left_1); |
Kern_EL17KJTF | 6:478f81e79d9b | 50 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 51 | else { |
Kern_EL17KJTF | 6:478f81e79d9b | 52 | lcd.drawSprite(donkeykong_x,donkeykong_y,16,16,(int *)game_dk_stationary); |
Kern_EL17KJTF | 6:478f81e79d9b | 53 | } |
Kern_EL17KJTF | 9:e6832bf222b7 | 54 | wait_ms(donkey_kong_speed); |
Kern_EL17KJTF | 7:ffbc921c20f7 | 55 | lcd.refresh(); |
Kern_EL17KJTF | 6:478f81e79d9b | 56 | if (donkeykong_x > 68) { |
Kern_EL17KJTF | 6:478f81e79d9b | 57 | donkeykong_x = 68; |
Kern_EL17KJTF | 6:478f81e79d9b | 58 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 59 | if (donkeykong_x < 0) { |
Kern_EL17KJTF | 6:478f81e79d9b | 60 | donkeykong_x = 0; |
Kern_EL17KJTF | 6:478f81e79d9b | 61 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 62 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 63 | // Barrel ----------- |
Kern_EL17KJTF | 9:e6832bf222b7 | 64 | int barrel_x = 30; |
Kern_EL17KJTF | 8:421f94b816c4 | 65 | int barrel_y = 0; |
Kern_EL17KJTF | 8:421f94b816c4 | 66 | int barrel_speed = 0; |
Kern_EL17KJTF | 8:421f94b816c4 | 67 | int barrel_min = 0; |
Kern_EL17KJTF | 8:421f94b816c4 | 68 | int barrel_max = 76; |
Kern_EL17KJTF | 9:e6832bf222b7 | 69 | float barrel_time = 0; |
Kern_EL17KJTF | 8:421f94b816c4 | 70 | |
Kern_EL17KJTF | 8:421f94b816c4 | 71 | Barrel::Barrel() |
Kern_EL17KJTF | 8:421f94b816c4 | 72 | { |
Kern_EL17KJTF | 8:421f94b816c4 | 73 | |
Kern_EL17KJTF | 8:421f94b816c4 | 74 | } |
Kern_EL17KJTF | 8:421f94b816c4 | 75 | |
Kern_EL17KJTF | 8:421f94b816c4 | 76 | Barrel::~Barrel() |
Kern_EL17KJTF | 8:421f94b816c4 | 77 | { |
Kern_EL17KJTF | 8:421f94b816c4 | 78 | |
Kern_EL17KJTF | 8:421f94b816c4 | 79 | } |
Kern_EL17KJTF | 8:421f94b816c4 | 80 | |
Kern_EL17KJTF | 8:421f94b816c4 | 81 | void Barrel::barrel_drop(Gamepad &pad, N5110 &lcd) { |
Kern_EL17KJTF | 8:421f94b816c4 | 82 | lcd.drawSprite(barrel_x,barrel_y,4,8,(int *)game_barrel); |
Kern_EL17KJTF | 8:421f94b816c4 | 83 | lcd.refresh(); |
Kern_EL17KJTF | 9:e6832bf222b7 | 84 | wait_ms(50); |
Kern_EL17KJTF | 9:e6832bf222b7 | 85 | barrel_y = barrel_y + 1 + barrel_time; |
Kern_EL17KJTF | 9:e6832bf222b7 | 86 | if (barrel_y > 44) { |
Kern_EL17KJTF | 9:e6832bf222b7 | 87 | barrel_y = 0; |
Kern_EL17KJTF | 9:e6832bf222b7 | 88 | barrel_x = rand() % (barrel_max + 1 - barrel_min) + barrel_min; |
Kern_EL17KJTF | 9:e6832bf222b7 | 89 | barrel_time = barrel_time + 0.1; |
Kern_EL17KJTF | 9:e6832bf222b7 | 90 | } |
Kern_EL17KJTF | 9:e6832bf222b7 | 91 | } |
Kern_EL17KJTF | 9:e6832bf222b7 | 92 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 93 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 94 | // Banana ----------- |
Kern_EL17KJTF | 9:e6832bf222b7 | 95 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 96 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 97 | // Game State-------------------------------------------------------------- |
Kern_EL17KJTF | 9:e6832bf222b7 | 98 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 99 | GameEngine::GameEngine() |
Kern_EL17KJTF | 9:e6832bf222b7 | 100 | { |
Kern_EL17KJTF | 9:e6832bf222b7 | 101 | |
Kern_EL17KJTF | 8:421f94b816c4 | 102 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 103 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 104 | GameEngine::~GameEngine() |
Kern_EL17KJTF | 9:e6832bf222b7 | 105 | { |
Kern_EL17KJTF | 9:e6832bf222b7 | 106 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 107 | } |
Kern_EL17KJTF | 9:e6832bf222b7 | 108 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 109 | void GameEngine::gameengine_run(Gamepad &pad, N5110 &lcd, Barrel &barrel) { |
Kern_EL17KJTF | 9:e6832bf222b7 | 110 | wait_ms(250); |
Kern_EL17KJTF | 9:e6832bf222b7 | 111 | |
Kern_EL17KJTF | 9:e6832bf222b7 | 112 | while (pad.check_event(Gamepad::BACK_PRESSED) == false) { |
Kern_EL17KJTF | 9:e6832bf222b7 | 113 | //printf("Game State"); |
Kern_EL17KJTF | 9:e6832bf222b7 | 114 | lcd.clear(); |
Kern_EL17KJTF | 9:e6832bf222b7 | 115 | lcd.printString("Game",0,0); |
Kern_EL17KJTF | 9:e6832bf222b7 | 116 | dky.donkeykong_movement(pad, lcd); |
Kern_EL17KJTF | 9:e6832bf222b7 | 117 | barrel.barrel_drop(pad, lcd); |
Kern_EL17KJTF | 9:e6832bf222b7 | 118 | if ((barrel_y >= 34) & ((barrel_x + 7) >= donkeykong_x) & (barrel_x <= (donkeykong_x + 15))) { |
Kern_EL17KJTF | 9:e6832bf222b7 | 119 | lcd.clear(); |
Kern_EL17KJTF | 9:e6832bf222b7 | 120 | lcd.printString("OVER",0,0); |
Kern_EL17KJTF | 9:e6832bf222b7 | 121 | wait_ms(1000); |
Kern_EL17KJTF | 9:e6832bf222b7 | 122 | } |
Kern_EL17KJTF | 9:e6832bf222b7 | 123 | wait_ms(1.0f/fps); |
Kern_EL17KJTF | 9:e6832bf222b7 | 124 | } |
Kern_EL17KJTF | 9:e6832bf222b7 | 125 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 126 | |
Kern_EL17KJTF | 6:478f81e79d9b | 127 | // Controls State---------------------------------------------------------- |
Kern_EL17KJTF | 6:478f81e79d9b | 128 | void controls_run() { |
Kern_EL17KJTF | 6:478f81e79d9b | 129 | wait_ms(250); |
Kern_EL17KJTF | 6:478f81e79d9b | 130 | |
Kern_EL17KJTF | 6:478f81e79d9b | 131 | while (pad.check_event(Gamepad::BACK_PRESSED) == false) { |
Kern_EL17KJTF | 6:478f81e79d9b | 132 | //printf("Control State"); |
Kern_EL17KJTF | 6:478f81e79d9b | 133 | lcd.clear(); |
Kern_EL17KJTF | 6:478f81e79d9b | 134 | lcd.printString("Controls",19,0); |
Kern_EL17KJTF | 6:478f81e79d9b | 135 | lcd.refresh(); |
Kern_EL17KJTF | 6:478f81e79d9b | 136 | wait_ms(1.0f/fps); |
Kern_EL17KJTF | 6:478f81e79d9b | 137 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 138 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 139 | |
Kern_EL17KJTF | 6:478f81e79d9b | 140 | // Instructions State------------------------------------------------------ |
Kern_EL17KJTF | 6:478f81e79d9b | 141 | void instructions_run() { |
Kern_EL17KJTF | 6:478f81e79d9b | 142 | wait_ms(250); |
Kern_EL17KJTF | 6:478f81e79d9b | 143 | |
Kern_EL17KJTF | 6:478f81e79d9b | 144 | while (pad.check_event(Gamepad::BACK_PRESSED) == false) { |
Kern_EL17KJTF | 6:478f81e79d9b | 145 | //printf("Instructions State"); |
Kern_EL17KJTF | 6:478f81e79d9b | 146 | lcd.clear(); |
Kern_EL17KJTF | 6:478f81e79d9b | 147 | lcd.printString("Instructions",7,0); |
Kern_EL17KJTF | 6:478f81e79d9b | 148 | lcd.refresh(); |
Kern_EL17KJTF | 6:478f81e79d9b | 149 | wait_ms(1.0f/fps); |
Kern_EL17KJTF | 6:478f81e79d9b | 150 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 151 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 152 | |
Kern_EL17KJTF | 6:478f81e79d9b | 153 | // Options State----------------------------------------------------------- |
Kern_EL17KJTF | 6:478f81e79d9b | 154 | float opt_brightness = 0.5; |
Kern_EL17KJTF | 6:478f81e79d9b | 155 | float opt_contrast = 0.396; |
Kern_EL17KJTF | 6:478f81e79d9b | 156 | int opt_volume = 1; |
Kern_EL17KJTF | 6:478f81e79d9b | 157 | |
Kern_EL17KJTF | 6:478f81e79d9b | 158 | Options::Options() |
Kern_EL17KJTF | 6:478f81e79d9b | 159 | { |
Kern_EL17KJTF | 6:478f81e79d9b | 160 | |
Kern_EL17KJTF | 6:478f81e79d9b | 161 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 162 | |
Kern_EL17KJTF | 6:478f81e79d9b | 163 | Options::~Options() |
Kern_EL17KJTF | 6:478f81e79d9b | 164 | { |
Kern_EL17KJTF | 6:478f81e79d9b | 165 | |
Kern_EL17KJTF | 6:478f81e79d9b | 166 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 167 | |
Kern_EL17KJTF | 6:478f81e79d9b | 168 | void Options::options_run(Gamepad &pad, N5110 &lcd) { |
Kern_EL17KJTF | 6:478f81e79d9b | 169 | wait_ms(250); |
Kern_EL17KJTF | 6:478f81e79d9b | 170 | while (pad.check_event(Gamepad::BACK_PRESSED) == false) { |
Kern_EL17KJTF | 6:478f81e79d9b | 171 | //printf("Options State"); |
Kern_EL17KJTF | 6:478f81e79d9b | 172 | lcd.clear(); |
Kern_EL17KJTF | 6:478f81e79d9b | 173 | lcd.printString("Options",21,0); |
Kern_EL17KJTF | 6:478f81e79d9b | 174 | options_brightness(pad, lcd); |
Kern_EL17KJTF | 6:478f81e79d9b | 175 | options_contrast(pad, lcd); |
Kern_EL17KJTF | 6:478f81e79d9b | 176 | options_volume(pad, lcd); |
Kern_EL17KJTF | 6:478f81e79d9b | 177 | lcd.refresh(); |
Kern_EL17KJTF | 6:478f81e79d9b | 178 | wait_ms(1.0f/fps); |
Kern_EL17KJTF | 6:478f81e79d9b | 179 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 180 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 181 | |
Kern_EL17KJTF | 6:478f81e79d9b | 182 | void Options::options_brightness(Gamepad &pad, N5110 &lcd) { |
Kern_EL17KJTF | 6:478f81e79d9b | 183 | if (pad.check_event(Gamepad::B_PRESSED) == true) { |
Kern_EL17KJTF | 6:478f81e79d9b | 184 | opt_brightness = 0; |
Kern_EL17KJTF | 6:478f81e79d9b | 185 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 186 | if (pad.check_event(Gamepad::A_PRESSED) == true) { |
Kern_EL17KJTF | 6:478f81e79d9b | 187 | opt_brightness = 0.5; |
Kern_EL17KJTF | 6:478f81e79d9b | 188 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 189 | lcd.setBrightness(opt_brightness); |
Kern_EL17KJTF | 6:478f81e79d9b | 190 | lcd.printString("A/B = BackLite",0,2); |
Kern_EL17KJTF | 6:478f81e79d9b | 191 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 192 | |
Kern_EL17KJTF | 6:478f81e79d9b | 193 | void Options::options_contrast(Gamepad &pad, N5110 &lcd) { |
Kern_EL17KJTF | 6:478f81e79d9b | 194 | opt_contrast = pad.read_pot(); |
Kern_EL17KJTF | 6:478f81e79d9b | 195 | lcd.setContrast(opt_contrast); |
Kern_EL17KJTF | 6:478f81e79d9b | 196 | lcd.printString("Pot = Contrast",0,3); |
Kern_EL17KJTF | 6:478f81e79d9b | 197 | printf("Contrast = %f", opt_contrast); |
Kern_EL17KJTF | 6:478f81e79d9b | 198 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 199 | |
Kern_EL17KJTF | 6:478f81e79d9b | 200 | void Options::options_volume(Gamepad &pad, N5110 &lcd) { |
Kern_EL17KJTF | 6:478f81e79d9b | 201 | if (pad.check_event(Gamepad::Y_PRESSED) == true) { |
Kern_EL17KJTF | 6:478f81e79d9b | 202 | opt_volume = 0; |
Kern_EL17KJTF | 6:478f81e79d9b | 203 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 204 | if (pad.check_event(Gamepad::X_PRESSED) == true) { |
Kern_EL17KJTF | 6:478f81e79d9b | 205 | opt_volume = 1; |
Kern_EL17KJTF | 6:478f81e79d9b | 206 | pad.tone(2400, 0.2); |
Kern_EL17KJTF | 6:478f81e79d9b | 207 | wait_ms(200); |
Kern_EL17KJTF | 6:478f81e79d9b | 208 | pad.tone(2400, 0.2); |
Kern_EL17KJTF | 6:478f81e79d9b | 209 | wait_ms(200); |
Kern_EL17KJTF | 6:478f81e79d9b | 210 | pad.tone(2400, 0.2); |
Kern_EL17KJTF | 6:478f81e79d9b | 211 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 212 | lcd.printString("X/Y = Volume",0,4); |
Kern_EL17KJTF | 6:478f81e79d9b | 213 | if (opt_volume == 0) { |
Kern_EL17KJTF | 6:478f81e79d9b | 214 | lcd.printString("Off",36,5); |
Kern_EL17KJTF | 6:478f81e79d9b | 215 | } else { |
Kern_EL17KJTF | 6:478f81e79d9b | 216 | lcd.printString("On",36,5); |
Kern_EL17KJTF | 6:478f81e79d9b | 217 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 218 | |
Kern_EL17KJTF | 6:478f81e79d9b | 219 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 220 | |
Kern_EL17KJTF | 6:478f81e79d9b | 221 | // High Score State-------------------------------------------------------- |
Kern_EL17KJTF | 6:478f81e79d9b | 222 | void high_scores_run() { |
Kern_EL17KJTF | 6:478f81e79d9b | 223 | while (pad.check_event(Gamepad::BACK_PRESSED) == false) { |
Kern_EL17KJTF | 6:478f81e79d9b | 224 | //printf("High Score State"); |
Kern_EL17KJTF | 6:478f81e79d9b | 225 | lcd.clear(); |
Kern_EL17KJTF | 6:478f81e79d9b | 226 | lcd.printString("High Scores",12,0); |
Kern_EL17KJTF | 6:478f81e79d9b | 227 | lcd.refresh(); |
Kern_EL17KJTF | 6:478f81e79d9b | 228 | wait_ms(1.0f/fps); |
Kern_EL17KJTF | 6:478f81e79d9b | 229 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 230 | } |
Kern_EL17KJTF | 6:478f81e79d9b | 231 | |
Kern_EL17KJTF | 6:478f81e79d9b | 232 | // Main Menu -------------------------------------------------------------- |
Kern_EL17KJTF | 2:6baf849b0270 | 233 | int main() { |
Kern_EL17KJTF | 1:7a0917df015a | 234 | init(); // initialise peripherals |
Kern_EL17KJTF | 1:7a0917df015a | 235 | welcome(); // display welcome message |
Kern_EL17KJTF | 1:7a0917df015a | 236 | |
Kern_EL17KJTF | 1:7a0917df015a | 237 | while(1) { // infinite loop |
Kern_EL17KJTF | 2:6baf849b0270 | 238 | arrow_location(); |
Kern_EL17KJTF | 2:6baf849b0270 | 239 | print_menu(); // this re-prints the menu at the start of every loop |
Kern_EL17KJTF | 2:6baf849b0270 | 240 | arrow_select(); |
Kern_EL17KJTF | 2:6baf849b0270 | 241 | wait_ms(1.0f/fps); |
Kern_EL17KJTF | 1:7a0917df015a | 242 | } |
Kern_EL17KJTF | 1:7a0917df015a | 243 | } |
Kern_EL17KJTF | 1:7a0917df015a | 244 | |
Kern_EL17KJTF | 2:6baf849b0270 | 245 | void init() { |
Kern_EL17KJTF | 1:7a0917df015a | 246 | // initialise LCD |
Kern_EL17KJTF | 1:7a0917df015a | 247 | lcd.init(); |
Kern_EL17KJTF | 1:7a0917df015a | 248 | // initialise Gamepad |
Kern_EL17KJTF | 1:7a0917df015a | 249 | pad.init(); |
Kern_EL17KJTF | 2:6baf849b0270 | 250 | wait(2.5); |
Kern_EL17KJTF | 2:6baf849b0270 | 251 | } |
Kern_EL17KJTF | 2:6baf849b0270 | 252 | |
Kern_EL17KJTF | 2:6baf849b0270 | 253 | void arrow_location() { |
Kern_EL17KJTF | 2:6baf849b0270 | 254 | direction = pad.get_direction(); |
Kern_EL17KJTF | 2:6baf849b0270 | 255 | if (direction == N) { |
Kern_EL17KJTF | 3:b248dc1f3e8d | 256 | menu_option_pos = menu_option_pos - 1; |
Kern_EL17KJTF | 2:6baf849b0270 | 257 | // printf("North Pressed"); |
Kern_EL17KJTF | 2:6baf849b0270 | 258 | wait_ms(250); |
Kern_EL17KJTF | 2:6baf849b0270 | 259 | } |
Kern_EL17KJTF | 2:6baf849b0270 | 260 | if (direction == S) { |
Kern_EL17KJTF | 3:b248dc1f3e8d | 261 | menu_option_pos = menu_option_pos + 1; |
Kern_EL17KJTF | 2:6baf849b0270 | 262 | // printf("South Pressed"); |
Kern_EL17KJTF | 2:6baf849b0270 | 263 | wait_ms(250); |
Kern_EL17KJTF | 2:6baf849b0270 | 264 | } |
Kern_EL17KJTF | 4:59175720d8ee | 265 | if (menu_option_pos > 4) { |
Kern_EL17KJTF | 3:b248dc1f3e8d | 266 | menu_option_pos = 0; |
Kern_EL17KJTF | 2:6baf849b0270 | 267 | } |
Kern_EL17KJTF | 3:b248dc1f3e8d | 268 | if (menu_option_pos < 0) { |
Kern_EL17KJTF | 4:59175720d8ee | 269 | menu_option_pos = 4; |
Kern_EL17KJTF | 2:6baf849b0270 | 270 | } |
Kern_EL17KJTF | 4:59175720d8ee | 271 | arrow_pos = 8 + (menu_option_pos * 8); |
Kern_EL17KJTF | 3:b248dc1f3e8d | 272 | // printf("Option Num = %d", menu_option_pos) |
Kern_EL17KJTF | 2:6baf849b0270 | 273 | } |
Kern_EL17KJTF | 2:6baf849b0270 | 274 | |
Kern_EL17KJTF | 2:6baf849b0270 | 275 | void arrow_select() { |
Kern_EL17KJTF | 2:6baf849b0270 | 276 | if (pad.check_event(Gamepad::A_PRESSED) == true) { |
Kern_EL17KJTF | 3:b248dc1f3e8d | 277 | if (menu_option_pos == 0) { |
Kern_EL17KJTF | 2:6baf849b0270 | 278 | // printf("GameEngine"); |
Kern_EL17KJTF | 9:e6832bf222b7 | 279 | eng.gameengine_run(pad, lcd, barrel); |
Kern_EL17KJTF | 2:6baf849b0270 | 280 | } |
Kern_EL17KJTF | 3:b248dc1f3e8d | 281 | if (menu_option_pos == 1) { |
Kern_EL17KJTF | 2:6baf849b0270 | 282 | // printf("Controls"); |
Kern_EL17KJTF | 2:6baf849b0270 | 283 | controls_run(); |
Kern_EL17KJTF | 2:6baf849b0270 | 284 | } |
Kern_EL17KJTF | 3:b248dc1f3e8d | 285 | if (menu_option_pos == 2) { |
Kern_EL17KJTF | 2:6baf849b0270 | 286 | // printf("Instructions"); |
Kern_EL17KJTF | 2:6baf849b0270 | 287 | instructions_run(); |
Kern_EL17KJTF | 2:6baf849b0270 | 288 | } |
Kern_EL17KJTF | 3:b248dc1f3e8d | 289 | if (menu_option_pos == 3) { |
Kern_EL17KJTF | 2:6baf849b0270 | 290 | // printf("Options"); |
Kern_EL17KJTF | 6:478f81e79d9b | 291 | opt.options_run(pad, lcd); |
Kern_EL17KJTF | 2:6baf849b0270 | 292 | } |
Kern_EL17KJTF | 4:59175720d8ee | 293 | if (menu_option_pos == 4) { |
Kern_EL17KJTF | 4:59175720d8ee | 294 | // printf("High Scores"); |
Kern_EL17KJTF | 4:59175720d8ee | 295 | high_scores_run(); |
Kern_EL17KJTF | 4:59175720d8ee | 296 | } |
Kern_EL17KJTF | 2:6baf849b0270 | 297 | } |
Kern_EL17KJTF | 2:6baf849b0270 | 298 | } |
Kern_EL17KJTF | 1:7a0917df015a | 299 | |
Kern_EL17KJTF | 1:7a0917df015a | 300 | |
Kern_EL17KJTF | 2:6baf849b0270 | 301 | void print_menu() { |
Kern_EL17KJTF | 2:6baf849b0270 | 302 | lcd.clear(); |
Kern_EL17KJTF | 3:b248dc1f3e8d | 303 | lcd.printString("Main Menu",19,0); |
Kern_EL17KJTF | 4:59175720d8ee | 304 | lcd.printString("Start Game",8,1); |
Kern_EL17KJTF | 4:59175720d8ee | 305 | lcd.printString("Controls",8,2); |
Kern_EL17KJTF | 4:59175720d8ee | 306 | lcd.printString("Instructions",8,3); |
Kern_EL17KJTF | 4:59175720d8ee | 307 | lcd.printString("Options",8,4); |
Kern_EL17KJTF | 4:59175720d8ee | 308 | lcd.printString("High Scores",8,5); |
Kern_EL17KJTF | 2:6baf849b0270 | 309 | lcd.drawSprite(0,arrow_pos,7,7,(int *)menu_arrow); |
Kern_EL17KJTF | 2:6baf849b0270 | 310 | lcd.refresh(); |
Kern_EL17KJTF | 1:7a0917df015a | 311 | } |
Kern_EL17KJTF | 1:7a0917df015a | 312 | |
Kern_EL17KJTF | 2:6baf849b0270 | 313 | void welcome() { |
Kern_EL17KJTF | 1:7a0917df015a | 314 | lcd.clear(); |
Kern_EL17KJTF | 2:6baf849b0270 | 315 | lcd.drawSprite(24,0,36,34,(int *)menu_dk_face); |
Kern_EL17KJTF | 1:7a0917df015a | 316 | lcd.printString(" Donkey Kong",0,5); |
Kern_EL17KJTF | 1:7a0917df015a | 317 | lcd.refresh(); |
Kern_EL17KJTF | 2:6baf849b0270 | 318 | wait(1.0); //edit back to longer |
Kern_EL17KJTF | 1:7a0917df015a | 319 | lcd.clear(); |
Kern_EL17KJTF | 2:6baf849b0270 | 320 | lcd.printString(" Created",0,0); |
Kern_EL17KJTF | 2:6baf849b0270 | 321 | lcd.printString(" By",0,1); |
Kern_EL17KJTF | 2:6baf849b0270 | 322 | lcd.printString(" Kern Fowler",0,3); |
Kern_EL17KJTF | 2:6baf849b0270 | 323 | lcd.printString(" 201116686",0,4); |
Kern_EL17KJTF | 1:7a0917df015a | 324 | lcd.refresh(); |
Kern_EL17KJTF | 2:6baf849b0270 | 325 | wait(1.0); |
Kern_EL17KJTF | 1:7a0917df015a | 326 | } |