4180 Project Master Code

Dependencies:   mbed 4DGL-uLCD-SE

Committer:
jroy32
Date:
Tue Apr 23 18:51:38 2019 +0000
Revision:
0:65ed62dbfeee
master

Who changed what in which revision?

UserRevisionLine numberNew 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 }