Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of The_Children_of_Cronos_el15mggr by
taurolib.cpp
00001 #include "mbed.h" 00002 #include "N5110.h" 00003 #include "Gamepad.h" 00004 #include "taurolib.h" 00005 00006 //constructor 00007 taurolib::taurolib() 00008 { 00009 00010 } 00011 /**< structure for switching between answer options */ 00012 struct State { 00013 int position;/**< actual state */ 00014 int nextstate[2];/**< next state */ 00015 }; 00016 //state array for the answers 00017 State _answer[5]= { 00018 {0,{3,1}}, 00019 {1,{0,2}}, 00020 {2,{1,3}}, 00021 {3,{2,0}} 00022 }; 00023 00024 //sets default output state and count to 0.Therefore,dafault option selected would be the first one 00025 //sets game started as false(_yes) 00026 void taurolib::init() 00027 { 00028 _state=0; 00029 _output=0; 00030 _count=0; 00031 _score=0; 00032 _yes=false; 00033 00034 } 00035 //depending on the count the question will be the one corresponding the level 00036 void taurolib::drawquestion(N5110 &lcd) 00037 { 00038 if (_count==0) { 00039 lcd.printString("How many",15,0); 00040 lcd.printString("kingdoms",15,1); 00041 lcd.printString("are in",12,2); 00042 lcd.printString("nature?",11,3); 00043 00044 lcd.printString("3",7,5); 00045 lcd.printString("2",25,5); 00046 lcd.printString("5",49,5); 00047 lcd.printString("6",70,5); 00048 } 00049 if(_count==1) { 00050 lcd.printString("In which",13,0); 00051 lcd.printString("century was",5,1); 00052 lcd.printString("Sheakspere",7,2); 00053 lcd.printString("born?",23,3); 00054 lcd.printString("16",4,5); 00055 lcd.printString("14",24,5); 00056 lcd.printString("17",47,5); 00057 lcd.printString("13",67,5); 00058 } 00059 if(_count==2) { 00060 lcd.printString("tan(45)?",18,1); 00061 lcd.printString("0.7",2,5); 00062 lcd.printString("0.5",23,5); 00063 lcd.printString("1",50,5); 00064 lcd.printString("1.7",64,5); 00065 } 00066 if(_count==3) { 00067 lcd.printString("How many",15,0); 00068 lcd.printString("kinds of",15,1); 00069 lcd.printString("persons con-",5,2); 00070 lcd.printString("-sider Platon?",0,3); 00071 lcd.printString("2",6,5); 00072 lcd.printString("5",28,5); 00073 lcd.printString("10",47,5); 00074 lcd.printString("3",69,5); 00075 } 00076 if(_count==4) { 00077 lcd.printString("How many",15,0); 00078 lcd.printString("electrons does",0,1); 00079 lcd.printString("a molecule",9,2); 00080 lcd.printString("of H20 have?",5,3); 00081 lcd.printString("8",7,5); 00082 lcd.printString("10",24,5); 00083 lcd.printString("6",49,5); 00084 lcd.printString("20",68,5); 00085 } 00086 if(_count==5) { 00087 lcd.printString("How many",15,0); 00088 lcd.printString("countries are a",0,1); 00089 lcd.printString("part of the?",18,2); 00090 lcd.printString("EU?",31,3); 00091 lcd.printString("26",4,5); 00092 lcd.printString("28",25,5); 00093 lcd.printString("18",47,5); 00094 lcd.printString("27",68,5); 00095 } 00096 if(_count==6) { 00097 lcd.printString("How many",15,0); 00098 lcd.printString("elementary",8,1); 00099 lcd.printString("particles",8,2); 00100 lcd.printString("are there?",8,3); 00101 lcd.printString("16",4,5); 00102 lcd.printString("12",25,5); 00103 lcd.printString("3",49,5); 00104 lcd.printString("8",70,5); 00105 } 00106 if(_count==7) { 00107 lcd.printString("When did the",6,0); 00108 lcd.printString("Roman Empire",0,1); 00109 lcd.printString("fall?",5,2); 00110 lcd.printString("476",1,5); 00111 lcd.printString("350",22,5); 00112 lcd.printString("512",41,5); 00113 lcd.printString("342ac",64,5); 00114 } 00115 if(_count==8) { 00116 lcd.printString("What year was",5,0); 00117 lcd.printString("the car",3,1); 00118 lcd.printString("invented in?",0,2); 00119 lcd.printString("(18..?)",18,3); 00120 lcd.printString("64",4,5); 00121 lcd.printString("21",26,5); 00122 lcd.printString("07",47,5); 00123 lcd.printString("48",68,5); 00124 } 00125 if(_count==9) { 00126 lcd.printString("How many",15,0); 00127 lcd.printString("children does",2,1); 00128 lcd.printString("Cronos have?",5,2); 00129 lcd.printString("5",7,5); 00130 lcd.printString("4",28,5); 00131 lcd.printString("6",49,5); 00132 lcd.printString("8",71,5); 00133 } 00134 00135 } 00136 00137 00138 //draws the option selected 00139 void taurolib::drawselect(N5110 &lcd) 00140 { 00141 lcd.drawRect(0,32,20,15,FILL_TRANSPARENT); 00142 lcd.drawRect(21,32,20,15,FILL_TRANSPARENT); 00143 lcd.drawRect(42,32,20,15,FILL_TRANSPARENT); 00144 lcd.drawRect(63,32,20,15,FILL_TRANSPARENT); 00145 if(_output==0) { 00146 lcd.drawRect(0,32,20,15,FILL_BLACK); 00147 } 00148 if(_output==1) { 00149 lcd.drawRect(21,32,20,15,FILL_BLACK); 00150 } 00151 if(_output==2) { 00152 lcd.drawRect(42,32,20,15,FILL_BLACK); 00153 } 00154 if(_output==3) { 00155 lcd.drawRect(63,32,20,15,FILL_BLACK); 00156 } 00157 } 00158 00159 //draw main function of the questions screen 00160 void taurolib::draw(N5110 &lcd,Gamepad &pad,DigitalOut &b,DigitalOut &x) 00161 { 00162 Direction d = pad.get_direction(); 00163 if (d==E || b) { 00164 wait(0.1); //small debouncing 00165 if (d==E || b) { 00166 _state = _answer[_state].nextstate[1]; 00167 pad.tone(NOTE_A1,0.5); 00168 } 00169 } 00170 if (d==W || x) { 00171 wait(0.1); 00172 if (d==W || x) { 00173 _state = _answer[_state].nextstate[0]; 00174 pad.tone(NOTE_A1,0.5); 00175 } 00176 } 00177 00178 _output=_answer[_state].position; 00179 lcd.clear(); 00180 taurolib::drawselect(lcd); 00181 taurolib::drawquestion(lcd); 00182 lcd.refresh(); 00183 } 00184 00185 //transition screens depending on output 00186 void taurolib::transition(N5110 &lcd) 00187 { 00188 if(_count==0) { 00189 lcd.clear(); 00190 lcd.printString("Level 1 done!",10,0); 00191 lcd.printString("Get ready for:",3,1); 00192 lcd.printString("Level 2:",8,3); 00193 lcd.printString("Literature",8,4); 00194 sprintf(_buffer,"Score=%2d",_score); 00195 lcd.printString(_buffer,13,5); 00196 lcd.refresh(); 00197 wait(2); 00198 } 00199 if(_count==1) { 00200 lcd.clear(); 00201 lcd.printString("Level 2 done!",10,0); 00202 lcd.printString("Get ready for:",3,1); 00203 lcd.printString("Level 3:",8,3); 00204 lcd.printString("Maths",5,4); 00205 sprintf(_buffer,"Score=%2d",_score); 00206 lcd.printString(_buffer,13,5); 00207 lcd.refresh(); 00208 wait(2); 00209 } 00210 if(_count==2) { 00211 lcd.clear(); 00212 lcd.printString("Level 3 done!",10,0); 00213 lcd.printString("Get ready for:",3,1); 00214 lcd.printString("Level 4:",8,3); 00215 lcd.printString("Philosophy",5,4); 00216 sprintf(_buffer,"Score=%2d",_score); 00217 lcd.printString(_buffer,13,5); 00218 lcd.refresh(); 00219 wait(2); 00220 } 00221 if(_count==3) { 00222 lcd.clear(); 00223 lcd.printString("Level 4 done!",10,0); 00224 lcd.printString("Get ready for:",3,1); 00225 lcd.printString("Level 5:",8,3); 00226 lcd.printString("Chemistry",5,4); 00227 sprintf(_buffer,"Score=%2d",_score); 00228 lcd.printString(_buffer,13,5); 00229 lcd.refresh(); 00230 wait(2); 00231 } 00232 if(_count==4) { 00233 lcd.clear(); 00234 lcd.printString("Level 5 done!",10,0); 00235 lcd.printString("Get ready for:",3,1); 00236 lcd.printString("Level 6:",8,3); 00237 lcd.printString("Geography",5,4); 00238 sprintf(_buffer,"Score=%2d",_score); 00239 lcd.printString(_buffer,13,5); 00240 lcd.refresh(); 00241 wait(2); 00242 } 00243 if(_count==5) { 00244 lcd.clear(); 00245 lcd.printString("Level 6 done!",10,0); 00246 lcd.printString("Get ready for:",3,1); 00247 lcd.printString("Level 7:",8,3); 00248 lcd.printString("Physics",5,4); 00249 sprintf(_buffer,"Score=%2d",_score); 00250 lcd.printString(_buffer,13,5); 00251 lcd.refresh(); 00252 wait(2); 00253 } 00254 if(_count==6) { 00255 lcd.clear(); 00256 lcd.printString("Level 7 done!",10,0); 00257 lcd.printString("Get ready for:",3,1); 00258 lcd.printString("Level 8:",8,3); 00259 lcd.printString("History",5,4); 00260 sprintf(_buffer,"Score=%2d",_score); 00261 lcd.printString(_buffer,13,5); 00262 lcd.refresh(); 00263 wait(2); 00264 } 00265 if(_count==7) { 00266 lcd.clear(); 00267 lcd.printString("Level 8 done!",10,0); 00268 lcd.printString("Get ready for:",3,1); 00269 lcd.printString("Level 9:",8,3); 00270 lcd.printString("Technology",5,4); 00271 sprintf(_buffer,"Score=%2d",_score); 00272 lcd.printString(_buffer,13,5); 00273 lcd.refresh(); 00274 wait(2); 00275 } 00276 if(_count==8) { 00277 lcd.clear(); 00278 lcd.printString("Level 9 done!",10,0); 00279 lcd.printString("Get ready for:",3,1); 00280 lcd.printString("Level 10:",8,3); 00281 lcd.printString("You",15,4); 00282 sprintf(_buffer,"Score=%2d",_score); 00283 lcd.printString(_buffer,13,5); 00284 lcd.refresh(); 00285 wait(2); 00286 } 00287 00288 if(_count==9) { 00289 lcd.clear(); 00290 lcd.printString("Your final",0,0); 00291 lcd.printString("score is:",0,1); 00292 sprintf(_buffer,"Score=%2d",_score); 00293 lcd.printString(_buffer,0,2); 00294 if(_score==100) { 00295 _score+=100; 00296 lcd.printString("100%,you just",0,4); 00297 lcd.printString("became a God",0,5); 00298 } 00299 lcd.refresh(); 00300 wait(2); 00301 } 00302 } 00303 //intro screen 00304 void taurolib::intro(N5110 &lcd) 00305 { 00306 lcd.clear(); 00307 lcd.printString("Welcome,",17,1); 00308 lcd.printString("press start",7,3); 00309 lcd.refresh(); 00310 } 00311 //game over screen 00312 void taurolib::gameover(N5110 &lcd) 00313 { 00314 lcd.clear(); 00315 lcd.printString("MECK!! WRONG",6,1); 00316 lcd.printString("-5 pts",20,4); 00317 lcd.refresh(); 00318 _score-=5; 00319 wait(2); 00320 } 00321 //checks if answer was right and passes the transition and/or gameover screen 00322 void taurolib::update(N5110 &lcd,DigitalOut &a) 00323 { 00324 if(_output==2 && _count==0 && a) { 00325 _score+=10; 00326 taurolib::transition(lcd); 00327 _count++; 00328 } else if(_output!=2 && _count==0 && a) { 00329 taurolib::gameover(lcd); 00330 taurolib::transition(lcd); 00331 _count++; 00332 } 00333 00334 00335 if(_output==0 && _count==1 && a) { 00336 _score+=10; 00337 taurolib::transition(lcd); 00338 _count++; 00339 } else if(_output!=0 && _count==1 && a) { 00340 taurolib::gameover(lcd); 00341 taurolib::transition(lcd); 00342 _count++; 00343 } 00344 00345 00346 if(_output==2 && _count==2 && a) { 00347 _score+=10; 00348 taurolib::transition(lcd); 00349 _count++; 00350 } else if(_output!=2 && _count==2 && a) { 00351 taurolib::gameover(lcd); 00352 taurolib::transition(lcd); 00353 _count++; 00354 } 00355 00356 00357 if(_output==3 && _count==3 && a) { 00358 _score+=10; 00359 taurolib::transition(lcd); 00360 _count++; 00361 } else if(_output!=3 && _count==3 && a) { 00362 taurolib::gameover(lcd); 00363 taurolib::transition(lcd); 00364 _count++; 00365 } 00366 00367 00368 if(_output==1 && _count==4 && a) { 00369 _score+=10; 00370 taurolib::transition(lcd); 00371 _count++; 00372 } else if(_output!=1 && _count==4 && a) { 00373 taurolib::gameover(lcd); 00374 taurolib::transition(lcd); 00375 _count++; 00376 } 00377 00378 00379 if(_output==3 && _count==5 && a) { 00380 taurolib::transition(lcd); 00381 _score+=10; 00382 _count++; 00383 } else if(_output!=3 && _count==5 && a) { 00384 taurolib::gameover(lcd); 00385 taurolib::transition(lcd); 00386 _count++; 00387 } 00388 00389 00390 if(_output==1 && _count==6 && a) { 00391 _score+=10; 00392 taurolib::transition(lcd); 00393 _count++; 00394 } else if(_output!=1 && _count==6 && a) { 00395 taurolib::gameover(lcd); 00396 taurolib::transition(lcd); 00397 _count++; 00398 } 00399 00400 00401 if(_output==0 && _count==7 && a) { 00402 _score+=10; 00403 taurolib::transition(lcd); 00404 _count++; 00405 } else if(_output!=0 && _count==7 && a) { 00406 taurolib::gameover(lcd); 00407 taurolib::transition(lcd); 00408 _count++; 00409 } 00410 00411 00412 if(_output==2 && _count==8 && a) { 00413 _score+=10; 00414 taurolib::transition(lcd); 00415 _count++; 00416 } else if(_output!=2 && _count==8 && a) { 00417 taurolib::gameover(lcd); 00418 taurolib::transition(lcd); 00419 _count++; 00420 } 00421 00422 if(_output==2 && _count==9 && a) { 00423 _score+=10; 00424 taurolib::transition(lcd); 00425 _count++; 00426 } else if(_output!=2 && _count==9 && a) { 00427 taurolib::gameover(lcd); 00428 taurolib::transition(lcd); 00429 _count++; 00430 } 00431 if(_count==10) { 00432 _yes=false; 00433 _count=0; 00434 _score=0; 00435 } 00436 00437 } 00438 int taurolib::score () 00439 { 00440 return _score; 00441 } 00442 00443 void taurolib::game(N5110 &lcd,Gamepad &pad,DigitalOut &a,DigitalOut &start,DigitalOut &b,DigitalOut &x) 00444 { 00445 if(!_yes) { //while the game hasnt started 00446 taurolib::intro(lcd); 00447 } 00448 if(start) { 00449 _yes=true; 00450 } 00451 if(_yes) { //if it has started 00452 taurolib::draw(lcd,pad,b,x); 00453 taurolib::update(lcd,a); 00454 wait(0.1); 00455 } 00456 } //small delay
Generated on Wed Jul 13 2022 07:38:17 by
1.7.2
