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
Score/Score.cpp
- Committer:
- yfkwok
- Date:
- 2019-05-08
- Revision:
- 32:58def659f463
- Parent:
- 31:0d2c19a285f6
- Child:
- 34:3ddfaa217eca
File content as of revision 32:58def659f463:
#include "Score.h" Score::Score() { } Score::~Score() { } // Background music played during main title screen, music originally from Pokemon (R/B/Y) title screen. void Score::title_music(Gamepad &pad) { while(1){ pad.tone(NOTE_G3,0.1); wait(0.1); pad.tone(NOTE_B3,0.1); wait(0.1); pad.tone(NOTE_D4,0.1); wait(0.1); pad.tone(NOTE_FS4,0.1); wait(0.1); // Note: to break out of the looping of the title music if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G4,0.4); wait(0.4); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G4,0.4); wait(0.4); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} wait(0.2); pad.tone(NOTE_G4,0.1); wait(0.1); pad.tone(NOTE_G4,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G4,0.4); wait(0.4); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G4,0.4); wait(0.4); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G4,0.4); wait(0.4); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F4,0.4/3); wait(0.4/3); pad.tone(NOTE_F4,0.4/3); wait(0.4/3); pad.tone(NOTE_F4,0.4/3); wait(0.4/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F4,0.4/3); wait(0.4/3); pad.tone(NOTE_F4,0.4/3); wait(0.4/3); pad.tone(NOTE_FS4,0.4/3); wait(0.4/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} // Looping the section of the music infinitely until START_button is pressed while(1){ // bar 4 pad.tone(NOTE_G4,0.6); wait(0.6); pad.tone(NOTE_B4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C4,0.6); wait(0.6); pad.tone(NOTE_F4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F5,0.6); wait(0.6); pad.tone(NOTE_E5,0.1); wait(0.1); pad.tone(NOTE_DS5,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} // bar 6 pad.tone(NOTE_D5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F4,0.6); wait(0.6); pad.tone(NOTE_E4,0.1); wait(0.1); pad.tone(NOTE_DS4,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D4,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C4,0.8/3); wait(0.8/3); pad.tone(NOTE_B3,0.8/3); wait(0.8/3); pad.tone(NOTE_C4,0.8/3); wait(0.8/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G4,0.6); wait(0.6); pad.tone(NOTE_B4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C4,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C5,0.8/3); wait(0.8/3); pad.tone(NOTE_B4,0.8/3); wait(0.8/3); pad.tone(NOTE_C5,0.8/3); wait(0.8/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F4,0.8/3); wait(0.8/3); pad.tone(NOTE_E4,0.8/3); wait(0.8/3); pad.tone(NOTE_C4,0.8/3); wait(0.8/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D4,1.0); wait(1.0); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_B3,0.2); wait(0.2); pad.tone(NOTE_C4,0.2); wait(0.2); pad.tone(NOTE_D4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} //bar 12 pad.tone(NOTE_G4,0.6); wait(0.6); pad.tone(NOTE_B4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C4,0.6); wait(0.6); pad.tone(NOTE_F4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F5,0.6); wait(0.6); pad.tone(NOTE_E5,0.1); wait(0.1); pad.tone(NOTE_DS5,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F4,0.6); wait(0.6); pad.tone(NOTE_E4,0.1); wait(0.1); pad.tone(NOTE_DS4,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D4,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C4,0.8/3); wait(0.8/3); pad.tone(NOTE_B3,0.8/3); wait(0.8/3); pad.tone(NOTE_C4,0.8/3); wait(0.8/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G4,0.6); wait(0.6); pad.tone(NOTE_B4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} // bar 17 pad.tone(NOTE_C4,0.6); wait(0.6); pad.tone(NOTE_C4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F5,0.8/3); wait(0.8/3); pad.tone(NOTE_E5,0.8/3); wait(0.8/3); pad.tone(NOTE_F5,0.8/3); wait(0.8/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G5,0.6); wait(0.6); pad.tone(NOTE_AS5,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G5,0.6); wait(0.6); pad.tone(NOTE_A4,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_A5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_AS5,0.6); wait(0.6); pad.tone(NOTE_F5,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_F5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_AS5,0.4); wait(0.4); pad.tone(NOTE_B5,0.4); wait(0.4); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C6,0.6); wait(0.6); pad.tone(NOTE_G5,0.2); wait(0.2); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_G5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} // bar 23 pad.tone(NOTE_G5,0.8); wait(0.8); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C6,0.4); wait(0.4); pad.tone(NOTE_CS6,0.4); wait(0.4); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D6,0.3); wait(0.3); pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D5,0.1); wait(0.1); pad.tone(NOTE_C6,0.8/3); wait(0.8/3); pad.tone(NOTE_C6,0.8/3); wait(0.8/3); pad.tone(NOTE_CS6,0.8/3); wait(0.8/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_D6,0.3); wait(0.3); pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); pad.tone(NOTE_D5,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} wait(0.3); pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); pad.tone(NOTE_D5,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} wait(0.3); pad.tone(NOTE_D5,0.1); wait(0.1); wait(0.3); pad.tone(NOTE_D5,0.1); wait(0.1); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} pad.tone(NOTE_C6,0.8/3); wait(0.8/3); pad.tone(NOTE_C6,0.8/3); wait(0.8/3); pad.tone(NOTE_B5,0.8/3); wait(0.8/3); if(pad.check_event(Gamepad::START_PRESSED) == true){break;} } break; } } // Level up sound effect for when player progress to next year or next term, music originally from Pokemon (R/B/Y) when pokemon levels up. void Score::level_up(Gamepad &pad) { pad.tone(NOTE_E5,0.12); wait(0.15); pad.tone(NOTE_E5,0.12); wait(0.15); pad.tone(NOTE_E5,0.12); wait(0.15); pad.tone(NOTE_B5,0.45); wait(0.45); } // Congratulation music for when player select its starter or when the starter evolves, music originally from Pokemon (R/B/Y) when pokemon evovlved. void Score::congrats(Gamepad &pad) { pad.tone(NOTE_A5,0.35); wait(0.35); pad.tone(NOTE_F5,0.35); wait(0.35); pad.tone(NOTE_C5,0.7); wait(0.7); pad.tone(NOTE_AS5,0.35/3); wait(0.35/3); pad.tone(NOTE_AS5,0.35/3); wait(0.35/3); pad.tone(NOTE_AS5,0.35/3); wait(0.35/3); pad.tone(NOTE_G5,0.35/3); wait(0.35/3); pad.tone(NOTE_G5,0.35/3); wait(0.35/3); pad.tone(NOTE_AS5,0.35/3); wait(0.35/3); pad.tone(NOTE_A5,0.7); wait(0.7); } // Coin sound effect for different games void Score::coin(Gamepad &pad) { pad.tone(NOTE_B5,0.1); wait(0.1); pad.tone(NOTE_E6,0.4); } // Evolution music and animation which will be played for the chosen pokemon when the enter a new year, music originally from Pokemon (R/B/Y) when pokemon evolves. void Score::evolution_music(Gamepad &pad, N5110 &lcd, int cha, int year) { //Initiate position for name titles int x = 84; int y = 12; // bar 1 draw(lcd, cha, year, x, y); pad.tone(NOTE_G5,0.5/4); wait(0.5/4); pad.tone(NOTE_D5,0.5/4); wait(0.5/4); pad.tone(NOTE_G5,0.5/4); wait(0.5/4); pad.tone(NOTE_D5,0.5/4); wait(0.5/4); wait(1.5); // bar 2 pad.tone(NOTE_G4,0.5/2); wait(0.5); lcd.clear(); lcd.refresh(); pad.tone(NOTE_G4,0.5/2); wait(0.25); draw(lcd, cha, year, x, y);; wait(0.25); pad.tone(NOTE_G4,0.5/2); wait(0.25); lcd.clear(); lcd.refresh(); wait(0.25); pad.tone(NOTE_G4,0.5/2); wait(0.5); draw(lcd, cha, year, x, y); pad.tone(NOTE_G4,0.5/2); wait(0.25); lcd.clear(); lcd.refresh(); wait(0.25); pad.tone(NOTE_G4,0.5/2); wait(0.25); draw(lcd, cha, year, x, y); wait(0.25); pad.tone(NOTE_G4,0.5/2); wait(0.5); lcd.clear(); lcd.refresh(); pad.tone(NOTE_A4,0.5); wait(0.5); // bar 4 draw(lcd, cha, year, x, y); pad.tone(NOTE_G4,0.5/2); wait(0.5); lcd.clear(); lcd.refresh(); pad.tone(NOTE_G4,0.5/2); wait(0.5); draw(lcd, cha, year, x, y); pad.tone(NOTE_G4,0.5/2); wait(0.5); lcd.clear(); lcd.refresh(); pad.tone(NOTE_G4,0.5/2); wait(0.5); draw(lcd, cha, year, x, y); pad.tone(NOTE_G4,0.5/2); wait(0.25); lcd.clear(); lcd.refresh(); wait(0.25); draw(lcd, cha, year, x, y); pad.tone(NOTE_G4,0.5/2); wait(0.25); lcd.clear(); lcd.refresh(); wait(0.25); draw(lcd, cha, year, x, y); pad.tone(NOTE_G4,0.5/2); wait(0.25); lcd.clear(); lcd.refresh(); wait(0.25); draw(lcd, cha, year, x, y); pad.tone(NOTE_B4,0.5); wait(0.25); lcd.clear(); lcd.refresh(); wait(0.25); // Define motion of name title for final evolution, activate when year = year + 1 = 3. Update lcd screen at 10 frames per sec. year = year + 1; if(year == 3){ while(x > -170){ draw(lcd, cha, year, x, y);; x = x - 10; wait(0.10); } } // Decrease parameter (year) to draw the corresponding evolution sprite year = year - 1; congrats(pad, lcd, cha, year); } // Music to congratulate player the pokemon has succesfully evolved. Draw the pokemon sprite according to the selection made. void Score::congrats(Gamepad &pad, N5110 &lcd, int cha, int year) { // Draw the corresponding evolution depending on the year (year) and character selected (cha) draw_cong(lcd, cha, year); // bar 1 pad.tone(NOTE_A5,0.4); wait(0.4); pad.tone(NOTE_F5,0.4); wait(0.4); pad.tone(NOTE_C5,0.8); wait(0.8); // bar 2 pad.tone(NOTE_AS5,0.4/3); wait(0.4/3); pad.tone(NOTE_AS5,0.4/3); wait(0.4/3); pad.tone(NOTE_AS5,0.4/3); wait(0.4/3); pad.tone(NOTE_G5,0.4/3); wait(0.4/3); pad.tone(NOTE_G5,0.4/3); wait(0.4/3); pad.tone(NOTE_AS5,0.4/3); wait(0.4/3); pad.tone(NOTE_A5,0.8); wait(0.8); } // Draw function used to create the animation for the evolution while the music is being played void Score::draw(N5110 &lcd, int cha, int year, int x, int y) { // Draw sprite of selected character, call functions from Characters folder, then draw the corresponding sprite depending on which year the game is in. lcd.clear(); if(year == 1 && cha == 1) {_s1.evo_1_sprite(lcd, 23, 9);} else if(year == 1 && cha == 2) {_c1.evo_1_sprite(lcd, 23, 7);} else if(year == 1 && cha == 0) {_b1.evo_1_sprite(lcd, 27, 14);} else if(year == 2 && cha == 1) {_s1.evo_2_sprite(lcd, 20, 2);} else if(year == 2 && cha == 2) {_c1.evo_2_sprite(lcd, 17, 2);} else if(year == 2 && cha == 0) {_b1.evo_2_sprite(lcd, 14, 1);} else if(year == 3 && cha == 1) {_s1.evo_3_sprite(lcd, x, y);} else if(year == 3 && cha == 2) {_c1.evo_3_sprite(lcd, x, y);} else if(year == 3 && cha == 0) {_b1.evo_3_sprite(lcd, x, y);} lcd.refresh(); } void Score::draw_cong(N5110 &lcd, int cha, int year) { // Draw sprite of selected character after evolution, call functions from Characters folder, then draw the corresponding sprite depending on which year the game is in. lcd.clear(); if(year == 0 && cha == 1) {_s1.evo_1_cong(lcd);} else if(year == 0 && cha == 2) {_c1.evo_1_cong(lcd);} else if(year == 0 && cha == 0) {_b1.evo_1_cong(lcd);} else if(year == 1 && cha == 1) {_s1.evo_2_cong(lcd);} else if(year == 1 && cha == 2) {_c1.evo_2_cong(lcd);} else if(year == 1 && cha == 0) {_b1.evo_2_cong(lcd);} else if(year == 2 && cha == 1) {_s1.evo_3_cong(lcd);} else if(year == 2 && cha == 2) {_c1.evo_3_cong(lcd);} else if(year == 2 && cha == 0) {_b1.evo_3_cong(lcd);} lcd.refresh(); } // Music that plays when the player wins the mini game or passes the exam, music originally from Pokemon (R/B/Y) when player wins trainer battle void Score::win(Gamepad &pad) { // bar 1 pad.tone(NOTE_E5,0.33/4); wait(0.33/4); pad.tone(NOTE_FS5,0.33/4); wait(0.33/4); pad.tone(NOTE_GS5,0.33/4); wait(0.33/4); pad.tone(NOTE_A5,0.33/4); wait(0.33/4); pad.tone(NOTE_B5,0.33*3); wait(0.33*3); // bar 2 pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_A4,0.25/2); wait(0.33/2); pad.tone(NOTE_GS4,0.25/2); wait(0.33/2); pad.tone(NOTE_A4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25); wait(0.33); // bar 3 pad.tone(NOTE_CS5,0.25/2); wait(0.33/2); pad.tone(NOTE_CS5,0.25/2); wait(0.33/2); pad.tone(NOTE_CS5,0.25); wait(0.33); pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25); wait(0.33); // bar 4 pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_A4,0.25/2); wait(0.33/2); pad.tone(NOTE_GS4,0.25/2); wait(0.33/2); pad.tone(NOTE_A4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25/2); wait(0.33/2); pad.tone(NOTE_B4,0.25); wait(0.33); // bar 5 pad.tone(NOTE_CS5,0.25/2); wait(0.33/2); pad.tone(NOTE_CS5,0.25/2); wait(0.33/2); pad.tone(NOTE_CS5,0.25); wait(0.33); pad.tone(NOTE_B4,0.25); wait(0.6); } // Introduction music to the EXAM page, music originally from Pokemon (R/B/Y) when player starts the battle with GYM leader. void Score::exam_intro(Gamepad &pad) { // bar 1 pad.tone(NOTE_F5,0.33/4); wait(0.33/4); pad.tone(NOTE_E5,0.33/4); wait(0.33/4); pad.tone(NOTE_DS5,0.33/4); wait(0.33/4); pad.tone(NOTE_E5,0.33/4); wait(0.33/4); pad.tone(NOTE_DS5,0.33/4); wait(0.33/4); pad.tone(NOTE_D5,0.33/4); wait(0.33/4); pad.tone(NOTE_DS5,0.33/4); wait(0.33/4); pad.tone(NOTE_D5,0.33/4); wait(0.33/4); pad.tone(NOTE_CS5,0.33/4); wait(0.33/4); pad.tone(NOTE_D5,0.33/4); wait(0.33/4); pad.tone(NOTE_CS5,0.33/4); wait(0.33/4); pad.tone(NOTE_C5,0.33/4); wait(0.33/4); pad.tone(NOTE_E4,0.33/4); wait(0.33/4); pad.tone(NOTE_DS4,0.33/4); wait(0.33/4); pad.tone(NOTE_D4,0.33/4); wait(0.33/4); pad.tone(NOTE_DS4,0.33/4); wait(0.33/4); // bar 2 pad.tone(NOTE_D4,0.33/4); wait(0.33/4); pad.tone(NOTE_C4,0.33/4); wait(0.33/4); pad.tone(NOTE_FS4,0.33/4); wait(0.33/4); pad.tone(NOTE_F4,0.33/4); wait(0.33/4); pad.tone(NOTE_E4,0.33/4); wait(0.33/4); pad.tone(NOTE_F4,0.33/4); wait(0.33/4); pad.tone(NOTE_E4,0.33/4); wait(0.33/4); pad.tone(NOTE_DS4,0.33/4); wait(0.33/4); pad.tone(NOTE_E4,0.33/4); wait(0.33/4); pad.tone(NOTE_DS4,0.33/4); wait(0.33/4); pad.tone(NOTE_D4,0.33/4); wait(0.33/4); pad.tone(NOTE_DS4,0.33/4); wait(0.33/4); pad.tone(NOTE_D4,0.33/4); wait(0.33/4); pad.tone(NOTE_C4,0.33/4); wait(0.33/4); pad.tone(NOTE_D4,0.33/4); wait(0.33/4); pad.tone(NOTE_C4,0.33/4); wait(0.33/4); } // Draw function to create the animation in Graduation, takes in the variable x to move the sprite across the screen void Score::draw_grad(N5110 &lcd, int cha, int year, int x) { // Draw sprite of selected character in graduation, call functions from Characters folder lcd.clear(); if(year == 1 && cha == 1) {_s1.evo_1_sprite(lcd, x, 9);} else if(year == 1 && cha == 2) {_c1.evo_1_sprite(lcd, x, 7);} else if(year == 1 && cha == 0) {_b1.evo_1_sprite(lcd, x, 14);} else if(year == 2 && cha == 1) {_s1.evo_2_sprite(lcd, x, 2);} else if(year == 2 && cha == 2) {_c1.evo_2_sprite(lcd, x, 2);} else if(year == 2 && cha == 0) {_b1.evo_2_sprite(lcd, x, 1);} else if(year == 3 && cha == 1) {_s1.evo_3_cong(lcd);} else if(year == 3 && cha == 2) {_c1.evo_3_cong(lcd);} else if(year == 3 && cha == 0) {_b1.evo_3_cong(lcd);} lcd.refresh(); } // Function for graduation background music and animation, music originally from Pokemon (R/B/Y) background music of route 3 with a bit of edit to create an ending to the piece void Score::graduation(Gamepad &pad, N5110 &lcd, int cha) { // bar 1 lcd.clear(); lcd.printString("At Last...", 0, 2); lcd.printString("The Time Comes", 0, 3); lcd.refresh(); pad.tone(NOTE_G4,0.46/4); wait(0.46/4); pad.tone(NOTE_A4,0.46/4); wait(0.46/4); pad.tone(NOTE_B4,0.46*1.5); wait(0.46*1.5); pad.tone(NOTE_A4,0.46/4); wait(0.46/4); pad.tone(NOTE_B4,0.46/4); wait(0.46/4); // bar 2 draw_grad(lcd, cha, 1, 84); pad.tone(NOTE_C5,0.46/2); wait(0.46/2); pad.tone(NOTE_G3,0.46); wait(0.46/2); draw_grad(lcd, cha, 1, 74); wait(0.46/2); draw_grad(lcd, cha, 1, 64); pad.tone(NOTE_G3,0.46/4); wait(0.46/4); pad.tone(NOTE_G3,0.46/4); wait(0.46/4); draw_grad(lcd, cha, 1, 54); pad.tone(NOTE_G3,0.46/2); wait(0.46/2); draw_grad(lcd, cha, 1, 44); pad.tone(NOTE_G3,0.46/2); wait(0.46/2); draw_grad(lcd, cha, 1, 34); pad.tone(NOTE_G3,0.46); wait(0.46/2); draw_grad(lcd, cha, 1, 24); wait(0.46/2); // bar 3 pad.tone(NOTE_G3,0.46/2); wait(0.46/2); pad.tone(NOTE_G3,0.46); wait(0.46); pad.tone(NOTE_G3,0.46/4); wait(0.46/4); pad.tone(NOTE_G3,0.46/4); wait(0.46/4); pad.tone(NOTE_G3,0.46/2); wait(0.46/2); pad.tone(NOTE_G3,0.46/2); wait(0.46/2); pad.tone(NOTE_G3,0.46); wait(0.46); // bar 4 pad.tone(NOTE_C5,0.46*1.5); wait(0.46*1.5); pad.tone(NOTE_G4,0.46/4); wait(0.46/4); pad.tone(NOTE_C5,0.46/4); wait(0.46/4); pad.tone(NOTE_E5,0.46*2); wait(0.46*2); // bar 5 wait(0.46/2); pad.tone(NOTE_G4,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46/2); wait(0.46/2); pad.tone(NOTE_G5,0.46/2); wait(0.46/2); pad.tone(NOTE_F5,0.46/2); wait(0.46/2); pad.tone(NOTE_E5,0.46/2); wait(0.46/2); pad.tone(NOTE_D5,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46/2); wait(0.46/2); // bar 6 draw_grad(lcd, cha, 1, 14); pad.tone(NOTE_D5,0.46*2); wait(0.46/2); draw_grad(lcd, cha, 1, 4); wait(0.46/2); draw_grad(lcd, cha, 1, -6); wait(0.46/2); draw_grad(lcd, cha, 1, -16); wait(0.46/2); draw_grad(lcd, cha, 1, -26); pad.tone(NOTE_F5,0.46*2); wait(0.46/2); draw_grad(lcd, cha, 1, -36); wait(0.46/2); draw_grad(lcd, cha, 1, -46); wait(0.46/2); draw_grad(lcd, cha, 1, -56); wait(0.46/2); // bar 7 draw_grad(lcd, cha, 2, 84); pad.tone(NOTE_A4,0.46*2); wait(0.46/2); draw_grad(lcd, cha, 2, 74); wait(0.46/2); draw_grad(lcd, cha, 2, 64); wait(0.46/2); draw_grad(lcd, cha, 2, 54); wait(0.46/2); draw_grad(lcd, cha, 2, 44); pad.tone(NOTE_B4,0.46*2); wait(0.46/2); draw_grad(lcd, cha, 2, 34); wait(0.46/2); draw_grad(lcd, cha, 2, 24); wait(0.46/2); draw_grad(lcd, cha, 2, 17); wait(0.46/2); // bar 8 pad.tone(NOTE_C5,0.46*1.5); wait(0.46*1.5); pad.tone(NOTE_G4,0.46/4); wait(0.46/4); pad.tone(NOTE_C5,0.46/4); wait(0.46/4); pad.tone(NOTE_E5,0.46*2); wait(0.46*2); // bar 9 wait(0.46/2); pad.tone(NOTE_G4,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46/2); wait(0.46/2); pad.tone(NOTE_G5,0.46/2); wait(0.46/2); pad.tone(NOTE_F5,0.46/2); wait(0.46/2); pad.tone(NOTE_E5,0.46/2); wait(0.46/2); pad.tone(NOTE_D5,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46/2); wait(0.46/2); // bar 10 pad.tone(NOTE_D5,0.46*2); wait(0.46*2); pad.tone(NOTE_F5,0.46*2); wait(0.46*2); // bar 11 pad.tone(NOTE_B4,0.46*2); wait(0.46*2); pad.tone(NOTE_D5,0.46*1.5); wait(0.46*1.5); pad.tone(NOTE_C5,0.46/4); wait(0.46/4); pad.tone(NOTE_D5,0.46/4); wait(0.46/4); // bar 12 pad.tone(NOTE_E5,0.46/2); wait(0.46/2); draw_grad(lcd, cha, 2, 7); pad.tone(NOTE_D5,0.46/2); wait(0.46/2); draw_grad(lcd, cha, 2, -3); pad.tone(NOTE_E5,0.46/2); wait(0.46/2); draw_grad(lcd, cha, 2, -13); pad.tone(NOTE_C5,0.46*2); wait(0.46/2); draw_grad(lcd, cha, 2, -23); wait(0.46/2); draw_grad(lcd, cha, 2, -33); wait(0.46/2); draw_grad(lcd, cha, 2, -43); wait(0.46/2); draw_grad(lcd, cha, 2, -53); pad.tone(NOTE_B4,0.46/4); wait(0.46/4); pad.tone(NOTE_C5,0.46/4); wait(0.46/4); draw_grad(lcd, cha, 2, -63); // bar 13 pad.tone(NOTE_D5,0.46/2); wait(0.46/2); pad.tone(NOTE_G4,0.46); wait(0.46); pad.tone(NOTE_G5,0.46*2); wait(0.46*2); pad.tone(NOTE_F5,0.46/4); wait(0.46/4); pad.tone(NOTE_E5,0.46/4); wait(0.46/4); // bar 14 lcd.clear(); lcd.printString("After All The", 0, 2); lcd.printString("Challenges", 0, 3); lcd.refresh(); pad.tone(NOTE_F5,0.46*2/3); wait(0.46*2/3); pad.tone(NOTE_E5,0.46*2/3); wait(0.46*2/3); pad.tone(NOTE_C5,0.46*2/3); wait(0.46*2/3); pad.tone(NOTE_C5,0.46*2); wait(0.46*2); // bar 15 lcd.clear(); lcd.printString("The Journey", 0, 2); lcd.printString("Ends!", 0, 3); lcd.refresh(); pad.tone(NOTE_A4,0.46*2); wait(0.46*2); pad.tone(NOTE_B4,0.46*2); wait(0.46*2); // bar 16 draw_grad(lcd, cha, 3, 0); pad.tone(NOTE_E5,0.46/2); wait(0.46/2); pad.tone(NOTE_D5,0.46/2); wait(0.46/2); pad.tone(NOTE_E5,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46*2); wait(0.46*2); pad.tone(NOTE_B4,0.46/4); wait(0.46/4); pad.tone(NOTE_C5,0.46/4); wait(0.46/4); // bar 17 pad.tone(NOTE_D5,0.46/2); wait(0.46/2); pad.tone(NOTE_G4,0.46); wait(0.46); pad.tone(NOTE_G5,0.46*2); wait(0.46*2); pad.tone(NOTE_F5,0.46/4); wait(0.46/4); pad.tone(NOTE_E5,0.46/4); wait(0.46/4); // bar 18 pad.tone(NOTE_F5,0.46*2/3); wait(0.46*2/3); pad.tone(NOTE_E5,0.46*2/3); wait(0.46*2/3); pad.tone(NOTE_C5,0.46*2/3); wait(0.46*2/3); pad.tone(NOTE_C5,0.46*2); wait(0.46*2); // bar 19 lcd.clear(); lcd.printString("You Made It!", 0, 2); lcd.refresh(); pad.tone(NOTE_A4,0.46*1.5); wait(0.46*1.5); pad.tone(NOTE_G4,0.46/4); wait(0.46/4); pad.tone(NOTE_A4,0.46/4); wait(0.46/4); pad.tone(NOTE_B4,0.46); wait(0.46); pad.tone(NOTE_D5,0.46); wait(0.46); // bar 20 pad.tone(NOTE_C5,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46); wait(0.46); pad.tone(NOTE_C5,0.46/4); wait(0.46/4); pad.tone(NOTE_C5,0.46/4); wait(0.46/4); pad.tone(NOTE_C5,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46/2); wait(0.46/2); pad.tone(NOTE_C5,0.46); wait(0.46); }