4180 Project Master Code
Dependencies: mbed 4DGL-uLCD-SE
main.cpp@0:65ed62dbfeee, 2019-04-23 (annotated)
- Committer:
- jroy32
- Date:
- Tue Apr 23 18:51:38 2019 +0000
- Revision:
- 0:65ed62dbfeee
master
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jroy32 | 0:65ed62dbfeee | 1 | #include "mbed.h" |
jroy32 | 0:65ed62dbfeee | 2 | #include "uLCD_4DGL.h" |
jroy32 | 0:65ed62dbfeee | 3 | #include "questions.h" |
jroy32 | 0:65ed62dbfeee | 4 | |
jroy32 | 0:65ed62dbfeee | 5 | DigitalOut myled1(LED1); // leds for debugging |
jroy32 | 0:65ed62dbfeee | 6 | DigitalOut myled2(LED2); |
jroy32 | 0:65ed62dbfeee | 7 | DigitalOut myled3(LED3); |
jroy32 | 0:65ed62dbfeee | 8 | DigitalOut myled4(LED4); |
jroy32 | 0:65ed62dbfeee | 9 | |
jroy32 | 0:65ed62dbfeee | 10 | DigitalOut lidar_enable(p29); //to determine when lidar should operate |
jroy32 | 0:65ed62dbfeee | 11 | |
jroy32 | 0:65ed62dbfeee | 12 | DigitalIn p1_enable(p23); // data from player 1 |
jroy32 | 0:65ed62dbfeee | 13 | BusIn p1_ans(p22, p21); |
jroy32 | 0:65ed62dbfeee | 14 | |
jroy32 | 0:65ed62dbfeee | 15 | DigitalIn p2_enable(p18); // data from player 2 |
jroy32 | 0:65ed62dbfeee | 16 | BusIn p2_ans(p19, p20); |
jroy32 | 0:65ed62dbfeee | 17 | |
jroy32 | 0:65ed62dbfeee | 18 | uLCD_4DGL uLCD(p13, p14, p12); |
jroy32 | 0:65ed62dbfeee | 19 | |
jroy32 | 0:65ed62dbfeee | 20 | Serial pc(USBTX,USBRX); // for teraterm debugging |
jroy32 | 0:65ed62dbfeee | 21 | |
jroy32 | 0:65ed62dbfeee | 22 | PwmOut speaker(p26); |
jroy32 | 0:65ed62dbfeee | 23 | |
jroy32 | 0:65ed62dbfeee | 24 | int msg; |
jroy32 | 0:65ed62dbfeee | 25 | int msg2; |
jroy32 | 0:65ed62dbfeee | 26 | int questionIndex = 0; |
jroy32 | 0:65ed62dbfeee | 27 | string *p; |
jroy32 | 0:65ed62dbfeee | 28 | int player = 0; |
jroy32 | 0:65ed62dbfeee | 29 | |
jroy32 | 0:65ed62dbfeee | 30 | int player1Score = 0; |
jroy32 | 0:65ed62dbfeee | 31 | int player2Score = 0; |
jroy32 | 0:65ed62dbfeee | 32 | |
jroy32 | 0:65ed62dbfeee | 33 | int p1Val = 0; |
jroy32 | 0:65ed62dbfeee | 34 | int p2Val = 0; |
jroy32 | 0:65ed62dbfeee | 35 | |
jroy32 | 0:65ed62dbfeee | 36 | questions arr[30]; |
jroy32 | 0:65ed62dbfeee | 37 | |
jroy32 | 0:65ed62dbfeee | 38 | // Light |
jroy32 | 0:65ed62dbfeee | 39 | class RGBLed |
jroy32 | 0:65ed62dbfeee | 40 | { |
jroy32 | 0:65ed62dbfeee | 41 | public: |
jroy32 | 0:65ed62dbfeee | 42 | RGBLed(PinName redpin, PinName greenpin)://, PinName bluepin); |
jroy32 | 0:65ed62dbfeee | 43 | _redpin(redpin), _greenpin(greenpin) //, _bluepin(bluepin) |
jroy32 | 0:65ed62dbfeee | 44 | { |
jroy32 | 0:65ed62dbfeee | 45 | //50Hz PWM clock default a bit too low, go to 2000Hz (less flicker) |
jroy32 | 0:65ed62dbfeee | 46 | _redpin.period(0.0005); |
jroy32 | 0:65ed62dbfeee | 47 | } |
jroy32 | 0:65ed62dbfeee | 48 | |
jroy32 | 0:65ed62dbfeee | 49 | void write(float red,float green)//, float blue); |
jroy32 | 0:65ed62dbfeee | 50 | { |
jroy32 | 0:65ed62dbfeee | 51 | _redpin = red; |
jroy32 | 0:65ed62dbfeee | 52 | _greenpin = green; |
jroy32 | 0:65ed62dbfeee | 53 | // _bluepin = blue; |
jroy32 | 0:65ed62dbfeee | 54 | } |
jroy32 | 0:65ed62dbfeee | 55 | private: |
jroy32 | 0:65ed62dbfeee | 56 | PwmOut _redpin; |
jroy32 | 0:65ed62dbfeee | 57 | PwmOut _greenpin; |
jroy32 | 0:65ed62dbfeee | 58 | // PwmOut _bluepin; |
jroy32 | 0:65ed62dbfeee | 59 | }; |
jroy32 | 0:65ed62dbfeee | 60 | |
jroy32 | 0:65ed62dbfeee | 61 | |
jroy32 | 0:65ed62dbfeee | 62 | //class could be moved to include file |
jroy32 | 0:65ed62dbfeee | 63 | |
jroy32 | 0:65ed62dbfeee | 64 | |
jroy32 | 0:65ed62dbfeee | 65 | //Setup RGB led using PWM pins and class |
jroy32 | 0:65ed62dbfeee | 66 | RGBLed myRGBled(p24,p25);//,p21); //RGB PWM pins |
jroy32 | 0:65ed62dbfeee | 67 | |
jroy32 | 0:65ed62dbfeee | 68 | void shuffleQuestions() |
jroy32 | 0:65ed62dbfeee | 69 | { |
jroy32 | 0:65ed62dbfeee | 70 | for (int i = 0; i < 90; i++) { |
jroy32 | 0:65ed62dbfeee | 71 | int rand1 = rand() % 30; |
jroy32 | 0:65ed62dbfeee | 72 | int rand2 = rand() % 30; |
jroy32 | 0:65ed62dbfeee | 73 | questions temp = arr[rand1]; |
jroy32 | 0:65ed62dbfeee | 74 | arr[rand1] = arr[rand2]; |
jroy32 | 0:65ed62dbfeee | 75 | arr[rand2] = temp; |
jroy32 | 0:65ed62dbfeee | 76 | } |
jroy32 | 0:65ed62dbfeee | 77 | } |
jroy32 | 0:65ed62dbfeee | 78 | |
jroy32 | 0:65ed62dbfeee | 79 | void addQuestions() |
jroy32 | 0:65ed62dbfeee | 80 | { |
jroy32 | 0:65ed62dbfeee | 81 | questions q1("Which of these\nchess figures is\nclosely related to'Bohemian\nRhapsody?\n","King","Queen","Pawn","Bishop","Queen"); |
jroy32 | 0:65ed62dbfeee | 82 | questions q2("What religion is\nthe most practicedone in India?\n","Sikhism","Islam","Hinduism","Shinto","Hinduism"); |
jroy32 | 0:65ed62dbfeee | 83 | questions q3("What is the name\nof the Jewish New\nYear?\n","Yom Kippur","Kwanzaa","Hanukkah","Rosh Hashanah","Rosh Hashanah"); |
jroy32 | 0:65ed62dbfeee | 84 | questions q4("What funk/soul\nband was Lionel\nRichie a member\nof?\n","Commodores","Amigas","Ataris","Spectrums","Commodores"); |
jroy32 | 0:65ed62dbfeee | 85 | questions q5("Which country\nhosted the Summer\nOlympics in 2016?\n","Greece","Brazil","China","Spain","Brazil"); |
jroy32 | 0:65ed62dbfeee | 86 | questions q6("Which of these\ncities is closest\nto London, UK?\n","Boston, MA","Miami, FL","Atlanta, GA","New York, NY","Boston, MA"); |
jroy32 | 0:65ed62dbfeee | 87 | questions q7("What did Alfred\nNobel Develop?\n","Atomic bomb","Nobelium","Gunpowder","Dynamite","Dynamite"); |
jroy32 | 0:65ed62dbfeee | 88 | questions q8("Which US Presidentis on the far leftof the Mount\nRushmore\nNational\nMemorial?\n","Theodore\n Roosevelt","Thomas\n Jefferson","George\n Washington","Abraham\n Lincoln","George\n Washington"); |
jroy32 | 0:65ed62dbfeee | 89 | questions q9("Which actress\nplays a major\nrole in the TV\nshow 'The Big\nBang Theory'\n","Portia de\n Rossi","Kaley Cuoco","Emily\n Deschanel","Sofia Vergara","Kaley Cuoco"); |
jroy32 | 0:65ed62dbfeee | 90 | questions q10("Which of these\nantagonist\ncharacters was\ncreated by\nnovelist J.K.\nRowling?\n","Professor\n Moriarty","Lord Voldemort","Darth Vader","Lord Farqaad","Lord Voldemort"); |
jroy32 | 0:65ed62dbfeee | 91 | questions q11("Which mammal firstreached Earth's\norbit alive?\n","Monkey","Human","Cat","Dog","Dog"); |
jroy32 | 0:65ed62dbfeee | 92 | questions q12("How many spaces\nare on a standard\nmonopoly board?\n","40","20","80","60","40"); |
jroy32 | 0:65ed62dbfeee | 93 | questions q13("Which actor does\nnot appear in\n'Saving Private\nRyan'?\n","Tom Hanks","Vin Diesel","Giovanni\n Ribisi","Ralph Fiennes","Ralph Fiennes"); |
jroy32 | 0:65ed62dbfeee | 94 | questions q14("Which city's\nlandmard include:\nThe Pantheon, The\nSpanish Steps and\nTrevi Fountain?\n","Rome","Athens","Istanbul","Barcelone","Rome"); |
jroy32 | 0:65ed62dbfeee | 95 | questions q15("How many blue\nstripes does the\nUnited States of\nAmerica national\nflag have?\n","13","6","0","7","0"); |
jroy32 | 0:65ed62dbfeee | 96 | questions q16("Which of these\ncountries was not\na Soviet Republic\nin USSR?\n","Moldova","Serbia","Kyrgyzstan","Azerbaijan","Serbia"); |
jroy32 | 0:65ed62dbfeee | 97 | questions q17("What temperature\nis the same in\nCelsius and\nFahrenheit?\n","0","-40","+100","+40","-40"); |
jroy32 | 0:65ed62dbfeee | 98 | questions q18("What is the name\nof the boxer whoselife story is\ndepicted in the\n1999 movie 'The\nHurricane'?\n","Rubin Carter","Jake LaMotta","Muhammad Ali","Rocky Marciano","Rubin Carter"); |
jroy32 | 0:65ed62dbfeee | 99 | questions q19("Adele performed\nthe theme song to\nwhich James Bond\nfilm?\n","Casino Royale","From Russia\n With Love","Quantum of\n Solace","Skyfall","Skyfall"); |
jroy32 | 0:65ed62dbfeee | 100 | questions q20("What restaurant\nfranchise advises\nyou to 'Eat\nFresh'?\n","Subway","McDonald's","KFC","Taco Bell","Subway"); |
jroy32 | 0:65ed62dbfeee | 101 | questions q21("In which language\nwas the book 'War\nand Peace' originally written?\n", "Russian","English","French","German","Russian"); |
jroy32 | 0:65ed62dbfeee | 102 | questions q22("Which movie was\nthe first to win\n11 Academy\nAwards?\n","Sound of Music","La La Land","Ben-Hur","Titanic","Ben-Hur"); |
jroy32 | 0:65ed62dbfeee | 103 | questions q23("What is the\nlargest country,\nby area, that has\nonly one time\nzone?\n", "China","Russia","Australia","Turkey","China"); |
jroy32 | 0:65ed62dbfeee | 104 | questions q24("Which truck is\nproduced by the\nFord Motor\nCompany?\n", "Silverado 1500","CR-V","F-150","RAV4","F-150"); |
jroy32 | 0:65ed62dbfeee | 105 | questions q25("What is the\nlargest planet in our Solar System?\n","Pluto","Earth","Saturn","Jupiter","Jupiter"); |
jroy32 | 0:65ed62dbfeee | 106 | questions q26("Other than eggs,\nwhat is a primary\ningredient in\nEggs Florentine?\n", "Avocado","Gorgonzola","Spinach","Ham","Spinach"); |
jroy32 | 0:65ed62dbfeee | 107 | questions q27("According to\nPersian folklore,\nwho is the\nstoryteller of\n'One Thousand and\nOne Nights'?\n","Kanaan","Hatshepsut","Homer","Scheherazade","Scheherazade"); |
jroy32 | 0:65ed62dbfeee | 108 | questions q28("Which of these\nNBA franchises\nhas never signed\nLeBron James?\n", "Miami Heat","Los Angeles\n Lakers","Cleveland\n Cavaliers","Boston Celtics","Boston Celtics"); |
jroy32 | 0:65ed62dbfeee | 109 | questions q29("What is the color\nof Donald Duck's\nbowtie?\n","Yellow","Green","Red","Blue","Red"); |
jroy32 | 0:65ed62dbfeee | 110 | questions q30("What was the\nfirst successful\nvaccine developed\nin history?\n","Smallpox","Rabies","Cholera","Scarlet Fever","Smallpox"); |
jroy32 | 0:65ed62dbfeee | 111 | |
jroy32 | 0:65ed62dbfeee | 112 | arr[0] = q1; |
jroy32 | 0:65ed62dbfeee | 113 | arr[1] = q2; |
jroy32 | 0:65ed62dbfeee | 114 | arr[2] = q3; |
jroy32 | 0:65ed62dbfeee | 115 | arr[3] = q4; |
jroy32 | 0:65ed62dbfeee | 116 | arr[4] = q5; |
jroy32 | 0:65ed62dbfeee | 117 | arr[5] = q6; |
jroy32 | 0:65ed62dbfeee | 118 | arr[6] = q7; |
jroy32 | 0:65ed62dbfeee | 119 | arr[7] = q8; |
jroy32 | 0:65ed62dbfeee | 120 | arr[8] = q9; |
jroy32 | 0:65ed62dbfeee | 121 | arr[9] = q10; |
jroy32 | 0:65ed62dbfeee | 122 | arr[10] = q11; |
jroy32 | 0:65ed62dbfeee | 123 | arr[11] = q12; |
jroy32 | 0:65ed62dbfeee | 124 | arr[12] = q13; |
jroy32 | 0:65ed62dbfeee | 125 | arr[13] = q14; |
jroy32 | 0:65ed62dbfeee | 126 | arr[14] = q15; |
jroy32 | 0:65ed62dbfeee | 127 | arr[15] = q16; |
jroy32 | 0:65ed62dbfeee | 128 | arr[16] = q17; |
jroy32 | 0:65ed62dbfeee | 129 | arr[17] = q18; |
jroy32 | 0:65ed62dbfeee | 130 | arr[18] = q19; |
jroy32 | 0:65ed62dbfeee | 131 | arr[19] = q20; |
jroy32 | 0:65ed62dbfeee | 132 | arr[20] = q21; |
jroy32 | 0:65ed62dbfeee | 133 | arr[21] = q22; |
jroy32 | 0:65ed62dbfeee | 134 | arr[22] = q23; |
jroy32 | 0:65ed62dbfeee | 135 | arr[23] = q24; |
jroy32 | 0:65ed62dbfeee | 136 | arr[24] = q25; |
jroy32 | 0:65ed62dbfeee | 137 | arr[25] = q26; |
jroy32 | 0:65ed62dbfeee | 138 | arr[26] = q27; |
jroy32 | 0:65ed62dbfeee | 139 | arr[27] = q28; |
jroy32 | 0:65ed62dbfeee | 140 | arr[28] = q29; |
jroy32 | 0:65ed62dbfeee | 141 | arr[29] = q30; |
jroy32 | 0:65ed62dbfeee | 142 | } |
jroy32 | 0:65ed62dbfeee | 143 | |
jroy32 | 0:65ed62dbfeee | 144 | void readQuestion() |
jroy32 | 0:65ed62dbfeee | 145 | { |
jroy32 | 0:65ed62dbfeee | 146 | arr[questionIndex].shuffleOptions(); |
jroy32 | 0:65ed62dbfeee | 147 | //uLCD.cls(); |
jroy32 | 0:65ed62dbfeee | 148 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 149 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 150 | uLCD.printf(arr[questionIndex].getQuestion().c_str()); |
jroy32 | 0:65ed62dbfeee | 151 | p = arr[questionIndex].getAllOptions(); |
jroy32 | 0:65ed62dbfeee | 152 | uLCD.printf("\n1: "); |
jroy32 | 0:65ed62dbfeee | 153 | uLCD.printf((*(p)).c_str()); |
jroy32 | 0:65ed62dbfeee | 154 | uLCD.printf("\n2: "); |
jroy32 | 0:65ed62dbfeee | 155 | uLCD.printf((*(p+1)).c_str()); |
jroy32 | 0:65ed62dbfeee | 156 | uLCD.printf("\n3: "); |
jroy32 | 0:65ed62dbfeee | 157 | uLCD.printf((*(p+2)).c_str()); |
jroy32 | 0:65ed62dbfeee | 158 | uLCD.printf("\n4: "); |
jroy32 | 0:65ed62dbfeee | 159 | uLCD.printf((*(p+3)).c_str()); |
jroy32 | 0:65ed62dbfeee | 160 | } |
jroy32 | 0:65ed62dbfeee | 161 | |
jroy32 | 0:65ed62dbfeee | 162 | int main() |
jroy32 | 0:65ed62dbfeee | 163 | { |
jroy32 | 0:65ed62dbfeee | 164 | uLCD.baudrate(3000000); // lcd settings + randomize questions |
jroy32 | 0:65ed62dbfeee | 165 | srand(time(NULL)); |
jroy32 | 0:65ed62dbfeee | 166 | addQuestions(); |
jroy32 | 0:65ed62dbfeee | 167 | shuffleQuestions(); |
jroy32 | 0:65ed62dbfeee | 168 | uLCD.display_control(PORTRAIT); |
jroy32 | 0:65ed62dbfeee | 169 | |
jroy32 | 0:65ed62dbfeee | 170 | while(1) { |
jroy32 | 0:65ed62dbfeee | 171 | if (questionIndex == 30) { |
jroy32 | 0:65ed62dbfeee | 172 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); //game over + win screen |
jroy32 | 0:65ed62dbfeee | 173 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 174 | uLCD.printf("The game is over;"); |
jroy32 | 0:65ed62dbfeee | 175 | wait(2); |
jroy32 | 0:65ed62dbfeee | 176 | uLCD.locate(0,2); |
jroy32 | 0:65ed62dbfeee | 177 | uLCD.printf("Player 1: %d", player1Score); |
jroy32 | 0:65ed62dbfeee | 178 | uLCD.locate(0,4); |
jroy32 | 0:65ed62dbfeee | 179 | uLCD.printf("Player 2: %d", player2Score); |
jroy32 | 0:65ed62dbfeee | 180 | wait(3); |
jroy32 | 0:65ed62dbfeee | 181 | // gameover.... |
jroy32 | 0:65ed62dbfeee | 182 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 183 | uLCD.locate(1,6); |
jroy32 | 0:65ed62dbfeee | 184 | if (player1Score > player2Score) { |
jroy32 | 0:65ed62dbfeee | 185 | uLCD.printf("PLAYER 1 WINS!!!"); |
jroy32 | 0:65ed62dbfeee | 186 | } else if (player1Score < player2Score) { |
jroy32 | 0:65ed62dbfeee | 187 | uLCD.printf("PLAYER 2 WINS!!!"); |
jroy32 | 0:65ed62dbfeee | 188 | } else { |
jroy32 | 0:65ed62dbfeee | 189 | uLCD.locate(3,6); |
jroy32 | 0:65ed62dbfeee | 190 | uLCD.printf("IT'S A TIE!!!"); |
jroy32 | 0:65ed62dbfeee | 191 | } |
jroy32 | 0:65ed62dbfeee | 192 | } else { |
jroy32 | 0:65ed62dbfeee | 193 | readQuestion(); //print questions |
jroy32 | 0:65ed62dbfeee | 194 | lidar_enable = 1; // tell players that lidar can now work as buzzer |
jroy32 | 0:65ed62dbfeee | 195 | } |
jroy32 | 0:65ed62dbfeee | 196 | while ((!p1Val)&&(!p2Val)) { |
jroy32 | 0:65ed62dbfeee | 197 | msg = -1; |
jroy32 | 0:65ed62dbfeee | 198 | msg2 = -1; |
jroy32 | 0:65ed62dbfeee | 199 | |
jroy32 | 0:65ed62dbfeee | 200 | if (p1_enable) { //if player 1 is ready |
jroy32 | 0:65ed62dbfeee | 201 | p1Val = p1_enable; |
jroy32 | 0:65ed62dbfeee | 202 | myled1 = !myled1; |
jroy32 | 0:65ed62dbfeee | 203 | msg = (p1_ans + 1); //answer from player mbeds + 1 to make it numbers between 1-4 |
jroy32 | 0:65ed62dbfeee | 204 | while (msg < 1); |
jroy32 | 0:65ed62dbfeee | 205 | //checking if answer is right |
jroy32 | 0:65ed62dbfeee | 206 | if (msg == 1) { |
jroy32 | 0:65ed62dbfeee | 207 | if ((*(p)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 208 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 209 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 210 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 211 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 212 | speaker.period(1.0/1000.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 213 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 214 | wait(1); |
jroy32 | 0:65ed62dbfeee | 215 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 216 | player1Score++; |
jroy32 | 0:65ed62dbfeee | 217 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 218 | break; |
jroy32 | 0:65ed62dbfeee | 219 | } else { |
jroy32 | 0:65ed62dbfeee | 220 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 221 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 222 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 223 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 224 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 225 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 226 | wait(1); |
jroy32 | 0:65ed62dbfeee | 227 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 228 | player1Score--; |
jroy32 | 0:65ed62dbfeee | 229 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 230 | break; |
jroy32 | 0:65ed62dbfeee | 231 | } |
jroy32 | 0:65ed62dbfeee | 232 | } else if (msg == 2) { |
jroy32 | 0:65ed62dbfeee | 233 | if ((*(p+1)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 234 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 235 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 236 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 237 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 238 | speaker.period(1.0/1000.0);// 500hz period |
jroy32 | 0:65ed62dbfeee | 239 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 240 | wait(1); |
jroy32 | 0:65ed62dbfeee | 241 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 242 | player1Score++; |
jroy32 | 0:65ed62dbfeee | 243 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 244 | break; |
jroy32 | 0:65ed62dbfeee | 245 | } else { |
jroy32 | 0:65ed62dbfeee | 246 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 247 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 248 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 249 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 250 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 251 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 252 | wait(1); |
jroy32 | 0:65ed62dbfeee | 253 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 254 | player1Score--; |
jroy32 | 0:65ed62dbfeee | 255 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 256 | break; |
jroy32 | 0:65ed62dbfeee | 257 | } |
jroy32 | 0:65ed62dbfeee | 258 | } else if (msg == 3) { |
jroy32 | 0:65ed62dbfeee | 259 | if ((*(p+2)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 260 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 261 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 262 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 263 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 264 | speaker.period(1.0/1000.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 265 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 266 | wait(1); |
jroy32 | 0:65ed62dbfeee | 267 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 268 | player1Score++; |
jroy32 | 0:65ed62dbfeee | 269 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 270 | break; |
jroy32 | 0:65ed62dbfeee | 271 | } else { |
jroy32 | 0:65ed62dbfeee | 272 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 273 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 274 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 275 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 276 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 277 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 278 | wait(1); |
jroy32 | 0:65ed62dbfeee | 279 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 280 | player1Score--; |
jroy32 | 0:65ed62dbfeee | 281 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 282 | break; |
jroy32 | 0:65ed62dbfeee | 283 | } |
jroy32 | 0:65ed62dbfeee | 284 | } else if (msg == 4) { |
jroy32 | 0:65ed62dbfeee | 285 | if ((*(p+3)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 286 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 287 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 288 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 289 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 290 | speaker.period(1.0/1000.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 291 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 292 | wait(1); |
jroy32 | 0:65ed62dbfeee | 293 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 294 | player1Score++; |
jroy32 | 0:65ed62dbfeee | 295 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 296 | break; |
jroy32 | 0:65ed62dbfeee | 297 | } else { |
jroy32 | 0:65ed62dbfeee | 298 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 299 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 300 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 301 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 302 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 303 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 304 | wait(1); |
jroy32 | 0:65ed62dbfeee | 305 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 306 | player1Score--; |
jroy32 | 0:65ed62dbfeee | 307 | p1Val = 1; |
jroy32 | 0:65ed62dbfeee | 308 | break; |
jroy32 | 0:65ed62dbfeee | 309 | } |
jroy32 | 0:65ed62dbfeee | 310 | } |
jroy32 | 0:65ed62dbfeee | 311 | } else if (p2_enable) { |
jroy32 | 0:65ed62dbfeee | 312 | p2Val = p2_enable; |
jroy32 | 0:65ed62dbfeee | 313 | myled2 = !myled2; |
jroy32 | 0:65ed62dbfeee | 314 | msg2 = (p2_ans + 1); |
jroy32 | 0:65ed62dbfeee | 315 | while (msg2 < 1); |
jroy32 | 0:65ed62dbfeee | 316 | if (msg2 == 1) { |
jroy32 | 0:65ed62dbfeee | 317 | if ((*(p)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 318 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 319 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 320 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 321 | player2Score++; |
jroy32 | 0:65ed62dbfeee | 322 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 323 | speaker.period(1.0/1000.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 324 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 325 | wait(1); |
jroy32 | 0:65ed62dbfeee | 326 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 327 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 328 | break; |
jroy32 | 0:65ed62dbfeee | 329 | } else { |
jroy32 | 0:65ed62dbfeee | 330 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 331 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 332 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 333 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 334 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 335 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 336 | wait(1); |
jroy32 | 0:65ed62dbfeee | 337 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 338 | player2Score--; |
jroy32 | 0:65ed62dbfeee | 339 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 340 | break; |
jroy32 | 0:65ed62dbfeee | 341 | } |
jroy32 | 0:65ed62dbfeee | 342 | } else if (msg2 == 2) { |
jroy32 | 0:65ed62dbfeee | 343 | if ((*(p+1)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 344 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 345 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 346 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 347 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 348 | speaker.period(1.0/1000.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 349 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 350 | wait(1); |
jroy32 | 0:65ed62dbfeee | 351 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 352 | player2Score++; |
jroy32 | 0:65ed62dbfeee | 353 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 354 | break; |
jroy32 | 0:65ed62dbfeee | 355 | } else { |
jroy32 | 0:65ed62dbfeee | 356 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 357 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 358 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 359 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 360 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 361 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 362 | wait(1); |
jroy32 | 0:65ed62dbfeee | 363 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 364 | player2Score--; |
jroy32 | 0:65ed62dbfeee | 365 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 366 | break; |
jroy32 | 0:65ed62dbfeee | 367 | } |
jroy32 | 0:65ed62dbfeee | 368 | } else if (msg2 == 3) { |
jroy32 | 0:65ed62dbfeee | 369 | if ((*(p+2)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 370 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 371 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 372 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 373 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 374 | speaker.period(1.0/1000.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 375 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 376 | wait(1); |
jroy32 | 0:65ed62dbfeee | 377 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 378 | player2Score++; |
jroy32 | 0:65ed62dbfeee | 379 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 380 | break; |
jroy32 | 0:65ed62dbfeee | 381 | } else { |
jroy32 | 0:65ed62dbfeee | 382 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 383 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 384 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 385 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 386 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 387 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 388 | wait(1); |
jroy32 | 0:65ed62dbfeee | 389 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 390 | player2Score--; |
jroy32 | 0:65ed62dbfeee | 391 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 392 | break; |
jroy32 | 0:65ed62dbfeee | 393 | } |
jroy32 | 0:65ed62dbfeee | 394 | } else if (msg2 == 4) { |
jroy32 | 0:65ed62dbfeee | 395 | if ((*(p+3)).compare(arr[questionIndex].getCorrectAnswer()) == 0) { |
jroy32 | 0:65ed62dbfeee | 396 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 397 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 398 | uLCD.printf("Correct"); |
jroy32 | 0:65ed62dbfeee | 399 | myRGBled.write(0.0,1.0); |
jroy32 | 0:65ed62dbfeee | 400 | speaker.period(1.0/1000.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 401 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 402 | wait(1); |
jroy32 | 0:65ed62dbfeee | 403 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 404 | player2Score++; |
jroy32 | 0:65ed62dbfeee | 405 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 406 | break; |
jroy32 | 0:65ed62dbfeee | 407 | } else { |
jroy32 | 0:65ed62dbfeee | 408 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 409 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 410 | uLCD.printf("Incorrect"); |
jroy32 | 0:65ed62dbfeee | 411 | myRGBled.write(1.0,0.0); |
jroy32 | 0:65ed62dbfeee | 412 | speaker.period(1.0/500.0); // 500hz period |
jroy32 | 0:65ed62dbfeee | 413 | speaker =0.5; |
jroy32 | 0:65ed62dbfeee | 414 | wait(1); |
jroy32 | 0:65ed62dbfeee | 415 | speaker =0.0; |
jroy32 | 0:65ed62dbfeee | 416 | player2Score--; |
jroy32 | 0:65ed62dbfeee | 417 | p2Val = 1; |
jroy32 | 0:65ed62dbfeee | 418 | break; |
jroy32 | 0:65ed62dbfeee | 419 | } |
jroy32 | 0:65ed62dbfeee | 420 | } |
jroy32 | 0:65ed62dbfeee | 421 | } |
jroy32 | 0:65ed62dbfeee | 422 | } |
jroy32 | 0:65ed62dbfeee | 423 | //reset all values |
jroy32 | 0:65ed62dbfeee | 424 | wait(3); |
jroy32 | 0:65ed62dbfeee | 425 | p1Val = 0; |
jroy32 | 0:65ed62dbfeee | 426 | p2Val = 0; |
jroy32 | 0:65ed62dbfeee | 427 | myled1 = 0; |
jroy32 | 0:65ed62dbfeee | 428 | myled2 = 0; |
jroy32 | 0:65ed62dbfeee | 429 | msg = -1; |
jroy32 | 0:65ed62dbfeee | 430 | msg2 = -1; |
jroy32 | 0:65ed62dbfeee | 431 | lidar_enable = 0; |
jroy32 | 0:65ed62dbfeee | 432 | myRGBled.write(0.0,0.0); |
jroy32 | 0:65ed62dbfeee | 433 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 434 | uLCD.locate(0,0); |
jroy32 | 0:65ed62dbfeee | 435 | uLCD.printf("Player 1: %d", player1Score); |
jroy32 | 0:65ed62dbfeee | 436 | uLCD.locate(0,2); |
jroy32 | 0:65ed62dbfeee | 437 | uLCD.printf("Player 2: %d", player2Score); |
jroy32 | 0:65ed62dbfeee | 438 | wait(2); |
jroy32 | 0:65ed62dbfeee | 439 | uLCD.filled_rectangle(0, 0, 130, 130, BLACK); |
jroy32 | 0:65ed62dbfeee | 440 | questionIndex++; |
jroy32 | 0:65ed62dbfeee | 441 | } |
jroy32 | 0:65ed62dbfeee | 442 | } |