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