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
Diff: main.cpp
- Revision:
- 23:4a070960817a
- Parent:
- 22:f8f36e88b2ca
- Child:
- 26:c60becf3f840
--- a/main.cpp Sun Apr 28 18:58:10 2019 +0000 +++ b/main.cpp Mon Apr 29 20:45:04 2019 +0000 @@ -17,6 +17,7 @@ #include "Game_two.h" #include "Exam.h" #include "FXOS8700CQ.h" +#include "rtos.h" /////////////// objects /////////////// N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); // K64F - pwr from 3V3 @@ -26,6 +27,7 @@ Game_one game_1; Game_two game_2; Exam test; +Thread thread; // I2C connection for FXOS8700CQ accelerometer/magnetometer FXOS8700CQ device(I2C_SDA,I2C_SCL); // PTE25/PTE24 @@ -47,6 +49,7 @@ void lose(); void passed(); void failed(); +void gym(); //Starting states enum StartStates { @@ -74,6 +77,7 @@ int select = 0; int year = 0; int pass = 0; +volatile bool finished = false; ///////////// functions //////////////// int main(){ @@ -257,10 +261,14 @@ // Game loop for EXAM case EXAM: + finished = false; test.exam_title(pad, lcd); - if(year == 0) {pass = test.exam_q_one(pad, lcd, score);} - else if(year == 1) {pass = test.exam_q_two(pad, lcd, score);} - else if(year == 2) {pass = test.exam_q_three(pad, lcd, score);} + thread.start(gym); + if(year == 0) {pass = test.exam_q_one(pad, lcd, score); finished = true;} + else if(year == 1) {pass = test.exam_q_two(pad, lcd, score); finished = true;} + else if(year == 2) {pass = test.exam_q_three(pad, lcd, score); finished = true;} + Thread::wait(1000); + thread.join(); if(pass >= 2){ passed(); music.win(pad); @@ -968,4 +976,575 @@ lcd.clear(); lcd.drawSprite(4, 19, 10, 77, (int *)instruct_data); lcd.refresh(); +} + +void gym() +{ + // bar 1 + pad.tone(NOTE_B4,0.33/2); + Thread::wait(330/2); + if (finished == true) {return;} + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_C5,0.33*1.5); + wait(0.33*1.5); + // bar 3 + pad.tone(NOTE_B4,0.33/2); + Thread::wait(330/2); + if (finished == true) {return;} + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_AS4,0.33*1.5); + wait(0.33*1.5); + // bar 5 + pad.tone(NOTE_B4,0.33/2); + Thread::wait(330/2); + if (finished == true) {return;} + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_C5,0.33*1.5); + wait(0.33*1.5); + // bar 7 + pad.tone(NOTE_B4,0.33/2); + Thread::wait(330/2); + if (finished == true) {return;} + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if (finished == true) {return;} + pad.tone(NOTE_CS5,0.33*1.5); + wait(0.33*1.5); + + // Loop while state is true + while(!finished){ + // bar 8 + pad.tone(NOTE_DS5,0.33); + wait(0.33); + pad.tone(NOTE_CS5,0.33); + wait(0.33); + pad.tone(NOTE_DS5,0.33); + wait(0.33); + pad.tone(NOTE_E5,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_FS5,0.33); + wait(0.33); + pad.tone(NOTE_E5,0.33); + wait(0.33); + pad.tone(NOTE_DS5,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_CS5,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_CS5,0.33/2); + wait(0.33/2); + pad.tone(NOTE_DS5,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + // bar 10 + pad.tone(NOTE_A4,0.33*2); + wait(0.33*2); + pad.tone(NOTE_CS5,0.33*2); + Thread::wait(330*2); + if(finished == true) {break;} + pad.tone(NOTE_E5,0.33*2); + wait(0.33*2); + pad.tone(NOTE_CS5,0.33*2); + Thread::wait(330*2); + if(finished == true) {break;} + // bar 8 + pad.tone(NOTE_DS5,0.33); + wait(0.33); + pad.tone(NOTE_CS5,0.33); + wait(0.33); + pad.tone(NOTE_DS5,0.33); + wait(0.33); + pad.tone(NOTE_E5,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_FS5,0.33); + wait(0.33); + pad.tone(NOTE_E5,0.33); + wait(0.33); + pad.tone(NOTE_DS5,0.33/2); + wait(0.33/2); + pad.tone(NOTE_CS5,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_CS5,0.33/2); + wait(0.33/2); + pad.tone(NOTE_DS5,0.33/2); + wait(0.33/2); + // bar 12 + pad.tone(NOTE_CS5,0.33*2); + wait(0.33*2); + pad.tone(NOTE_B4,0.33*2); + Thread::wait(330*2); + if(finished == true) {break;} + pad.tone(NOTE_A4,0.33*2); + wait(0.33*2); + pad.tone(NOTE_E5,0.33); + wait(0.33); + pad.tone(NOTE_E5,0.33/2); + wait(0.33/2); + pad.tone(NOTE_CS5,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + // bar 14 + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_D4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_CS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_D4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_E4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_D4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_E4,0.33/4); + wait(0.33/4); + // bar 15 + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_FS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_E4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_CS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_FS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_E4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_CS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_E4,0.25/2); + Thread::wait(250/2); + if(finished == true) {break;} + pad.tone(NOTE_F4,0.25/2); + wait(0.33/2); + // bar 16 + pad.tone(NOTE_D4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_CS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_D4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_E4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_D4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_E4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + // bar 17 + pad.tone(NOTE_FS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_E4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_CS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_FS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_E4,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_CS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_D4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_CS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_E4,0.33/2); + wait(0.33/2); + // bar 18 + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_C5,0.33); + wait(0.33); + pad.tone(NOTE_A4,0.33); + wait(0.33); + pad.tone(NOTE_B4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_C5,0.33); + wait(0.33); + pad.tone(NOTE_A4,0.33); + wait(0.33); + pad.tone(NOTE_G4,0.33); + Thread::wait(330); + if(finished == true) {break;} + // bar 19 + pad.tone(NOTE_FS4,0.33*4); + wait(0.33); + pad.tone(NOTE_C4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_A3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + Thread::wait(330/4); + if(finished == true) {break;} + pad.tone(NOTE_C4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_A3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_C4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + Thread::wait(330/4); + if(finished == true) {break;} + pad.tone(NOTE_A3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + wait(0.33/4); + // bar 20 + pad.tone(NOTE_C4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_CS4,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); + Thread::wait(330/4); + if(finished == true) {break;} + 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_CS4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_C4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + Thread::wait(330/4); + if(finished == true) {break;} + pad.tone(NOTE_AS3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_A3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_GS3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_G3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_FS3,0.33/4); + Thread::wait(330/4); + if(finished == true) {break;} + pad.tone(NOTE_G3,0.33/4); + wait(0.33/4); + // bar 22 + pad.tone(NOTE_GS3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_A3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_AS3,0.33/4); + wait(0.33/4); + pad.tone(NOTE_B3,0.33/4); + Thread::wait(330/4); + if(finished == true) {break;} + pad.tone(NOTE_B4,0.33); + wait(0.33); + pad.tone(NOTE_C5,0.33); + wait(0.33); + pad.tone(NOTE_A4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_B4,0.33); + wait(0.33); + pad.tone(NOTE_C5,0.33); + wait(0.33); + pad.tone(NOTE_A4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_C5,0.33); + wait(0.33); + pad.tone(NOTE_B4,0.33*4); + wait(0.33*4); + pad.tone(NOTE_FS5,0.33*4); + Thread::wait(330*4); + if(finished == true) {break;} + // bar 26 + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_A4,0.33*3); + wait(0.33*3); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_CS5,0.33*3); + wait(0.33*3); + pad.tone(NOTE_DS4,0.33); + wait(0.33); + pad.tone(NOTE_CS4,0.33); + wait(0.33); + pad.tone(NOTE_DS4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_E4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_CS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_DS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_FS4,0.33/2); + wait(0.33/2); + // bar 30 + pad.tone(NOTE_B3,0.33/2); + wait(0.33/2); + pad.tone(NOTE_B3,0.33/2); + Thread::wait(330/2); + if(finished == true) {break;} + pad.tone(NOTE_CS5,0.33*3); + wait(0.33*3); + pad.tone(NOTE_A5,0.33*2); + Thread::wait(330*2); + if(finished == true) {break;} + pad.tone(NOTE_E5,0.33*2); + wait(0.33*2); + // bar 32 + pad.tone(NOTE_B5,0.33*4); + wait(0.33); + pad.tone(NOTE_E4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_CS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_DS4,0.33*1.5); + wait(0.33*1.5); + pad.tone(NOTE_FS4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_E4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_DS4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_E4,0.33*1.5); + wait(0.33*1.5); + // bar 34 + pad.tone(NOTE_DS4,0.33); + wait(0.33); + pad.tone(NOTE_E4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_CS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_DS4,0.33*1.5); + wait(0.33*1.5); + pad.tone(NOTE_FS4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_A4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_GS4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_G4,0.33*1.5); + wait(0.33/2); + pad.tone(NOTE_B4,0.33/4); + wait(0.33/4); + pad.tone(NOTE_DS5,0.33/4); + wait(0.33/4); + pad.tone(NOTE_FS5,0.33/4); + wait(0.33/4); + pad.tone(NOTE_AS5,0.33/4); + Thread::wait(330/4); + if(finished == true) {break;} + // bar 36 + pad.tone(NOTE_B5,0.33*4); + wait(0.33); + pad.tone(NOTE_E4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_CS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_DS4,0.33*1.5); + wait(0.33*1.5); + pad.tone(NOTE_FS5,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_DS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_CS4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_C4,0.33*1.5); + wait(0.33*1.5); + // bar 38 + pad.tone(NOTE_A5,0.33*4); + wait(0.33); + pad.tone(NOTE_E4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_CS4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_DS4,0.33*1.5); + wait(0.33*1.5); + pad.tone(NOTE_CS6,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_A4,0.33/2); + wait(0.33/2); + pad.tone(NOTE_GS4,0.33); + Thread::wait(330); + if(finished == true) {break;} + pad.tone(NOTE_A5,0.33*1.5); + wait(0.33*1.5); + } } \ No newline at end of file