Game codes for Pokemon Academy Yiu Fai Kwok - 201198802 I have read the University Regulations on Plagiarism and state that the work covered by this declaration is my own and does not contain any unacknowledged work from other sources.

Dependencies:   mbed FXOS8700CQ mbed-rtos

Committer:
yfkwok
Date:
Wed May 08 23:57:04 2019 +0000
Revision:
33:f7ec806e14b6
Parent:
32:58def659f463
Child:
34:3ddfaa217eca
09/05/19 - Inline comment added, functionalities complete, all Deoxygen comment added for classes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yfkwok 0:1da4db5de653 1 /*
yfkwok 0:1da4db5de653 2 ELEC2645 Embedded Systems Project
yfkwok 0:1da4db5de653 3 School of Electronic & Electrical Engineering
yfkwok 0:1da4db5de653 4 University of Leeds
yfkwok 0:1da4db5de653 5 Name: Yiu Fai Kwok
yfkwok 0:1da4db5de653 6 Username: el17yfk
yfkwok 0:1da4db5de653 7 Student ID Number: 201198802
yfkwok 0:1da4db5de653 8 Date: 11/03/2019
yfkwok 0:1da4db5de653 9 */
yfkwok 0:1da4db5de653 10
yfkwok 1:61b67654ffb7 11 #include "mbed.h"
yfkwok 1:61b67654ffb7 12 #include "N5110.h"
yfkwok 1:61b67654ffb7 13 #include "Gamepad.h"
yfkwok 2:464c7e62d97d 14 #include "Score.h"
yfkwok 2:464c7e62d97d 15 #include "Start.h"
yfkwok 2:464c7e62d97d 16 #include "Game_one.h"
yfkwok 15:a65444eb1194 17 #include "Game_two.h"
yfkwok 27:4bcdfb212467 18 #include "Game_three.h"
yfkwok 5:bc0691d02fd5 19 #include "Exam.h"
yfkwok 33:f7ec806e14b6 20 #include "Titles.h"
yfkwok 13:02002658e718 21 #include "FXOS8700CQ.h"
yfkwok 23:4a070960817a 22 #include "rtos.h"
yfkwok 1:61b67654ffb7 23
yfkwok 1:61b67654ffb7 24 /////////////// objects ///////////////
yfkwok 1:61b67654ffb7 25 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3
yfkwok 33:f7ec806e14b6 26 Gamepad pad; // Gamepad class
yfkwok 33:f7ec806e14b6 27 Score music; // Score class for music files
yfkwok 33:f7ec806e14b6 28 Start start; // Start class for choosing starter
yfkwok 33:f7ec806e14b6 29 Game_one game_1; // Game_one class for mini game 1
yfkwok 33:f7ec806e14b6 30 Game_two game_2; // Game_two class for mini game 2
yfkwok 33:f7ec806e14b6 31 Game_three game_3; // Game_three class for mini game 3
yfkwok 33:f7ec806e14b6 32 Exam test; // Exam class for exam questions
yfkwok 33:f7ec806e14b6 33 Titles grad; // Titles class for graduation credit scene
yfkwok 33:f7ec806e14b6 34 Thread thread; // Thread class for running functions in parallel
yfkwok 13:02002658e718 35 // I2C connection for FXOS8700CQ accelerometer/magnetometer
yfkwok 15:a65444eb1194 36 FXOS8700CQ device(I2C_SDA,I2C_SCL); // PTE25/PTE24
yfkwok 1:61b67654ffb7 37
yfkwok 1:61b67654ffb7 38 ///////////// prototypes ///////////////
yfkwok 1:61b67654ffb7 39 void init();
yfkwok 2:464c7e62d97d 40 int menu();
yfkwok 2:464c7e62d97d 41 void year_one_set();
yfkwok 2:464c7e62d97d 42 void year_two_set();
yfkwok 2:464c7e62d97d 43 void year_three_set();
yfkwok 23:4a070960817a 44 void gym();
yfkwok 2:464c7e62d97d 45
yfkwok 2:464c7e62d97d 46 //Starting states
yfkwok 2:464c7e62d97d 47 enum StartStates {
yfkwok 2:464c7e62d97d 48 TITLE, MENU, INSTRUCTION
yfkwok 2:464c7e62d97d 49 };
yfkwok 2:464c7e62d97d 50
yfkwok 2:464c7e62d97d 51 //Game states
yfkwok 2:464c7e62d97d 52 enum GameStates {
yfkwok 2:464c7e62d97d 53 YEAR_1, STARTER, BULBASAUR, SQUIRTLE, CHARMANDER, EXAM, YEAR_2, YEAR_3, GRADUATION
yfkwok 2:464c7e62d97d 54 };
yfkwok 2:464c7e62d97d 55
yfkwok 2:464c7e62d97d 56 //Global variables
yfkwok 32:58def659f463 57 int score = 0; // Score to take note of number of missions passed
yfkwok 32:58def659f463 58 int game_1_speed = 0; // Setting the speed for the objects in Game 1
yfkwok 32:58def659f463 59 int game_1_cha = 0; // Setting which evolution to draw in Game 1
yfkwok 32:58def659f463 60 int game_1_r = 1; // Setting the ratio between coins and blocks in Game 1
yfkwok 32:58def659f463 61 int game_2_speed = 0; // Setting the speed for the objects in Game 2
yfkwok 32:58def659f463 62 int game_2_cha = 0; // Setting which evolution to draw in Game 2
yfkwok 32:58def659f463 63 int game_2_r = 1; // Setting the ratio between YouTube and other social medias in Game 2
yfkwok 32:58def659f463 64 int game_3_set = 1; // Setting the number of messages vs books in Game 3
yfkwok 32:58def659f463 65 float game_3_time = 1.0; // Setting the reaction time for Game 3
yfkwok 32:58def659f463 66 int select = 0; // Setting the starter selection parameter
yfkwok 32:58def659f463 67 int year = 0; // Setting the year that it is currently in
yfkwok 32:58def659f463 68 int pass = 0; // Setting the pass parameters for exam
yfkwok 32:58def659f463 69 volatile bool finished = false; // Setting the music loop for Exam
yfkwok 32:58def659f463 70 volatile bool end = false; // Setting the game loop
yfkwok 32:58def659f463 71 int button_A[9][8] = {
yfkwok 32:58def659f463 72 {0,0,1,1,1,1,0,0},
yfkwok 32:58def659f463 73 {0,1,0,0,0,0,1,0},
yfkwok 32:58def659f463 74 {1,0,1,1,1,1,0,1},
yfkwok 32:58def659f463 75 {1,0,1,0,0,1,0,1},
yfkwok 32:58def659f463 76 {1,0,1,1,1,1,0,1},
yfkwok 32:58def659f463 77 {1,0,1,0,0,1,0,1},
yfkwok 32:58def659f463 78 {1,1,0,0,0,0,1,1},
yfkwok 32:58def659f463 79 {0,1,1,1,1,1,1,0},
yfkwok 32:58def659f463 80 {0,0,1,1,1,1,0,0},
yfkwok 32:58def659f463 81 }; // Sprite for button_A
yfkwok 1:61b67654ffb7 82
yfkwok 1:61b67654ffb7 83 ///////////// functions ////////////////
yfkwok 1:61b67654ffb7 84 int main(){
yfkwok 1:61b67654ffb7 85
yfkwok 2:464c7e62d97d 86 // Initialise parameters
yfkwok 33:f7ec806e14b6 87 int fps = 8; // frames per second
yfkwok 1:61b67654ffb7 88
yfkwok 33:f7ec806e14b6 89 init(); // initialise
yfkwok 2:464c7e62d97d 90 StartStates currentState = TITLE;
yfkwok 2:464c7e62d97d 91 GameStates currentGame = YEAR_1;
yfkwok 1:61b67654ffb7 92
yfkwok 2:464c7e62d97d 93 while(1){
yfkwok 2:464c7e62d97d 94 switch (currentState) {
yfkwok 2:464c7e62d97d 95 case TITLE:
yfkwok 26:c60becf3f840 96 // 1. Display title screen and play title music
yfkwok 26:c60becf3f840 97 // 2. Proceed to Start screen by pressing start
yfkwok 26:c60becf3f840 98
yfkwok 33:f7ec806e14b6 99 grad.welcome(pad, lcd);
yfkwok 2:464c7e62d97d 100 wait(1.0f/fps);
yfkwok 33:f7ec806e14b6 101 currentState = MENU; // Set currentState to MENU to start up the MENU page
yfkwok 33:f7ec806e14b6 102 currentGame = YEAR_1; // Set currentGame to YEAR_1 so the game starts from the beginning and resets all difficulty parameters
yfkwok 33:f7ec806e14b6 103 end = false; // Reset end parameter to start the Game loop
yfkwok 2:464c7e62d97d 104 break;
yfkwok 1:61b67654ffb7 105
yfkwok 2:464c7e62d97d 106 case MENU:
yfkwok 26:c60becf3f840 107 // 1. Display starting menu
yfkwok 26:c60becf3f840 108 // 2. If Start is selected, initiate year 1 game state
yfkwok 26:c60becf3f840 109 // 3. If Instruction is selected, give instruction
yfkwok 26:c60becf3f840 110
yfkwok 2:464c7e62d97d 111 int op = menu();
yfkwok 2:464c7e62d97d 112 if (op == 1){currentState = INSTRUCTION;}
yfkwok 2:464c7e62d97d 113 else {
yfkwok 31:0d2c19a285f6 114 while(!end){
yfkwok 2:464c7e62d97d 115 // Game loop
yfkwok 2:464c7e62d97d 116 switch (currentGame) {
yfkwok 2:464c7e62d97d 117 case YEAR_1:
yfkwok 2:464c7e62d97d 118 // 1. Initiate year 1 screen
yfkwok 15:a65444eb1194 119 // 2. Set up the parameters for year 1
yfkwok 26:c60becf3f840 120
yfkwok 33:f7ec806e14b6 121 grad.year_one(pad, lcd); // Display year title screen
yfkwok 33:f7ec806e14b6 122 year_one_set(); // Set the difficulties for mini games
yfkwok 2:464c7e62d97d 123 currentGame = STARTER;
yfkwok 2:464c7e62d97d 124 break;
yfkwok 15:a65444eb1194 125
yfkwok 2:464c7e62d97d 126 case STARTER:
yfkwok 15:a65444eb1194 127 // 1. Provide selection screen for starter pokemon to select which mini game to initiate
yfkwok 15:a65444eb1194 128 // 2. Provide description for the mini game and pokemon
yfkwok 15:a65444eb1194 129 // 3. Initiate the mini game according to the pokemon being selected
yfkwok 26:c60becf3f840 130
yfkwok 33:f7ec806e14b6 131 select = 0; // Reset starter selection parameter to 0 position
yfkwok 33:f7ec806e14b6 132 start.init(pad); // Initialize the Start class
yfkwok 33:f7ec806e14b6 133 start.starter_draw(lcd); // Draw the start pokemon selection page
yfkwok 2:464c7e62d97d 134 wait(1.0f/fps);
yfkwok 2:464c7e62d97d 135 while(pad.check_event(Gamepad::START_PRESSED) == false)
yfkwok 2:464c7e62d97d 136 {
yfkwok 2:464c7e62d97d 137 start.starter_update(pad);
yfkwok 2:464c7e62d97d 138 start.starter_draw(lcd);
yfkwok 2:464c7e62d97d 139 if(pad.check_event(Gamepad::A_PRESSED) == true){
yfkwok 33:f7ec806e14b6 140 select = start.get_select(start.update_select(pad)); // Set select parameter to determine which starter pokemon is chosen
yfkwok 33:f7ec806e14b6 141 start.intro(select, pad, lcd); // Display the description for the pokemon being selected
yfkwok 22:f8f36e88b2ca 142 pad.init_input();
yfkwok 2:464c7e62d97d 143 }
yfkwok 2:464c7e62d97d 144 wait(1.0f/fps);
yfkwok 2:464c7e62d97d 145 }
yfkwok 2:464c7e62d97d 146 select = start.get_select(start.update_select(pad));
yfkwok 4:5bc9c4363d31 147 if(select == 1){
yfkwok 33:f7ec806e14b6 148 music.congrats(pad, lcd, select, year); // Display congratulation screen for choosing the starter pokemon
yfkwok 4:5bc9c4363d31 149 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 33:f7ec806e14b6 150 lcd.drawSprite(2,39,9,8,(int*)button_A); // Instruct to press A to continue
yfkwok 4:5bc9c4363d31 151 lcd.refresh();
yfkwok 5:bc0691d02fd5 152 wait(0.3);
yfkwok 31:0d2c19a285f6 153 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 154 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 155 lcd.refresh();
yfkwok 5:bc0691d02fd5 156 wait(0.3);
yfkwok 4:5bc9c4363d31 157 }
yfkwok 33:f7ec806e14b6 158 game_1.intro(pad, lcd); // Display Game one description page to introduce the player how the game is played
yfkwok 33:f7ec806e14b6 159 currentGame = SQUIRTLE; // Move to Squirtle's game loop
yfkwok 22:f8f36e88b2ca 160 pad.init_input();
yfkwok 4:5bc9c4363d31 161 }
yfkwok 4:5bc9c4363d31 162 else if(select == 0){
yfkwok 4:5bc9c4363d31 163 music.congrats(pad, lcd, select, year);
yfkwok 4:5bc9c4363d31 164 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 32:58def659f463 165 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 166 lcd.refresh();
yfkwok 5:bc0691d02fd5 167 wait(0.3);
yfkwok 31:0d2c19a285f6 168 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 169 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 170 lcd.refresh();
yfkwok 5:bc0691d02fd5 171 wait(0.3);
yfkwok 4:5bc9c4363d31 172 }
yfkwok 33:f7ec806e14b6 173 game_3.intro(pad, lcd); // Display Game three description page to introduce the player how the game is played
yfkwok 33:f7ec806e14b6 174 currentGame = BULBASAUR; // Move to Bulbasaur's game loop
yfkwok 22:f8f36e88b2ca 175 pad.init_input();
yfkwok 22:f8f36e88b2ca 176 }
yfkwok 4:5bc9c4363d31 177 else if(select == 2){
yfkwok 4:5bc9c4363d31 178 music.congrats(pad, lcd, select, year);
yfkwok 4:5bc9c4363d31 179 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 32:58def659f463 180 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 181 lcd.refresh();
yfkwok 5:bc0691d02fd5 182 wait(0.3);
yfkwok 31:0d2c19a285f6 183 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 184 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 185 lcd.refresh();
yfkwok 5:bc0691d02fd5 186 wait(0.3);
yfkwok 4:5bc9c4363d31 187 }
yfkwok 33:f7ec806e14b6 188 game_2.intro(pad, lcd); // Display Game two description page to introduce the player how the game is played
yfkwok 33:f7ec806e14b6 189 currentGame = CHARMANDER; // Move to Charmander's game loop
yfkwok 22:f8f36e88b2ca 190 pad.init_input();
yfkwok 22:f8f36e88b2ca 191 }
yfkwok 2:464c7e62d97d 192 break;
yfkwok 15:a65444eb1194 193
yfkwok 15:a65444eb1194 194 // Game loop for Bulbasaur's mini game
yfkwok 2:464c7e62d97d 195 case BULBASAUR:
yfkwok 27:4bcdfb212467 196 int i = 0;
yfkwok 27:4bcdfb212467 197 score = 0;
yfkwok 27:4bcdfb212467 198 while(i < 3){
yfkwok 27:4bcdfb212467 199 // Indicate for which term the current game is in
yfkwok 33:f7ec806e14b6 200 if(i == 0) {grad.term_one(pad, lcd);}
yfkwok 33:f7ec806e14b6 201 else if(i == 1) {grad.term_two(pad, lcd);}
yfkwok 33:f7ec806e14b6 202 else{grad.term_three(pad, lcd);}
yfkwok 27:4bcdfb212467 203 int j = 0;
yfkwok 28:a6726a3f8e6d 204 game_3.init_para();
yfkwok 27:4bcdfb212467 205 while(j < 5){
yfkwok 27:4bcdfb212467 206 // Game loop for 5 rounds
yfkwok 33:f7ec806e14b6 207 game_3.init(pad, game_3_set); // Set the ratio between messages vs books according to year
yfkwok 27:4bcdfb212467 208 game_3.render(lcd, game_3_set);
yfkwok 33:f7ec806e14b6 209 wait(game_3_time); // Parameter to set the reaction time frame for varying difficulty
yfkwok 27:4bcdfb212467 210 game_3.read_input(pad);
yfkwok 27:4bcdfb212467 211 game_3.update(pad, game_3_set);
yfkwok 33:f7ec806e14b6 212 j = game_3.get_count(); // Get count for how many rounds the player has played
yfkwok 27:4bcdfb212467 213 }
yfkwok 27:4bcdfb212467 214 i = i++;
yfkwok 27:4bcdfb212467 215 // determine if win condition is met, return score to proceed to EXAM game loop
yfkwok 27:4bcdfb212467 216 if(game_3.get_score() >= 4) {
yfkwok 33:f7ec806e14b6 217 grad.win(lcd);
yfkwok 27:4bcdfb212467 218 music.win(pad);
yfkwok 27:4bcdfb212467 219 wait(0.5);
yfkwok 27:4bcdfb212467 220 score++;
yfkwok 27:4bcdfb212467 221 }
yfkwok 27:4bcdfb212467 222 else {
yfkwok 33:f7ec806e14b6 223 grad.lose(lcd);
yfkwok 27:4bcdfb212467 224 pad.tone(750.0,0.2);
yfkwok 27:4bcdfb212467 225 wait(0.5);
yfkwok 27:4bcdfb212467 226 pad.tone(750.0,0.2);
yfkwok 27:4bcdfb212467 227 wait(1.0);
yfkwok 27:4bcdfb212467 228 }
yfkwok 27:4bcdfb212467 229 }
yfkwok 5:bc0691d02fd5 230 currentGame = EXAM;
yfkwok 2:464c7e62d97d 231 break;
yfkwok 15:a65444eb1194 232
yfkwok 15:a65444eb1194 233 // Game loop for Squirtle's mini game
yfkwok 2:464c7e62d97d 234 case SQUIRTLE:
yfkwok 27:4bcdfb212467 235 i = 0;
yfkwok 2:464c7e62d97d 236 score = 0;
yfkwok 2:464c7e62d97d 237 while(i < 3){
yfkwok 15:a65444eb1194 238 // Indicate for which term the current game is in
yfkwok 33:f7ec806e14b6 239 if(i == 0) {grad.term_one(pad, lcd);}
yfkwok 33:f7ec806e14b6 240 else if(i == 1) {grad.term_two(pad, lcd);}
yfkwok 33:f7ec806e14b6 241 else{grad.term_three(pad, lcd);}
yfkwok 33:f7ec806e14b6 242 game_1.init(game_1_speed, game_1_cha, game_1_r); // Set the game difficulty by changing speed of objects and coin to block ratio according to year
yfkwok 2:464c7e62d97d 243 int j = 0;
yfkwok 2:464c7e62d97d 244 while(j < 10){
yfkwok 15:a65444eb1194 245 // Game loop for 10 rounds
yfkwok 2:464c7e62d97d 246 game_1.read_input(pad);
yfkwok 2:464c7e62d97d 247 game_1.update(pad, lcd);
yfkwok 2:464c7e62d97d 248 game_1.render(lcd, game_1_cha);
yfkwok 2:464c7e62d97d 249 wait(1.0f/fps);
yfkwok 33:f7ec806e14b6 250 j = game_1.get_count(); // Get count for how many rounds the player has played
yfkwok 2:464c7e62d97d 251 }
yfkwok 2:464c7e62d97d 252 i = i++;
yfkwok 15:a65444eb1194 253 // determine if win condition is met, return score to proceed to EXAM game loop
yfkwok 5:bc0691d02fd5 254 if(game_1.print_scores(lcd) >= 8) {
yfkwok 33:f7ec806e14b6 255 grad.win(lcd);
yfkwok 5:bc0691d02fd5 256 music.win(pad);
yfkwok 5:bc0691d02fd5 257 wait(0.5);
yfkwok 5:bc0691d02fd5 258 score++;
yfkwok 5:bc0691d02fd5 259 }
yfkwok 5:bc0691d02fd5 260 else {
yfkwok 33:f7ec806e14b6 261 grad.lose(lcd);
yfkwok 5:bc0691d02fd5 262 pad.tone(750.0,0.2);
yfkwok 5:bc0691d02fd5 263 wait(0.5);
yfkwok 5:bc0691d02fd5 264 pad.tone(750.0,0.2);
yfkwok 5:bc0691d02fd5 265 wait(1.0);
yfkwok 5:bc0691d02fd5 266 }
yfkwok 2:464c7e62d97d 267 }
yfkwok 2:464c7e62d97d 268 currentGame = EXAM;
yfkwok 2:464c7e62d97d 269
yfkwok 2:464c7e62d97d 270 break;
yfkwok 15:a65444eb1194 271
yfkwok 15:a65444eb1194 272 // Game loop for Charmander's mini game
yfkwok 2:464c7e62d97d 273 case CHARMANDER:
yfkwok 15:a65444eb1194 274 i = 0;
yfkwok 15:a65444eb1194 275 score = 0;
yfkwok 15:a65444eb1194 276 while (i < 3) {
yfkwok 26:c60becf3f840 277 // Indicate for which term the current game is in
yfkwok 33:f7ec806e14b6 278 if(i == 0) {grad.term_one(pad, lcd);}
yfkwok 33:f7ec806e14b6 279 else if(i == 1) {grad.term_two(pad, lcd);}
yfkwok 33:f7ec806e14b6 280 else{grad.term_three(pad, lcd);}
yfkwok 33:f7ec806e14b6 281 game_2.init(game_2_speed, game_2_cha, game_2_r); // Set the game difficulty by changing speed and ratio between YouTube and normal icons according to year
yfkwok 15:a65444eb1194 282 int j = 0;
yfkwok 21:704d938acf5d 283 while(j < 6){
yfkwok 15:a65444eb1194 284 game_2.read_input(device);
yfkwok 15:a65444eb1194 285 game_2.update(pad, lcd, game_2_cha);
yfkwok 15:a65444eb1194 286 game_2.render(lcd, game_2_cha);
yfkwok 15:a65444eb1194 287 wait(1.0f/fps);
yfkwok 15:a65444eb1194 288 j = game_2.get_count();
yfkwok 15:a65444eb1194 289 }
yfkwok 15:a65444eb1194 290 i = i++;
yfkwok 26:c60becf3f840 291 // determine if win condition is met, return score to proceed to EXAM game loop
yfkwok 21:704d938acf5d 292 if(game_2.get_count() == 6) {
yfkwok 33:f7ec806e14b6 293 grad.win(lcd);
yfkwok 15:a65444eb1194 294 music.win(pad);
yfkwok 15:a65444eb1194 295 wait(0.5);
yfkwok 15:a65444eb1194 296 score++;
yfkwok 15:a65444eb1194 297 }
yfkwok 15:a65444eb1194 298 else {
yfkwok 33:f7ec806e14b6 299 grad.lose(lcd);
yfkwok 15:a65444eb1194 300 pad.tone(750.0,0.2);
yfkwok 15:a65444eb1194 301 wait(0.5);
yfkwok 15:a65444eb1194 302 pad.tone(750.0,0.2);
yfkwok 15:a65444eb1194 303 wait(1.0);
yfkwok 15:a65444eb1194 304 }
yfkwok 15:a65444eb1194 305 }
yfkwok 5:bc0691d02fd5 306 currentGame = EXAM;
yfkwok 2:464c7e62d97d 307 break;
yfkwok 15:a65444eb1194 308
yfkwok 15:a65444eb1194 309 // Game loop for EXAM
yfkwok 2:464c7e62d97d 310 case EXAM:
yfkwok 26:c60becf3f840 311 // 1. Display the exam questions according to year.
yfkwok 26:c60becf3f840 312 // 2. Display the answers according to how many mini games the player passed.
yfkwok 26:c60becf3f840 313 // 3. If player manages to answer 2 or 3 questions correctly, enter to next year/GRADUATION.
yfkwok 26:c60becf3f840 314 // 4. If player fails, repeat the year.
yfkwok 26:c60becf3f840 315
yfkwok 26:c60becf3f840 316 // Reset background music control parameter
yfkwok 23:4a070960817a 317 finished = false;
yfkwok 26:c60becf3f840 318
yfkwok 26:c60becf3f840 319 // Draw exam title screen
yfkwok 5:bc0691d02fd5 320 test.exam_title(pad, lcd);
yfkwok 26:c60becf3f840 321
yfkwok 26:c60becf3f840 322 // Using thread to run music and exam functions in parallel
yfkwok 23:4a070960817a 323 thread.start(gym);
yfkwok 26:c60becf3f840 324
yfkwok 26:c60becf3f840 325 // Check for which year's exam questions need to be fetched
yfkwok 23:4a070960817a 326 if(year == 0) {pass = test.exam_q_one(pad, lcd, score); finished = true;}
yfkwok 23:4a070960817a 327 else if(year == 1) {pass = test.exam_q_two(pad, lcd, score); finished = true;}
yfkwok 23:4a070960817a 328 else if(year == 2) {pass = test.exam_q_three(pad, lcd, score); finished = true;}
yfkwok 23:4a070960817a 329 Thread::wait(1000);
yfkwok 23:4a070960817a 330 thread.join();
yfkwok 26:c60becf3f840 331 // End the thread
yfkwok 26:c60becf3f840 332
yfkwok 32:58def659f463 333 // Check for number of correct answers to determine if proceed to next year or not
yfkwok 28:a6726a3f8e6d 334 if(pass > 2){
yfkwok 33:f7ec806e14b6 335 grad.passed(lcd);
yfkwok 5:bc0691d02fd5 336 music.win(pad);
yfkwok 5:bc0691d02fd5 337 wait(0.5);
yfkwok 12:71683453f66a 338 year++;
yfkwok 5:bc0691d02fd5 339 if(year == 1){currentGame = YEAR_2;}
yfkwok 5:bc0691d02fd5 340 else if(year == 2){currentGame = YEAR_3;}
yfkwok 5:bc0691d02fd5 341 else if(year == 3){currentGame = GRADUATION;}
yfkwok 5:bc0691d02fd5 342 }
yfkwok 5:bc0691d02fd5 343 else {
yfkwok 33:f7ec806e14b6 344 grad.failed(lcd);
yfkwok 5:bc0691d02fd5 345 pad.tone(750.0,0.2);
yfkwok 5:bc0691d02fd5 346 wait(0.5);
yfkwok 5:bc0691d02fd5 347 pad.tone(750.0,0.2);
yfkwok 5:bc0691d02fd5 348 wait(1.0);
yfkwok 5:bc0691d02fd5 349 if(year == 0){currentGame = YEAR_1;}
yfkwok 5:bc0691d02fd5 350 else if(year == 1){
yfkwok 5:bc0691d02fd5 351 if(select == 1){currentGame = SQUIRTLE;}
yfkwok 5:bc0691d02fd5 352 else if(select == 0){currentGame = BULBASAUR;}
yfkwok 5:bc0691d02fd5 353 else if(select == 2){currentGame = CHARMANDER;}
yfkwok 5:bc0691d02fd5 354 }
yfkwok 5:bc0691d02fd5 355 else if(year == 2){
yfkwok 5:bc0691d02fd5 356 if(select == 1){currentGame = SQUIRTLE;}
yfkwok 5:bc0691d02fd5 357 else if(select == 0){currentGame = BULBASAUR;}
yfkwok 5:bc0691d02fd5 358 else if(select == 2){currentGame = CHARMANDER;}
yfkwok 5:bc0691d02fd5 359 }
yfkwok 5:bc0691d02fd5 360 }
yfkwok 2:464c7e62d97d 361 break;
yfkwok 2:464c7e62d97d 362 case YEAR_2:
yfkwok 26:c60becf3f840 363 // 1. Initiate year 2 screen
yfkwok 26:c60becf3f840 364 // 2. Set up the parameters for year 2
yfkwok 26:c60becf3f840 365 // 3. Initiate evolution animation for chosen character
yfkwok 26:c60becf3f840 366 // 4. Enter to game loop for chosen character
yfkwok 26:c60becf3f840 367
yfkwok 33:f7ec806e14b6 368 grad.year_two(pad, lcd);
yfkwok 31:0d2c19a285f6 369 year_two_set(); // Set up the parameters for year 2
yfkwok 4:5bc9c4363d31 370 if(select == 1){
yfkwok 33:f7ec806e14b6 371 music.evolution_music(pad, lcd, select, year); // Play the evolution animation and music for the chosen pokemon
yfkwok 4:5bc9c4363d31 372 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 33:f7ec806e14b6 373 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 374 lcd.refresh();
yfkwok 5:bc0691d02fd5 375 wait(0.3);
yfkwok 31:0d2c19a285f6 376 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 377 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 378 lcd.refresh();
yfkwok 5:bc0691d02fd5 379 wait(0.3);
yfkwok 4:5bc9c4363d31 380 }
yfkwok 33:f7ec806e14b6 381 currentGame = SQUIRTLE; // Go back to game loop
yfkwok 4:5bc9c4363d31 382 }
yfkwok 4:5bc9c4363d31 383 else if(select == 0){
yfkwok 33:f7ec806e14b6 384 music.evolution_music(pad, lcd, select, year); // Play the evolution animation and music for the chosen pokemon
yfkwok 4:5bc9c4363d31 385 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 33:f7ec806e14b6 386 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 387 lcd.refresh();
yfkwok 5:bc0691d02fd5 388 wait(0.3);
yfkwok 31:0d2c19a285f6 389 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 390 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 391 lcd.refresh();
yfkwok 5:bc0691d02fd5 392 wait(0.3);
yfkwok 4:5bc9c4363d31 393 }
yfkwok 33:f7ec806e14b6 394 currentGame = BULBASAUR; // Go back to game loop
yfkwok 15:a65444eb1194 395 }
yfkwok 4:5bc9c4363d31 396 else if(select == 2){
yfkwok 33:f7ec806e14b6 397 music.evolution_music(pad, lcd, select, year); // Play the evolution animation and music for the chosen pokemon
yfkwok 4:5bc9c4363d31 398 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 33:f7ec806e14b6 399 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 400 lcd.refresh();
yfkwok 5:bc0691d02fd5 401 wait(0.3);
yfkwok 31:0d2c19a285f6 402 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 403 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 404 lcd.refresh();
yfkwok 5:bc0691d02fd5 405 wait(0.3);
yfkwok 4:5bc9c4363d31 406 }
yfkwok 33:f7ec806e14b6 407 currentGame = CHARMANDER; // Go back to game loop
yfkwok 15:a65444eb1194 408 }
yfkwok 2:464c7e62d97d 409 break;
yfkwok 2:464c7e62d97d 410 case YEAR_3:
yfkwok 26:c60becf3f840 411 // 1. Initiate year 3 screen
yfkwok 26:c60becf3f840 412 // 2. Set up the parameters for year 3
yfkwok 26:c60becf3f840 413 // 3. Initiate evolution animation for chosen character
yfkwok 26:c60becf3f840 414 // 4. Enter to game loop for chosen character
yfkwok 26:c60becf3f840 415
yfkwok 33:f7ec806e14b6 416 grad.year_three(pad, lcd);
yfkwok 2:464c7e62d97d 417 year_three_set();
yfkwok 4:5bc9c4363d31 418 if(select == 1){
yfkwok 4:5bc9c4363d31 419 music.evolution_music(pad, lcd, select, year);
yfkwok 4:5bc9c4363d31 420 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 32:58def659f463 421 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 422 lcd.refresh();
yfkwok 5:bc0691d02fd5 423 wait(0.3);
yfkwok 31:0d2c19a285f6 424 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 425 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 426 lcd.refresh();
yfkwok 5:bc0691d02fd5 427 wait(0.3);
yfkwok 4:5bc9c4363d31 428 }
yfkwok 4:5bc9c4363d31 429 currentGame = SQUIRTLE;
yfkwok 4:5bc9c4363d31 430 }
yfkwok 4:5bc9c4363d31 431 else if(select == 0){
yfkwok 4:5bc9c4363d31 432 music.evolution_music(pad, lcd, select, year);
yfkwok 4:5bc9c4363d31 433 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 32:58def659f463 434 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 435 lcd.refresh();
yfkwok 5:bc0691d02fd5 436 wait(0.3);
yfkwok 31:0d2c19a285f6 437 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 438 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 439 lcd.refresh();
yfkwok 5:bc0691d02fd5 440 wait(0.3);
yfkwok 4:5bc9c4363d31 441 }
yfkwok 15:a65444eb1194 442 currentGame = BULBASAUR;
yfkwok 15:a65444eb1194 443 }
yfkwok 4:5bc9c4363d31 444 else if(select == 2){
yfkwok 4:5bc9c4363d31 445 music.evolution_music(pad, lcd, select, year);
yfkwok 4:5bc9c4363d31 446 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 32:58def659f463 447 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 4:5bc9c4363d31 448 lcd.refresh();
yfkwok 5:bc0691d02fd5 449 wait(0.3);
yfkwok 31:0d2c19a285f6 450 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 451 lcd.printString(" ",5,5);
yfkwok 5:bc0691d02fd5 452 lcd.refresh();
yfkwok 5:bc0691d02fd5 453 wait(0.3);
yfkwok 4:5bc9c4363d31 454 }
yfkwok 15:a65444eb1194 455 currentGame = CHARMANDER;
yfkwok 15:a65444eb1194 456 }
yfkwok 2:464c7e62d97d 457 break;
yfkwok 2:464c7e62d97d 458 case GRADUATION:
yfkwok 26:c60becf3f840 459 // 1. Display congratulation theme for player!
yfkwok 31:0d2c19a285f6 460 // 2. Return to the TITLE screen
yfkwok 26:c60becf3f840 461
yfkwok 31:0d2c19a285f6 462 grad.Grad_title(pad, lcd, select);
yfkwok 31:0d2c19a285f6 463 wait(1.0);
yfkwok 31:0d2c19a285f6 464 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 32:58def659f463 465 lcd.drawSprite(2,39,9,8,(int*)button_A);
yfkwok 31:0d2c19a285f6 466 lcd.refresh();
yfkwok 31:0d2c19a285f6 467 wait(0.3);
yfkwok 32:58def659f463 468 lcd.printString(" ",0,5);
yfkwok 33:f7ec806e14b6 469 lcd.printString(" ",5,5);
yfkwok 31:0d2c19a285f6 470 lcd.refresh();
yfkwok 31:0d2c19a285f6 471 wait(0.3);
yfkwok 31:0d2c19a285f6 472 }
yfkwok 31:0d2c19a285f6 473 end = true;
yfkwok 2:464c7e62d97d 474 break;
yfkwok 2:464c7e62d97d 475 }
yfkwok 2:464c7e62d97d 476 }
yfkwok 2:464c7e62d97d 477 }
yfkwok 31:0d2c19a285f6 478 currentState = TITLE;
yfkwok 2:464c7e62d97d 479 break;
yfkwok 2:464c7e62d97d 480
yfkwok 2:464c7e62d97d 481 case INSTRUCTION:
yfkwok 26:c60becf3f840 482 // 1. Display instruction
yfkwok 26:c60becf3f840 483 // 2. Return to MENU screen
yfkwok 26:c60becf3f840 484
yfkwok 33:f7ec806e14b6 485 grad.instruction(pad, lcd);
yfkwok 2:464c7e62d97d 486 currentState = MENU;
yfkwok 2:464c7e62d97d 487 break;
yfkwok 2:464c7e62d97d 488 }
yfkwok 1:61b67654ffb7 489 }
yfkwok 1:61b67654ffb7 490 }
yfkwok 1:61b67654ffb7 491
yfkwok 1:61b67654ffb7 492 // initialies all classes and libraries
yfkwok 1:61b67654ffb7 493 void init()
yfkwok 1:61b67654ffb7 494 {
yfkwok 1:61b67654ffb7 495 lcd.init();
yfkwok 2:464c7e62d97d 496 pad.init();
yfkwok 21:704d938acf5d 497 device.init();
yfkwok 1:61b67654ffb7 498 // change set contrast in range 0.0 to 1.0
yfkwok 1:61b67654ffb7 499 // 0.4 appears to be a good starting point
yfkwok 21:704d938acf5d 500 lcd.setContrast(0.4);
yfkwok 1:61b67654ffb7 501 }
yfkwok 1:61b67654ffb7 502
yfkwok 32:58def659f463 503 // Function for displaying the menu screen
yfkwok 2:464c7e62d97d 504 int menu()
yfkwok 2:464c7e62d97d 505 {
yfkwok 2:464c7e62d97d 506 // clear screen, re-draw and refresh
yfkwok 2:464c7e62d97d 507 lcd.clear();
yfkwok 32:58def659f463 508 int pos_y = 5; // Set position for menu pointer
yfkwok 2:464c7e62d97d 509 while(pad.check_event(Gamepad::A_PRESSED) == false){
yfkwok 2:464c7e62d97d 510 lcd.clear();
yfkwok 2:464c7e62d97d 511 if(pad.get_direction() == N){
yfkwok 32:58def659f463 512 pos_y = 5; // Set position for menu pointer to top option
yfkwok 2:464c7e62d97d 513 }else if(pad.get_direction() == S){
yfkwok 32:58def659f463 514 pos_y = 16; // Set position for menu pointer to bottom option
yfkwok 1:61b67654ffb7 515 }
yfkwok 11:5a6b9dffd78a 516 int arrow_data[7][5] = {
yfkwok 11:5a6b9dffd78a 517 {1,1,0,0,0},
yfkwok 11:5a6b9dffd78a 518 {0,1,1,0,0},
yfkwok 11:5a6b9dffd78a 519 {0,0,1,1,0},
yfkwok 11:5a6b9dffd78a 520 {0,0,0,1,1},
yfkwok 11:5a6b9dffd78a 521 {0,0,1,1,0},
yfkwok 11:5a6b9dffd78a 522 {0,1,1,0,0},
yfkwok 11:5a6b9dffd78a 523 {1,1,0,0,0},
yfkwok 2:464c7e62d97d 524 };
yfkwok 26:c60becf3f840 525 // draw pointer for selection
yfkwok 11:5a6b9dffd78a 526 lcd.drawSprite(5, pos_y, 7, 5, (int *)arrow_data);
yfkwok 2:464c7e62d97d 527
yfkwok 10:adff3c804985 528 int op_one_data[7][26] = {
yfkwok 10:adff3c804985 529 {1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,1},
yfkwok 10:adff3c804985 530 {1,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0},
yfkwok 10:adff3c804985 531 {1,0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0},
yfkwok 10:adff3c804985 532 {1,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,1,0,0},
yfkwok 10:adff3c804985 533 {0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0},
yfkwok 10:adff3c804985 534 {0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0},
yfkwok 10:adff3c804985 535 {1,1,1,1,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,1,0,0},
yfkwok 2:464c7e62d97d 536 };
yfkwok 26:c60becf3f840 537 // draw "START"
yfkwok 10:adff3c804985 538 lcd.drawSprite(18, 5, 7, 26, (int *)op_one_data);
yfkwok 2:464c7e62d97d 539
yfkwok 10:adff3c804985 540 int op_two_data[7][18] = {
yfkwok 10:adff3c804985 541 {1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1},
yfkwok 10:adff3c804985 542 {0,1,0,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1},
yfkwok 10:adff3c804985 543 {0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1},
yfkwok 10:adff3c804985 544 {0,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,1},
yfkwok 10:adff3c804985 545 {0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1},
yfkwok 10:adff3c804985 546 {0,1,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,1},
yfkwok 10:adff3c804985 547 {1,1,1,0,1,0,0,1,0,1,0,0,0,0,1,1,1,1},
yfkwok 2:464c7e62d97d 548 };
yfkwok 26:c60becf3f840 549 // draw "INFO"
yfkwok 10:adff3c804985 550 lcd.drawSprite(18, 16, 7, 18, (int*) op_two_data);
yfkwok 2:464c7e62d97d 551
yfkwok 11:5a6b9dffd78a 552 int instruct_data[7][75] = {
yfkwok 11:5a6b9dffd78a 553 {1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0},
yfkwok 11:5a6b9dffd78a 554 {1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0},
yfkwok 11:5a6b9dffd78a 555 {1,0,0,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,0},
yfkwok 11:5a6b9dffd78a 556 {1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0},
yfkwok 11:5a6b9dffd78a 557 {1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,0,1,0,0,0,0,1,0,0,0},
yfkwok 11:5a6b9dffd78a 558 {1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0,1,0,1,0,0,1},
yfkwok 11:5a6b9dffd78a 559 {1,0,0,0,0,1,0,0,0,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1,0,0,0,0,1,0,0,1,0,0,0,0,1,1,1,1,0,1,1,1,1,0,0,0,0,1,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,1,0,1,1,1,1},
yfkwok 2:464c7e62d97d 560 };
yfkwok 26:c60becf3f840 561 // draw instruction
yfkwok 11:5a6b9dffd78a 562 lcd.drawSprite(5, 38, 7, 75,(int *) instruct_data);
yfkwok 1:61b67654ffb7 563 lcd.refresh();
yfkwok 1:61b67654ffb7 564
yfkwok 2:464c7e62d97d 565 }
yfkwok 2:464c7e62d97d 566
yfkwok 2:464c7e62d97d 567 //return value for which menu option is currently selected
yfkwok 2:464c7e62d97d 568 int op = 0;
yfkwok 2:464c7e62d97d 569 if(pos_y == 5){op = 0;}
yfkwok 2:464c7e62d97d 570 else if(pos_y == 16){op = 1;}
yfkwok 2:464c7e62d97d 571
yfkwok 2:464c7e62d97d 572 //return value for which menu option is currently selected
yfkwok 2:464c7e62d97d 573 return op;
yfkwok 2:464c7e62d97d 574
yfkwok 2:464c7e62d97d 575 }
yfkwok 2:464c7e62d97d 576
yfkwok 32:58def659f463 577 // Function for setting year one game parameters
yfkwok 2:464c7e62d97d 578 void year_one_set()
yfkwok 2:464c7e62d97d 579 {
yfkwok 31:0d2c19a285f6 580 year = 0;
yfkwok 28:a6726a3f8e6d 581 game_1_speed = 12;
yfkwok 2:464c7e62d97d 582 game_1_cha = 1;
yfkwok 5:bc0691d02fd5 583 game_1_r = 5;
yfkwok 21:704d938acf5d 584 game_2_speed = 1;
yfkwok 15:a65444eb1194 585 game_2_cha = 1;
yfkwok 15:a65444eb1194 586 game_2_r = 6;
yfkwok 27:4bcdfb212467 587 game_3_set = 1;
yfkwok 33:f7ec806e14b6 588 game_3_time = 0.6;
yfkwok 2:464c7e62d97d 589 }
yfkwok 2:464c7e62d97d 590
yfkwok 32:58def659f463 591 // Function for setting year two game parameters
yfkwok 2:464c7e62d97d 592 void year_two_set()
yfkwok 2:464c7e62d97d 593 {
yfkwok 31:0d2c19a285f6 594 year = 1;
yfkwok 28:a6726a3f8e6d 595 game_1_speed = 14;
yfkwok 2:464c7e62d97d 596 game_1_cha = 2;
yfkwok 5:bc0691d02fd5 597 game_1_r = 3;
yfkwok 21:704d938acf5d 598 game_2_speed = 2;
yfkwok 15:a65444eb1194 599 game_2_cha = 2;
yfkwok 15:a65444eb1194 600 game_2_r = 5;
yfkwok 27:4bcdfb212467 601 game_3_set = 2;
yfkwok 28:a6726a3f8e6d 602 game_3_time = 0.4;
yfkwok 2:464c7e62d97d 603 }
yfkwok 2:464c7e62d97d 604
yfkwok 32:58def659f463 605 // Function for setting year three game parameters
yfkwok 2:464c7e62d97d 606 void year_three_set()
yfkwok 2:464c7e62d97d 607 {
yfkwok 31:0d2c19a285f6 608 year = 2;
yfkwok 5:bc0691d02fd5 609 game_1_speed = 14;
yfkwok 2:464c7e62d97d 610 game_1_cha = 3;
yfkwok 5:bc0691d02fd5 611 game_1_r = 2;
yfkwok 22:f8f36e88b2ca 612 game_2_speed = 2;
yfkwok 15:a65444eb1194 613 game_2_cha = 3;
yfkwok 15:a65444eb1194 614 game_2_r = 3;
yfkwok 27:4bcdfb212467 615 game_3_set = 3;
yfkwok 28:a6726a3f8e6d 616 game_3_time = 0.3;
yfkwok 2:464c7e62d97d 617 }
yfkwok 2:464c7e62d97d 618
yfkwok 32:58def659f463 619 // INTENSE music played in background during exams, music originally from Pokemon (R/B/Y) during GYM leader battle
yfkwok 23:4a070960817a 620 void gym()
yfkwok 23:4a070960817a 621 {
yfkwok 23:4a070960817a 622 // bar 1
yfkwok 23:4a070960817a 623 pad.tone(NOTE_B4,0.33/2);
yfkwok 26:c60becf3f840 624 // to break out of the function
yfkwok 23:4a070960817a 625 if (finished == true) {return;}
yfkwok 23:4a070960817a 626 Thread::wait(330/2);
yfkwok 23:4a070960817a 627 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 628 wait(0.33/2);
yfkwok 23:4a070960817a 629 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 630 wait(0.33/2);
yfkwok 23:4a070960817a 631 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 632 wait(0.33/2);
yfkwok 23:4a070960817a 633 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 634 wait(0.33/2);
yfkwok 23:4a070960817a 635 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 636 wait(0.33/2);
yfkwok 23:4a070960817a 637 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 638 wait(0.33/2);
yfkwok 23:4a070960817a 639 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 640 wait(0.33/2);
yfkwok 23:4a070960817a 641 pad.tone(NOTE_B4,0.33/2);
yfkwok 32:58def659f463 642 if (finished == true) {return;}
yfkwok 32:58def659f463 643 Thread::wait(330/2);
yfkwok 23:4a070960817a 644 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 645 wait(0.33/2);
yfkwok 23:4a070960817a 646 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 647 wait(0.33/2);
yfkwok 23:4a070960817a 648 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 649 wait(0.33/2);
yfkwok 23:4a070960817a 650 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 651 wait(0.33/2);
yfkwok 32:58def659f463 652 pad.tone(NOTE_C5,0.33*1.5);
yfkwok 23:4a070960817a 653 wait(0.33*1.5);
yfkwok 32:58def659f463 654 // bar 3
yfkwok 23:4a070960817a 655 pad.tone(NOTE_B4,0.33/2);
yfkwok 32:58def659f463 656 if (finished == true) {return;}
yfkwok 23:4a070960817a 657 Thread::wait(330/2);
yfkwok 23:4a070960817a 658 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 659 wait(0.33/2);
yfkwok 23:4a070960817a 660 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 661 wait(0.33/2);
yfkwok 23:4a070960817a 662 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 663 wait(0.33/2);
yfkwok 23:4a070960817a 664 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 665 wait(0.33/2);
yfkwok 23:4a070960817a 666 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 667 wait(0.33/2);
yfkwok 23:4a070960817a 668 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 669 wait(0.33/2);
yfkwok 23:4a070960817a 670 pad.tone(NOTE_FS4,0.33/2);
yfkwok 32:58def659f463 671 if (finished == true) {return;}
yfkwok 32:58def659f463 672 Thread::wait(330/2);
yfkwok 32:58def659f463 673 pad.tone(NOTE_B4,0.33/2);
yfkwok 32:58def659f463 674 wait(0.33/2);
yfkwok 32:58def659f463 675 pad.tone(NOTE_FS4,0.33/2);
yfkwok 32:58def659f463 676 wait(0.33/2);
yfkwok 32:58def659f463 677 pad.tone(NOTE_B3,0.33/2);
yfkwok 32:58def659f463 678 wait(0.33/2);
yfkwok 32:58def659f463 679 pad.tone(NOTE_FS4,0.33/2);
yfkwok 32:58def659f463 680 wait(0.33/2);
yfkwok 32:58def659f463 681 pad.tone(NOTE_B3,0.33/2);
yfkwok 32:58def659f463 682 if (finished == true) {return;}
yfkwok 32:58def659f463 683 Thread::wait(330/2);
yfkwok 32:58def659f463 684 pad.tone(NOTE_AS4,0.33*1.5);
yfkwok 32:58def659f463 685 wait(0.33*1.5);
yfkwok 32:58def659f463 686 // bar 5
yfkwok 32:58def659f463 687 pad.tone(NOTE_B4,0.33/2);
yfkwok 32:58def659f463 688 if (finished == true) {return;}
yfkwok 32:58def659f463 689 Thread::wait(330/2);
yfkwok 32:58def659f463 690 pad.tone(NOTE_FS4,0.33/2);
yfkwok 32:58def659f463 691 wait(0.33/2);
yfkwok 32:58def659f463 692 pad.tone(NOTE_B3,0.33/2);
yfkwok 32:58def659f463 693 wait(0.33/2);
yfkwok 32:58def659f463 694 pad.tone(NOTE_FS4,0.33/2);
yfkwok 32:58def659f463 695 wait(0.33/2);
yfkwok 32:58def659f463 696 pad.tone(NOTE_B3,0.33/2);
yfkwok 32:58def659f463 697 wait(0.33/2);
yfkwok 32:58def659f463 698 pad.tone(NOTE_FS4,0.33/2);
yfkwok 32:58def659f463 699 wait(0.33/2);
yfkwok 32:58def659f463 700 pad.tone(NOTE_B3,0.33/2);
yfkwok 32:58def659f463 701 if (finished == true) {return;}
yfkwok 32:58def659f463 702 Thread::wait(330/2);
yfkwok 32:58def659f463 703 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 704 wait(0.33/2);
yfkwok 23:4a070960817a 705 pad.tone(NOTE_B4,0.33/2);
yfkwok 23:4a070960817a 706 wait(0.33/2);
yfkwok 23:4a070960817a 707 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 708 wait(0.33/2);
yfkwok 23:4a070960817a 709 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 710 wait(0.33/2);
yfkwok 23:4a070960817a 711 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 712 wait(0.33/2);
yfkwok 23:4a070960817a 713 pad.tone(NOTE_B3,0.33/2);
yfkwok 32:58def659f463 714 if (finished == true) {return;}
yfkwok 32:58def659f463 715 Thread::wait(330/2);
yfkwok 23:4a070960817a 716 pad.tone(NOTE_C5,0.33*1.5);
yfkwok 23:4a070960817a 717 wait(0.33*1.5);
yfkwok 23:4a070960817a 718 // bar 7
yfkwok 23:4a070960817a 719 pad.tone(NOTE_B4,0.33/2);
yfkwok 32:58def659f463 720 if (finished == true) {return;}
yfkwok 23:4a070960817a 721 Thread::wait(330/2);
yfkwok 23:4a070960817a 722 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 723 wait(0.33/2);
yfkwok 23:4a070960817a 724 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 725 wait(0.33/2);
yfkwok 23:4a070960817a 726 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 727 wait(0.33/2);
yfkwok 23:4a070960817a 728 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 729 wait(0.33/2);
yfkwok 23:4a070960817a 730 pad.tone(NOTE_FS4,0.33/2);
yfkwok 32:58def659f463 731 if (finished == true) {return;}
yfkwok 32:58def659f463 732 Thread::wait(330/2);
yfkwok 23:4a070960817a 733 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 734 wait(0.33/2);
yfkwok 23:4a070960817a 735 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 736 wait(0.33/2);
yfkwok 23:4a070960817a 737 pad.tone(NOTE_B4,0.33/2);
yfkwok 23:4a070960817a 738 wait(0.33/2);
yfkwok 23:4a070960817a 739 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 740 wait(0.33/2);
yfkwok 23:4a070960817a 741 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 742 wait(0.33/2);
yfkwok 23:4a070960817a 743 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 744 wait(0.33/2);
yfkwok 23:4a070960817a 745 pad.tone(NOTE_B3,0.33/2);
yfkwok 32:58def659f463 746 if (finished == true) {return;}
yfkwok 23:4a070960817a 747 Thread::wait(330/2);
yfkwok 23:4a070960817a 748 pad.tone(NOTE_CS5,0.33*1.5);
yfkwok 23:4a070960817a 749 wait(0.33*1.5);
yfkwok 23:4a070960817a 750
yfkwok 23:4a070960817a 751 // Loop while state is true
yfkwok 23:4a070960817a 752 while(!finished){
yfkwok 23:4a070960817a 753 // bar 8
yfkwok 23:4a070960817a 754 pad.tone(NOTE_DS5,0.33);
yfkwok 23:4a070960817a 755 wait(0.33);
yfkwok 23:4a070960817a 756 pad.tone(NOTE_CS5,0.33);
yfkwok 23:4a070960817a 757 wait(0.33);
yfkwok 23:4a070960817a 758 pad.tone(NOTE_DS5,0.33);
yfkwok 23:4a070960817a 759 wait(0.33);
yfkwok 23:4a070960817a 760 pad.tone(NOTE_E5,0.33/2);
yfkwok 23:4a070960817a 761 Thread::wait(330/2);
yfkwok 26:c60becf3f840 762 // to break out of the function
yfkwok 23:4a070960817a 763 if(finished == true) {break;}
yfkwok 23:4a070960817a 764 pad.tone(NOTE_FS5,0.33);
yfkwok 23:4a070960817a 765 wait(0.33);
yfkwok 23:4a070960817a 766 pad.tone(NOTE_E5,0.33);
yfkwok 23:4a070960817a 767 wait(0.33);
yfkwok 23:4a070960817a 768 pad.tone(NOTE_DS5,0.33/2);
yfkwok 23:4a070960817a 769 Thread::wait(330/2);
yfkwok 23:4a070960817a 770 if(finished == true) {break;}
yfkwok 23:4a070960817a 771 pad.tone(NOTE_CS5,0.33/2);
yfkwok 23:4a070960817a 772 wait(0.33/2);
yfkwok 23:4a070960817a 773 pad.tone(NOTE_B4,0.33/2);
yfkwok 23:4a070960817a 774 wait(0.33/2);
yfkwok 23:4a070960817a 775 pad.tone(NOTE_CS5,0.33/2);
yfkwok 23:4a070960817a 776 wait(0.33/2);
yfkwok 23:4a070960817a 777 pad.tone(NOTE_DS5,0.33/2);
yfkwok 23:4a070960817a 778 Thread::wait(330/2);
yfkwok 23:4a070960817a 779 if(finished == true) {break;}
yfkwok 23:4a070960817a 780 // bar 10
yfkwok 23:4a070960817a 781 pad.tone(NOTE_A4,0.33*2);
yfkwok 23:4a070960817a 782 wait(0.33*2);
yfkwok 23:4a070960817a 783 pad.tone(NOTE_CS5,0.33*2);
yfkwok 23:4a070960817a 784 Thread::wait(330*2);
yfkwok 23:4a070960817a 785 if(finished == true) {break;}
yfkwok 23:4a070960817a 786 pad.tone(NOTE_E5,0.33*2);
yfkwok 23:4a070960817a 787 wait(0.33*2);
yfkwok 23:4a070960817a 788 pad.tone(NOTE_CS5,0.33*2);
yfkwok 23:4a070960817a 789 Thread::wait(330*2);
yfkwok 23:4a070960817a 790 if(finished == true) {break;}
yfkwok 23:4a070960817a 791 // bar 8
yfkwok 23:4a070960817a 792 pad.tone(NOTE_DS5,0.33);
yfkwok 23:4a070960817a 793 wait(0.33);
yfkwok 23:4a070960817a 794 pad.tone(NOTE_CS5,0.33);
yfkwok 23:4a070960817a 795 wait(0.33);
yfkwok 23:4a070960817a 796 pad.tone(NOTE_DS5,0.33);
yfkwok 23:4a070960817a 797 wait(0.33);
yfkwok 23:4a070960817a 798 pad.tone(NOTE_E5,0.33/2);
yfkwok 23:4a070960817a 799 Thread::wait(330/2);
yfkwok 23:4a070960817a 800 if(finished == true) {break;}
yfkwok 23:4a070960817a 801 pad.tone(NOTE_FS5,0.33);
yfkwok 23:4a070960817a 802 wait(0.33);
yfkwok 23:4a070960817a 803 pad.tone(NOTE_E5,0.33);
yfkwok 23:4a070960817a 804 wait(0.33);
yfkwok 23:4a070960817a 805 pad.tone(NOTE_DS5,0.33/2);
yfkwok 23:4a070960817a 806 wait(0.33/2);
yfkwok 23:4a070960817a 807 pad.tone(NOTE_CS5,0.33/2);
yfkwok 23:4a070960817a 808 wait(0.33/2);
yfkwok 23:4a070960817a 809 pad.tone(NOTE_B4,0.33/2);
yfkwok 23:4a070960817a 810 Thread::wait(330/2);
yfkwok 23:4a070960817a 811 if(finished == true) {break;}
yfkwok 23:4a070960817a 812 pad.tone(NOTE_CS5,0.33/2);
yfkwok 23:4a070960817a 813 wait(0.33/2);
yfkwok 23:4a070960817a 814 pad.tone(NOTE_DS5,0.33/2);
yfkwok 23:4a070960817a 815 wait(0.33/2);
yfkwok 23:4a070960817a 816 // bar 12
yfkwok 23:4a070960817a 817 pad.tone(NOTE_CS5,0.33*2);
yfkwok 23:4a070960817a 818 wait(0.33*2);
yfkwok 23:4a070960817a 819 pad.tone(NOTE_B4,0.33*2);
yfkwok 23:4a070960817a 820 Thread::wait(330*2);
yfkwok 23:4a070960817a 821 if(finished == true) {break;}
yfkwok 23:4a070960817a 822 pad.tone(NOTE_A4,0.33*2);
yfkwok 23:4a070960817a 823 wait(0.33*2);
yfkwok 23:4a070960817a 824 pad.tone(NOTE_E5,0.33);
yfkwok 23:4a070960817a 825 wait(0.33);
yfkwok 23:4a070960817a 826 pad.tone(NOTE_E5,0.33/2);
yfkwok 23:4a070960817a 827 wait(0.33/2);
yfkwok 23:4a070960817a 828 pad.tone(NOTE_CS5,0.33/2);
yfkwok 23:4a070960817a 829 Thread::wait(330/2);
yfkwok 23:4a070960817a 830 if(finished == true) {break;}
yfkwok 23:4a070960817a 831 // bar 14
yfkwok 23:4a070960817a 832 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 833 wait(0.33/2);
yfkwok 23:4a070960817a 834 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 835 wait(0.33/2);
yfkwok 23:4a070960817a 836 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 837 wait(0.33/4);
yfkwok 23:4a070960817a 838 pad.tone(NOTE_CS4,0.33/4);
yfkwok 23:4a070960817a 839 wait(0.33/4);
yfkwok 23:4a070960817a 840 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 841 wait(0.33/4);
yfkwok 23:4a070960817a 842 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 843 wait(0.33/4);
yfkwok 23:4a070960817a 844 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 845 Thread::wait(330/2);
yfkwok 23:4a070960817a 846 if(finished == true) {break;}
yfkwok 23:4a070960817a 847 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 848 wait(0.33/2);
yfkwok 23:4a070960817a 849 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 850 wait(0.33/4);
yfkwok 23:4a070960817a 851 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 852 wait(0.33/4);
yfkwok 23:4a070960817a 853 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 854 wait(0.33/4);
yfkwok 23:4a070960817a 855 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 856 wait(0.33/4);
yfkwok 23:4a070960817a 857 // bar 15
yfkwok 23:4a070960817a 858 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 859 wait(0.33/2);
yfkwok 23:4a070960817a 860 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 861 Thread::wait(330/2);
yfkwok 23:4a070960817a 862 if(finished == true) {break;}
yfkwok 23:4a070960817a 863 pad.tone(NOTE_FS4,0.33/4);
yfkwok 23:4a070960817a 864 wait(0.33/4);
yfkwok 23:4a070960817a 865 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 866 wait(0.33/4);
yfkwok 23:4a070960817a 867 pad.tone(NOTE_CS4,0.33/4);
yfkwok 23:4a070960817a 868 wait(0.33/4);
yfkwok 23:4a070960817a 869 pad.tone(NOTE_FS4,0.33/4);
yfkwok 23:4a070960817a 870 wait(0.33/4);
yfkwok 23:4a070960817a 871 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 872 wait(0.33/2);
yfkwok 23:4a070960817a 873 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 874 wait(0.33/4);
yfkwok 23:4a070960817a 875 pad.tone(NOTE_CS4,0.33/4);
yfkwok 23:4a070960817a 876 wait(0.33/4);
yfkwok 23:4a070960817a 877 pad.tone(NOTE_E4,0.25/2);
yfkwok 23:4a070960817a 878 Thread::wait(250/2);
yfkwok 23:4a070960817a 879 if(finished == true) {break;}
yfkwok 23:4a070960817a 880 pad.tone(NOTE_F4,0.25/2);
yfkwok 23:4a070960817a 881 wait(0.33/2);
yfkwok 23:4a070960817a 882 // bar 16
yfkwok 23:4a070960817a 883 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 884 wait(0.33/4);
yfkwok 23:4a070960817a 885 pad.tone(NOTE_CS4,0.33/4);
yfkwok 23:4a070960817a 886 wait(0.33/4);
yfkwok 23:4a070960817a 887 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 888 wait(0.33/4);
yfkwok 23:4a070960817a 889 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 890 wait(0.33/4);
yfkwok 23:4a070960817a 891 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 892 Thread::wait(330/2);
yfkwok 23:4a070960817a 893 if(finished == true) {break;}
yfkwok 23:4a070960817a 894 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 895 wait(0.33/2);
yfkwok 23:4a070960817a 896 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 897 wait(0.33/4);
yfkwok 23:4a070960817a 898 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 899 wait(0.33/4);
yfkwok 23:4a070960817a 900 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 901 wait(0.33/4);
yfkwok 23:4a070960817a 902 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 903 wait(0.33/4);
yfkwok 23:4a070960817a 904 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 905 wait(0.33/2);
yfkwok 23:4a070960817a 906 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 907 Thread::wait(330/2);
yfkwok 23:4a070960817a 908 if(finished == true) {break;}
yfkwok 23:4a070960817a 909 // bar 17
yfkwok 23:4a070960817a 910 pad.tone(NOTE_FS4,0.33/4);
yfkwok 23:4a070960817a 911 wait(0.33/4);
yfkwok 23:4a070960817a 912 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 913 wait(0.33/4);
yfkwok 23:4a070960817a 914 pad.tone(NOTE_CS4,0.33/4);
yfkwok 23:4a070960817a 915 wait(0.33/4);
yfkwok 23:4a070960817a 916 pad.tone(NOTE_FS4,0.33/4);
yfkwok 23:4a070960817a 917 wait(0.33/4);
yfkwok 23:4a070960817a 918 pad.tone(NOTE_E4,0.33/2);
yfkwok 23:4a070960817a 919 Thread::wait(330/2);
yfkwok 23:4a070960817a 920 if(finished == true) {break;}
yfkwok 23:4a070960817a 921 pad.tone(NOTE_CS4,0.33/2);
yfkwok 23:4a070960817a 922 wait(0.33/2);
yfkwok 23:4a070960817a 923 pad.tone(NOTE_D4,0.33/2);
yfkwok 23:4a070960817a 924 wait(0.33/2);
yfkwok 23:4a070960817a 925 pad.tone(NOTE_CS4,0.33/2);
yfkwok 23:4a070960817a 926 wait(0.33/2);
yfkwok 23:4a070960817a 927 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 928 Thread::wait(330/2);
yfkwok 23:4a070960817a 929 if(finished == true) {break;}
yfkwok 23:4a070960817a 930 pad.tone(NOTE_E4,0.33/2);
yfkwok 23:4a070960817a 931 wait(0.33/2);
yfkwok 23:4a070960817a 932 // bar 18
yfkwok 23:4a070960817a 933 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 934 wait(0.33/2);
yfkwok 23:4a070960817a 935 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 936 wait(0.33/2);
yfkwok 23:4a070960817a 937 pad.tone(NOTE_B4,0.33);
yfkwok 23:4a070960817a 938 Thread::wait(330);
yfkwok 23:4a070960817a 939 if(finished == true) {break;}
yfkwok 23:4a070960817a 940 pad.tone(NOTE_C5,0.33);
yfkwok 23:4a070960817a 941 wait(0.33);
yfkwok 23:4a070960817a 942 pad.tone(NOTE_A4,0.33);
yfkwok 23:4a070960817a 943 wait(0.33);
yfkwok 23:4a070960817a 944 pad.tone(NOTE_B4,0.33);
yfkwok 23:4a070960817a 945 Thread::wait(330);
yfkwok 23:4a070960817a 946 if(finished == true) {break;}
yfkwok 23:4a070960817a 947 pad.tone(NOTE_C5,0.33);
yfkwok 23:4a070960817a 948 wait(0.33);
yfkwok 23:4a070960817a 949 pad.tone(NOTE_A4,0.33);
yfkwok 23:4a070960817a 950 wait(0.33);
yfkwok 23:4a070960817a 951 pad.tone(NOTE_G4,0.33);
yfkwok 23:4a070960817a 952 Thread::wait(330);
yfkwok 23:4a070960817a 953 if(finished == true) {break;}
yfkwok 23:4a070960817a 954 // bar 19
yfkwok 23:4a070960817a 955 pad.tone(NOTE_FS4,0.33*4);
yfkwok 23:4a070960817a 956 wait(0.33);
yfkwok 23:4a070960817a 957 pad.tone(NOTE_C4,0.33/4);
yfkwok 23:4a070960817a 958 wait(0.33/4);
yfkwok 23:4a070960817a 959 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 960 wait(0.33/4);
yfkwok 23:4a070960817a 961 pad.tone(NOTE_A3,0.33/4);
yfkwok 23:4a070960817a 962 wait(0.33/4);
yfkwok 23:4a070960817a 963 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 964 Thread::wait(330/4);
yfkwok 23:4a070960817a 965 if(finished == true) {break;}
yfkwok 23:4a070960817a 966 pad.tone(NOTE_C4,0.33/4);
yfkwok 23:4a070960817a 967 wait(0.33/4);
yfkwok 23:4a070960817a 968 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 969 wait(0.33/4);
yfkwok 23:4a070960817a 970 pad.tone(NOTE_A3,0.33/4);
yfkwok 23:4a070960817a 971 wait(0.33/4);
yfkwok 23:4a070960817a 972 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 973 wait(0.33/4);
yfkwok 23:4a070960817a 974 pad.tone(NOTE_C4,0.33/4);
yfkwok 23:4a070960817a 975 wait(0.33/4);
yfkwok 23:4a070960817a 976 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 977 Thread::wait(330/4);
yfkwok 23:4a070960817a 978 if(finished == true) {break;}
yfkwok 23:4a070960817a 979 pad.tone(NOTE_A3,0.33/4);
yfkwok 23:4a070960817a 980 wait(0.33/4);
yfkwok 23:4a070960817a 981 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 982 wait(0.33/4);
yfkwok 23:4a070960817a 983 // bar 20
yfkwok 23:4a070960817a 984 pad.tone(NOTE_C4,0.33/4);
yfkwok 23:4a070960817a 985 wait(0.33/4);
yfkwok 23:4a070960817a 986 pad.tone(NOTE_CS4,0.33/4);
yfkwok 23:4a070960817a 987 wait(0.33/4);
yfkwok 23:4a070960817a 988 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 989 wait(0.33/4);
yfkwok 23:4a070960817a 990 pad.tone(NOTE_DS4,0.33/4);
yfkwok 23:4a070960817a 991 Thread::wait(330/4);
yfkwok 23:4a070960817a 992 if(finished == true) {break;}
yfkwok 23:4a070960817a 993 pad.tone(NOTE_E4,0.33/4);
yfkwok 23:4a070960817a 994 wait(0.33/4);
yfkwok 23:4a070960817a 995 pad.tone(NOTE_DS4,0.33/4);
yfkwok 23:4a070960817a 996 wait(0.33/4);
yfkwok 23:4a070960817a 997 pad.tone(NOTE_D4,0.33/4);
yfkwok 23:4a070960817a 998 wait(0.33/4);
yfkwok 23:4a070960817a 999 pad.tone(NOTE_CS4,0.33/4);
yfkwok 23:4a070960817a 1000 wait(0.33/4);
yfkwok 23:4a070960817a 1001 pad.tone(NOTE_C4,0.33/4);
yfkwok 23:4a070960817a 1002 wait(0.33/4);
yfkwok 23:4a070960817a 1003 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 1004 Thread::wait(330/4);
yfkwok 23:4a070960817a 1005 if(finished == true) {break;}
yfkwok 23:4a070960817a 1006 pad.tone(NOTE_AS3,0.33/4);
yfkwok 23:4a070960817a 1007 wait(0.33/4);
yfkwok 23:4a070960817a 1008 pad.tone(NOTE_A3,0.33/4);
yfkwok 23:4a070960817a 1009 wait(0.33/4);
yfkwok 23:4a070960817a 1010 pad.tone(NOTE_GS3,0.33/4);
yfkwok 23:4a070960817a 1011 wait(0.33/4);
yfkwok 23:4a070960817a 1012 pad.tone(NOTE_G3,0.33/4);
yfkwok 23:4a070960817a 1013 wait(0.33/4);
yfkwok 23:4a070960817a 1014 pad.tone(NOTE_FS3,0.33/4);
yfkwok 23:4a070960817a 1015 Thread::wait(330/4);
yfkwok 23:4a070960817a 1016 if(finished == true) {break;}
yfkwok 23:4a070960817a 1017 pad.tone(NOTE_G3,0.33/4);
yfkwok 23:4a070960817a 1018 wait(0.33/4);
yfkwok 23:4a070960817a 1019 // bar 22
yfkwok 23:4a070960817a 1020 pad.tone(NOTE_GS3,0.33/4);
yfkwok 23:4a070960817a 1021 wait(0.33/4);
yfkwok 23:4a070960817a 1022 pad.tone(NOTE_A3,0.33/4);
yfkwok 23:4a070960817a 1023 wait(0.33/4);
yfkwok 23:4a070960817a 1024 pad.tone(NOTE_AS3,0.33/4);
yfkwok 23:4a070960817a 1025 wait(0.33/4);
yfkwok 23:4a070960817a 1026 pad.tone(NOTE_B3,0.33/4);
yfkwok 23:4a070960817a 1027 Thread::wait(330/4);
yfkwok 23:4a070960817a 1028 if(finished == true) {break;}
yfkwok 23:4a070960817a 1029 pad.tone(NOTE_B4,0.33);
yfkwok 23:4a070960817a 1030 wait(0.33);
yfkwok 23:4a070960817a 1031 pad.tone(NOTE_C5,0.33);
yfkwok 23:4a070960817a 1032 wait(0.33);
yfkwok 23:4a070960817a 1033 pad.tone(NOTE_A4,0.33);
yfkwok 23:4a070960817a 1034 Thread::wait(330);
yfkwok 23:4a070960817a 1035 if(finished == true) {break;}
yfkwok 23:4a070960817a 1036 pad.tone(NOTE_B4,0.33);
yfkwok 23:4a070960817a 1037 wait(0.33);
yfkwok 23:4a070960817a 1038 pad.tone(NOTE_C5,0.33);
yfkwok 23:4a070960817a 1039 wait(0.33);
yfkwok 23:4a070960817a 1040 pad.tone(NOTE_A4,0.33);
yfkwok 23:4a070960817a 1041 Thread::wait(330);
yfkwok 23:4a070960817a 1042 if(finished == true) {break;}
yfkwok 23:4a070960817a 1043 pad.tone(NOTE_C5,0.33);
yfkwok 23:4a070960817a 1044 wait(0.33);
yfkwok 23:4a070960817a 1045 pad.tone(NOTE_B4,0.33*4);
yfkwok 23:4a070960817a 1046 wait(0.33*4);
yfkwok 23:4a070960817a 1047 pad.tone(NOTE_FS5,0.33*4);
yfkwok 23:4a070960817a 1048 Thread::wait(330*4);
yfkwok 23:4a070960817a 1049 if(finished == true) {break;}
yfkwok 23:4a070960817a 1050 // bar 26
yfkwok 23:4a070960817a 1051 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1052 wait(0.33/2);
yfkwok 23:4a070960817a 1053 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1054 Thread::wait(330/2);
yfkwok 23:4a070960817a 1055 if(finished == true) {break;}
yfkwok 23:4a070960817a 1056 pad.tone(NOTE_A4,0.33*3);
yfkwok 23:4a070960817a 1057 wait(0.33*3);
yfkwok 23:4a070960817a 1058 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1059 wait(0.33/2);
yfkwok 23:4a070960817a 1060 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1061 Thread::wait(330/2);
yfkwok 23:4a070960817a 1062 if(finished == true) {break;}
yfkwok 23:4a070960817a 1063 pad.tone(NOTE_CS5,0.33*3);
yfkwok 23:4a070960817a 1064 wait(0.33*3);
yfkwok 23:4a070960817a 1065 pad.tone(NOTE_DS4,0.33);
yfkwok 23:4a070960817a 1066 wait(0.33);
yfkwok 23:4a070960817a 1067 pad.tone(NOTE_CS4,0.33);
yfkwok 23:4a070960817a 1068 wait(0.33);
yfkwok 23:4a070960817a 1069 pad.tone(NOTE_DS4,0.33);
yfkwok 23:4a070960817a 1070 Thread::wait(330);
yfkwok 23:4a070960817a 1071 if(finished == true) {break;}
yfkwok 23:4a070960817a 1072 pad.tone(NOTE_E4,0.33/2);
yfkwok 23:4a070960817a 1073 wait(0.33/2);
yfkwok 23:4a070960817a 1074 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 1075 wait(0.33/2);
yfkwok 23:4a070960817a 1076 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1077 wait(0.33/2);
yfkwok 23:4a070960817a 1078 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1079 Thread::wait(330/2);
yfkwok 23:4a070960817a 1080 if(finished == true) {break;}
yfkwok 23:4a070960817a 1081 pad.tone(NOTE_CS4,0.33/2);
yfkwok 23:4a070960817a 1082 wait(0.33/2);
yfkwok 23:4a070960817a 1083 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 1084 wait(0.33/2);
yfkwok 23:4a070960817a 1085 pad.tone(NOTE_B4,0.33/2);
yfkwok 23:4a070960817a 1086 wait(0.33/2);
yfkwok 23:4a070960817a 1087 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 1088 Thread::wait(330/2);
yfkwok 23:4a070960817a 1089 if(finished == true) {break;}
yfkwok 23:4a070960817a 1090 pad.tone(NOTE_DS4,0.33/2);
yfkwok 23:4a070960817a 1091 wait(0.33/2);
yfkwok 23:4a070960817a 1092 pad.tone(NOTE_FS4,0.33/2);
yfkwok 23:4a070960817a 1093 wait(0.33/2);
yfkwok 23:4a070960817a 1094 // bar 30
yfkwok 23:4a070960817a 1095 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1096 wait(0.33/2);
yfkwok 23:4a070960817a 1097 pad.tone(NOTE_B3,0.33/2);
yfkwok 23:4a070960817a 1098 Thread::wait(330/2);
yfkwok 23:4a070960817a 1099 if(finished == true) {break;}
yfkwok 23:4a070960817a 1100 pad.tone(NOTE_CS5,0.33*3);
yfkwok 23:4a070960817a 1101 wait(0.33*3);
yfkwok 23:4a070960817a 1102 pad.tone(NOTE_A5,0.33*2);
yfkwok 23:4a070960817a 1103 Thread::wait(330*2);
yfkwok 23:4a070960817a 1104 if(finished == true) {break;}
yfkwok 23:4a070960817a 1105 pad.tone(NOTE_E5,0.33*2);
yfkwok 23:4a070960817a 1106 wait(0.33*2);
yfkwok 23:4a070960817a 1107 // bar 32
yfkwok 23:4a070960817a 1108 pad.tone(NOTE_B5,0.33*4);
yfkwok 23:4a070960817a 1109 wait(0.33);
yfkwok 23:4a070960817a 1110 pad.tone(NOTE_E4,0.33);
yfkwok 23:4a070960817a 1111 Thread::wait(330);
yfkwok 23:4a070960817a 1112 if(finished == true) {break;}
yfkwok 23:4a070960817a 1113 pad.tone(NOTE_CS4,0.33/2);
yfkwok 23:4a070960817a 1114 wait(0.33/2);
yfkwok 23:4a070960817a 1115 pad.tone(NOTE_DS4,0.33*1.5);
yfkwok 23:4a070960817a 1116 wait(0.33*1.5);
yfkwok 23:4a070960817a 1117 pad.tone(NOTE_FS4,0.33);
yfkwok 23:4a070960817a 1118 Thread::wait(330);
yfkwok 23:4a070960817a 1119 if(finished == true) {break;}
yfkwok 23:4a070960817a 1120 pad.tone(NOTE_E4,0.33/2);
yfkwok 23:4a070960817a 1121 wait(0.33/2);
yfkwok 23:4a070960817a 1122 pad.tone(NOTE_DS4,0.33);
yfkwok 23:4a070960817a 1123 Thread::wait(330);
yfkwok 23:4a070960817a 1124 if(finished == true) {break;}
yfkwok 23:4a070960817a 1125 pad.tone(NOTE_E4,0.33*1.5);
yfkwok 23:4a070960817a 1126 wait(0.33*1.5);
yfkwok 23:4a070960817a 1127 // bar 34
yfkwok 23:4a070960817a 1128 pad.tone(NOTE_DS4,0.33);
yfkwok 23:4a070960817a 1129 wait(0.33);
yfkwok 23:4a070960817a 1130 pad.tone(NOTE_E4,0.33);
yfkwok 23:4a070960817a 1131 Thread::wait(330);
yfkwok 23:4a070960817a 1132 if(finished == true) {break;}
yfkwok 23:4a070960817a 1133 pad.tone(NOTE_CS4,0.33/2);
yfkwok 23:4a070960817a 1134 wait(0.33/2);
yfkwok 23:4a070960817a 1135 pad.tone(NOTE_DS4,0.33*1.5);
yfkwok 23:4a070960817a 1136 wait(0.33*1.5);
yfkwok 23:4a070960817a 1137 pad.tone(NOTE_FS4,0.33);
yfkwok 23:4a070960817a 1138 Thread::wait(330);
yfkwok 23:4a070960817a 1139 if(finished == true) {break;}
yfkwok 23:4a070960817a 1140 pad.tone(NOTE_A4,0.33/2);
yfkwok 23:4a070960817a 1141 wait(0.33/2);
yfkwok 23:4a070960817a 1142 pad.tone(NOTE_GS4,0.33);
yfkwok 23:4a070960817a 1143 Thread::wait(330);
yfkwok 23:4a070960817a 1144 if(finished == true) {break;}
yfkwok 23:4a070960817a 1145 pad.tone(NOTE_G4,0.33*1.5);
yfkwok 23:4a070960817a 1146 wait(0.33/2);
yfkwok 23:4a070960817a 1147 pad.tone(NOTE_B4,0.33/4);
yfkwok 23:4a070960817a 1148 wait(0.33/4);
yfkwok 23:4a070960817a 1149 pad.tone(NOTE_DS5,0.33/4);
yfkwok 23:4a070960817a 1150 wait(0.33/4);
yfkwok 23:4a070960817a 1151 pad.tone(NOTE_FS5,0.33/4);
yfkwok 23:4a070960817a 1152 wait(0.33/4);
yfkwok 23:4a070960817a 1153 pad.tone(NOTE_AS5,0.33/4);
yfkwok 23:4a070960817a 1154 Thread::wait(330/4);
yfkwok 23:4a070960817a 1155 if(finished == true) {break;}
yfkwok 23:4a070960817a 1156 // bar 36
yfkwok 23:4a070960817a 1157 pad.tone(NOTE_B5,0.33*4);
yfkwok 23:4a070960817a 1158 wait(0.33);
yfkwok 23:4a070960817a 1159 pad.tone(NOTE_E4,0.33);
yfkwok 23:4a070960817a 1160 Thread::wait(330);
yfkwok 23:4a070960817a 1161 if(finished == true) {break;}
yfkwok 23:4a070960817a 1162 pad.tone(NOTE_CS4,0.33/2);
yfkwok 23:4a070960817a 1163 wait(0.33/2);
yfkwok 23:4a070960817a 1164 pad.tone(NOTE_DS4,0.33*1.5);
yfkwok 23:4a070960817a 1165 wait(0.33*1.5);
yfkwok 23:4a070960817a 1166 pad.tone(NOTE_FS5,0.33);
yfkwok 23:4a070960817a 1167 Thread::wait(330);
yfkwok 23:4a070960817a 1168 if(finished == true) {break;}
yfkwok 23:4a070960817a 1169 pad.tone(NOTE_DS4,0.33/2);
yfkwok 23:4a070960817a 1170 wait(0.33/2);
yfkwok 23:4a070960817a 1171 pad.tone(NOTE_CS4,0.33);
yfkwok 23:4a070960817a 1172 Thread::wait(330);
yfkwok 23:4a070960817a 1173 if(finished == true) {break;}
yfkwok 23:4a070960817a 1174 pad.tone(NOTE_C4,0.33*1.5);
yfkwok 23:4a070960817a 1175 wait(0.33*1.5);
yfkwok 23:4a070960817a 1176 // bar 38
yfkwok 23:4a070960817a 1177 pad.tone(NOTE_A5,0.33*4);
yfkwok 23:4a070960817a 1178 wait(0.33);
yfkwok 23:4a070960817a 1179 pad.tone(NOTE_E4,0.33);
yfkwok 23:4a070960817a 1180 Thread::wait(330);
yfkwok 23:4a070960817a 1181 if(finished == true) {break;}
yfkwok 23:4a070960817a 1182 pad.tone(NOTE_CS4,0.33/2);
yfkwok 23:4a070960817a 1183 wait(0.33/2);
yfkwok 23:4a070960817a 1184 pad.tone(NOTE_DS4,0.33*1.5);
yfkwok 23:4a070960817a 1185 wait(0.33*1.5);
yfkwok 23:4a070960817a 1186 pad.tone(NOTE_CS6,0.33);
yfkwok 23:4a070960817a 1187 Thread::wait(330);
yfkwok 23:4a070960817a 1188 if(finished == true) {break;}
yfkwok 23:4a070960817a 1189 pad.tone(NOTE_A4,0.33/2);
yfkwok 23:4a070960817a 1190 wait(0.33/2);
yfkwok 23:4a070960817a 1191 pad.tone(NOTE_GS4,0.33);
yfkwok 23:4a070960817a 1192 Thread::wait(330);
yfkwok 23:4a070960817a 1193 if(finished == true) {break;}
yfkwok 23:4a070960817a 1194 pad.tone(NOTE_A5,0.33*1.5);
yfkwok 23:4a070960817a 1195 wait(0.33*1.5);
yfkwok 23:4a070960817a 1196 }
yfkwok 1:61b67654ffb7 1197 }