Whack a Mole game! Features: - LCD graphics display - Touch pad input - Speaker effects through a class D audio amplifier\ - A high score page maintained by the SD card file system - Analog noise used to seed random numbers
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed
Fork of MPR121_Demo by
Revision 11:9c2e3efd7cda, committed 2016-03-14
- Comitter:
- tpettet3
- Date:
- Mon Mar 14 21:16:42 2016 +0000
- Parent:
- 10:a31802412ab6
- Commit message:
- Public Release 1.0
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Mon Mar 14 19:04:38 2016 +0000 +++ b/main.cpp Mon Mar 14 21:16:42 2016 +0000 @@ -147,6 +147,38 @@ int rmole=18;//radius mole int mole= 0xD3D3D3;//mole color like gray + +//mole face +int lx114=10;//14x +int lx214=17; +int rx114=25; +int rx214=32; +int lx125=53;//25x +int lx225=60; +int rx125=68; +int rx225=75; +int lx136=97;//36x +int lx236=103; +int rx136=111; +int rx236=118; + +int eyey123=10;//123y +int eyey456=56;//456y +int eyecolor=0x0000; +int nosecolor=0x0000; +int whisker=0x0000; +int rnose=2; + +int wb123=27;//pos123 +int wm123=21; +int wt123=15; +int wb456=70;//pos456 +int wm456=64; +int wt456=58; + + + + lcd.circle(col1, row1 , r, out);// draws 6 circles to the lcd screen to show where the moles will appear lcd.circle(col1, row2 , r, out); lcd.circle(col2, row1 , r, out); @@ -244,6 +276,15 @@ lcd.filled_circle(col3, row1 , rmole, fill); lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col1, row1 , rmole, mole); + //face1 + lcd.line(lx114, eyey123 , lx214, eyey123, eyecolor);//left eye + lcd.line(rx114, eyey123 , rx214, eyey123, eyecolor);//right eye + lcd.line(lx114, wb123 , rx214, wt123, whisker);//bottom + lcd.line(lx114, wm123 , rx214, wm123, whisker);//middle + lcd.line(lx114, wt123 , rx214, wb123, whisker);//top + lcd.filled_circle(col1, row1 , rnose, nosecolor);//nose + + break; case 1: //POS_MUTEX.lock(); @@ -262,6 +303,13 @@ lcd.filled_circle(col3, row1 , rmole, fill); lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col2, row1 , rmole, mole); + //face2 + lcd.line(lx125, eyey123 , lx225, eyey123, eyecolor);//left eye + lcd.line(rx125, eyey123 , rx225, eyey123, eyecolor);//right eye + lcd.line(lx125, wb123 , rx225, wt123, whisker);//bottom + lcd.line(lx125, wm123 , rx225, wm123, whisker);//middle + lcd.line(lx125, wt123 , rx225, wb123, whisker);//top + lcd.filled_circle(col2, row1 , rnose, nosecolor);//nose break; case 2: //POS_MUTEX.lock(); @@ -280,6 +328,14 @@ lcd.filled_circle(col3, row1 , rmole, fill); lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col3, row1 , rmole, mole); + + //face3 + lcd.line(lx136, eyey123 , lx236, eyey123, eyecolor);//left eye + lcd.line(rx136, eyey123 , rx236, eyey123, eyecolor);//right eye + lcd.line(lx136, wb123 , rx236, wt123, whisker);//bottom + lcd.line(lx136, wm123 , rx236, wm123, whisker);//middle + lcd.line(lx136, wt123 , rx236, wb123, whisker);//top + lcd.filled_circle(col3, row1 , rnose, nosecolor);//nose break; case 3: //POS_MUTEX.lock(); @@ -298,6 +354,15 @@ lcd.filled_circle(col3, row1 , rmole, fill); lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col1, row2 , rmole, mole); + + //face4 + lcd.line(lx114, eyey456 , lx214, eyey456, eyecolor);//left eye + lcd.line(rx114, eyey456 , rx214, eyey456, eyecolor);//right eye + lcd.line(lx114, wb456 , rx214, wt456, whisker);//bottom + lcd.line(lx114, wm456 , rx214, wm456, whisker);//middle + lcd.line(lx114, wt456 , rx214, wb456, whisker);//top + lcd.filled_circle(col1, row2 , rnose, nosecolor);//nose + break; case 4: //POS_MUTEX.lock(); @@ -316,6 +381,14 @@ lcd.filled_circle(col3, row1 , rmole, fill); lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col2, row2 , rmole, mole); + //face5 + lcd.line(lx125, eyey456 , lx225, eyey456, eyecolor);//left eye + lcd.line(rx125, eyey456 , rx225, eyey456, eyecolor);//right eye + lcd.line(lx125, wb456 , rx225, wt456, whisker);//bottom + lcd.line(lx125, wm456 , rx225, wm456, whisker);//middle + lcd.line(lx125, wt456 , rx225, wb456, whisker);//top + lcd.filled_circle(col2, row2 , rnose, nosecolor);//nose + break; case 5: //POS_MUTEX.lock(); @@ -334,7 +407,15 @@ lcd.filled_circle(col2, row2 , rmole, fill); lcd.filled_circle(col3, row1 , rmole, fill); lcd.filled_circle(col3, row2 , rmole, fill); - lcd.filled_circle(col2, row2 , rmole, mole); + lcd.filled_circle(col3, row2 , rmole, mole); + //face6 + lcd.line(lx136, eyey456 , lx236, eyey456, eyecolor);//left eye + lcd.line(rx136, eyey456 , rx236, eyey456, eyecolor);//right eye + lcd.line(lx136, wb456 , rx236, wt456, whisker);//bottom + lcd.line(lx136, wm456 , rx236, wm456, whisker);//middle + lcd.line(lx136, wt456 , rx236, wb456, whisker);//top + lcd.filled_circle(col3, row2 , rnose, nosecolor);//nose + break; case 6: //POS_MUTEX.lock(); @@ -354,6 +435,21 @@ lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col2, row1 , rmole, mole); lcd.filled_circle(col3, row2 , rmole, mole); + + //face2 + lcd.line(lx125, eyey123 , lx225, eyey123, eyecolor);//left eye + lcd.line(rx125, eyey123 , rx225, eyey123, eyecolor);//right eye + lcd.line(lx125, wb123 , rx225, wt123, whisker);//bottom + lcd.line(lx125, wm123 , rx225, wm123, whisker);//middle + lcd.line(lx125, wt123 , rx225, wb123, whisker);//top + lcd.filled_circle(col2, row1 , rnose, nosecolor);//nose + //face6 + lcd.line(lx136, eyey456 , lx236, eyey456, eyecolor);//left eye + lcd.line(rx136, eyey456 , rx236, eyey456, eyecolor);//right eye + lcd.line(lx136, wb456 , rx236, wt456, whisker);//bottom + lcd.line(lx136, wm456 , rx236, wm456, whisker);//middle + lcd.line(lx136, wt456 , rx236, wb456, whisker);//top + lcd.filled_circle(col3, row2 , rnose, nosecolor);//nose break; case 7: //POS_MUTEX.lock(); @@ -373,6 +469,21 @@ lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col1, row1 , rmole, mole); lcd.filled_circle(col3, row1 , rmole, mole); + + //face1 + lcd.line(lx114, eyey123 , lx214, eyey123, eyecolor);//left eye + lcd.line(rx114, eyey123 , rx214, eyey123, eyecolor);//right eye + lcd.line(lx114, wb123 , rx214, wt123, whisker);//bottom + lcd.line(lx114, wm123 , rx214, wm123, whisker);//middle + lcd.line(lx114, wt123 , rx214, wb123, whisker);//top + lcd.filled_circle(col1, row1 , rnose, nosecolor);//nose + //face3 + lcd.line(lx136, eyey123 , lx236, eyey123, eyecolor);//left eye + lcd.line(rx136, eyey123 , rx236, eyey123, eyecolor);//right eye + lcd.line(lx136, wb123 , rx236, wt123, whisker);//bottom + lcd.line(lx136, wm123 , rx236, wm123, whisker);//middle + lcd.line(lx136, wt123 , rx236, wb123, whisker);//top + lcd.filled_circle(col3, row1 , rnose, nosecolor);//nose break; case 8: //POS_MUTEX.lock(); @@ -393,7 +504,21 @@ lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col2, row1 , rmole, mole); lcd.filled_circle(col1, row2 , rmole, mole); - lcd.filled_circle(col3, row2 , rmole, mole); + //face2 + lcd.line(lx125, eyey123 , lx225, eyey123, eyecolor);//left eye + lcd.line(rx125, eyey123 , rx225, eyey123, eyecolor);//right eye + lcd.line(lx125, wb123 , rx225, wt123, whisker);//bottom + lcd.line(lx125, wm123 , rx225, wm123, whisker);//middle + lcd.line(lx125, wt123 , rx225, wb123, whisker);//top + lcd.filled_circle(col2, row1 , rnose, nosecolor);//nose + //face4 + lcd.line(lx114, eyey456 , lx214, eyey456, eyecolor);//left eye + lcd.line(rx114, eyey456 , rx214, eyey456, eyecolor);//right eye + lcd.line(lx114, wb456 , rx214, wt456, whisker);//bottom + lcd.line(lx114, wm456 , rx214, wm456, whisker);//middle + lcd.line(lx114, wt456 , rx214, wb456, whisker);//top + lcd.filled_circle(col1, row2 , rnose, nosecolor);//nose + break; case 9: //POS_MUTEX.lock(); @@ -414,6 +539,27 @@ lcd.filled_circle(col3, row1 , rmole, mole); lcd.filled_circle(col1, row2 , rmole, mole); lcd.filled_circle(col3, row2 , rmole, mole); + //face3 + lcd.line(lx136, eyey123 , lx236, eyey123, eyecolor);//left eye + lcd.line(rx136, eyey123 , rx236, eyey123, eyecolor);//right eye + lcd.line(lx136, wb123 , rx236, wt123, whisker);//bottom + lcd.line(lx136, wm123 , rx236, wm123, whisker);//middle + lcd.line(lx136, wt123 , rx236, wb123, whisker);//top + lcd.filled_circle(col3, row1 , rnose, nosecolor);//nose + //face4 + lcd.line(lx114, eyey456 , lx214, eyey456, eyecolor);//left eye + lcd.line(rx114, eyey456 , rx214, eyey456, eyecolor);//right eye + lcd.line(lx114, wb456 , rx214, wt456, whisker);//bottom + lcd.line(lx114, wm456 , rx214, wm456, whisker);//middle + lcd.line(lx114, wt456 , rx214, wb456, whisker);//top + lcd.filled_circle(col1, row2 , rnose, nosecolor);//nose + //face6 + lcd.line(lx136, eyey456 , lx236, eyey456, eyecolor);//left eye + lcd.line(rx136, eyey456 , rx236, eyey456, eyecolor);//right eye + lcd.line(lx136, wb456 , rx236, wt456, whisker);//bottom + lcd.line(lx136, wm456 , rx236, wm456, whisker);//middle + lcd.line(lx136, wt456 , rx236, wb456, whisker);//top + lcd.filled_circle(col3, row2 , rnose, nosecolor);//nose break; case 10: //POS_MUTEX.lock(); @@ -433,6 +579,20 @@ lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col1, row1 , rmole, mole); lcd.filled_circle(col3, row2 , rmole, mole); + //face1 + lcd.line(lx114, eyey123 , lx214, eyey123, eyecolor);//left eye + lcd.line(rx114, eyey123 , rx214, eyey123, eyecolor);//right eye + lcd.line(lx114, wb123 , rx214, wt123, whisker);//bottom + lcd.line(lx114, wm123 , rx214, wm123, whisker);//middle + lcd.line(lx114, wt123 , rx214, wb123, whisker);//top + lcd.filled_circle(col1, row1 , rnose, nosecolor);//nose + //face6 + lcd.line(lx136, eyey456 , lx236, eyey456, eyecolor);//left eye + lcd.line(rx136, eyey456 , rx236, eyey456, eyecolor);//right eye + lcd.line(lx136, wb456 , rx236, wt456, whisker);//bottom + lcd.line(lx136, wm456 , rx236, wm456, whisker);//middle + lcd.line(lx136, wt456 , rx236, wb456, whisker);//top + lcd.filled_circle(col3, row2 , rnose, nosecolor);//nose break; case 11: //POS_MUTEX.lock(); @@ -454,6 +614,35 @@ lcd.filled_circle(col3, row1 , rmole, mole); lcd.filled_circle(col2, row2 , rmole, mole); lcd.filled_circle(col3, row2 , rmole, mole); + //face2 + lcd.line(lx125, eyey123 , lx225, eyey123, eyecolor);//left eye + lcd.line(rx125, eyey123 , rx225, eyey123, eyecolor);//right eye + lcd.line(lx125, wb123 , rx225, wt123, whisker);//bottom + lcd.line(lx125, wm123 , rx225, wm123, whisker);//middle + lcd.line(lx125, wt123 , rx225, wb123, whisker);//top + lcd.filled_circle(col2, row1 , rnose, nosecolor);//nose + //face3 + lcd.line(lx136, eyey123 , lx236, eyey123, eyecolor);//left eye + lcd.line(rx136, eyey123 , rx236, eyey123, eyecolor);//right eye + lcd.line(lx136, wb123 , rx236, wt123, whisker);//bottom + lcd.line(lx136, wm123 , rx236, wm123, whisker);//middle + lcd.line(lx136, wt123 , rx236, wb123, whisker);//top + lcd.filled_circle(col3, row1 , rnose, nosecolor);//nose + //face5 + lcd.line(lx125, eyey456 , lx225, eyey456, eyecolor);//left eye + lcd.line(rx125, eyey456 , rx225, eyey456, eyecolor);//right eye + lcd.line(lx125, wb456 , rx225, wt456, whisker);//bottom + lcd.line(lx125, wm456 , rx225, wm456, whisker);//middle + lcd.line(lx125, wt456 , rx225, wb456, whisker);//top + lcd.filled_circle(col2, row2 , rnose, nosecolor);//nose + //face6 + lcd.line(lx136, eyey456 , lx236, eyey456, eyecolor);//left eye + lcd.line(rx136, eyey456 , rx236, eyey456, eyecolor);//right eye + lcd.line(lx136, wb456 , rx236, wt456, whisker);//bottom + lcd.line(lx136, wm456 , rx236, wm456, whisker);//middle + lcd.line(lx136, wt456 , rx236, wb456, whisker);//top + lcd.filled_circle(col3, row2 , rnose, nosecolor);//nose + break; case 12: //POS_MUTEX.lock(); @@ -473,6 +662,21 @@ lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col3, row1 , rmole, mole); lcd.filled_circle(col2, row2 , rmole, mole); + + //face3 + lcd.line(lx136, eyey123 , lx236, eyey123, eyecolor);//left eye + lcd.line(rx136, eyey123 , rx236, eyey123, eyecolor);//right eye + lcd.line(lx136, wb123 , rx236, wt123, whisker);//bottom + lcd.line(lx136, wm123 , rx236, wm123, whisker);//middle + lcd.line(lx136, wt123 , rx236, wb123, whisker);//top + lcd.filled_circle(col3, row1 , rnose, nosecolor);//nose + //face5 + lcd.line(lx125, eyey456 , lx225, eyey456, eyecolor);//left eye + lcd.line(rx125, eyey456 , rx225, eyey456, eyecolor);//right eye + lcd.line(lx125, wb456 , rx225, wt456, whisker);//bottom + lcd.line(lx125, wm456 , rx225, wm456, whisker);//middle + lcd.line(lx125, wt456 , rx225, wb456, whisker);//top + lcd.filled_circle(col2, row2 , rnose, nosecolor);//nose break; case 13: //POS_MUTEX.lock(); @@ -493,6 +697,28 @@ lcd.filled_circle(col1, row1 , rmole, mole); lcd.filled_circle(col1, row2 , rmole, mole); lcd.filled_circle(col2, row2 , rmole, mole); + //face1 + lcd.line(lx114, eyey123 , lx214, eyey123, eyecolor);//left eye + lcd.line(rx114, eyey123 , rx214, eyey123, eyecolor);//right eye + lcd.line(lx114, wb123 , rx214, wt123, whisker);//bottom + lcd.line(lx114, wm123 , rx214, wm123, whisker);//middle + lcd.line(lx114, wt123 , rx214, wb123, whisker);//top + lcd.filled_circle(col1, row1 , rnose, nosecolor);//nose + + //face4 + lcd.line(lx114, eyey456 , lx214, eyey456, eyecolor);//left eye + lcd.line(rx114, eyey456 , rx214, eyey456, eyecolor);//right eye + lcd.line(lx114, wb456 , rx214, wt456, whisker);//bottom + lcd.line(lx114, wm456 , rx214, wm456, whisker);//middle + lcd.line(lx114, wt456 , rx214, wb456, whisker);//top + lcd.filled_circle(col1, row2 , rnose, nosecolor);//nose + //face5 + lcd.line(lx125, eyey456 , lx225, eyey456, eyecolor);//left eye + lcd.line(rx125, eyey456 , rx225, eyey456, eyecolor);//right eye + lcd.line(lx125, wb456 , rx225, wt456, whisker);//bottom + lcd.line(lx125, wm456 , rx225, wm456, whisker);//middle + lcd.line(lx125, wt456 , rx225, wb456, whisker);//top + lcd.filled_circle(col2, row2 , rnose, nosecolor);//nose break; case 14: //POS_MUTEX.lock(); @@ -513,6 +739,21 @@ lcd.filled_circle(col3, row2 , rmole, fill); lcd.filled_circle(col2, row1 , rmole, mole); lcd.filled_circle(col2, row2 , rmole, mole); + + //face2 + lcd.line(lx125, eyey123 , lx225, eyey123, eyecolor);//left eye + lcd.line(rx125, eyey123 , rx225, eyey123, eyecolor);//right eye + lcd.line(lx125, wb123 , rx225, wt123, whisker);//bottom + lcd.line(lx125, wm123 , rx225, wm123, whisker);//middle + lcd.line(lx125, wt123 , rx225, wb123, whisker);//top + lcd.filled_circle(col2, row1 , rnose, nosecolor);//nose + //face5 + lcd.line(lx125, eyey456 , lx225, eyey456, eyecolor);//left eye + lcd.line(rx125, eyey456 , rx225, eyey456, eyecolor);//right eye + lcd.line(lx125, wb456 , rx225, wt456, whisker);//bottom + lcd.line(lx125, wm456 , rx225, wm456, whisker);//middle + lcd.line(lx125, wt456 , rx225, wb456, whisker);//top + lcd.filled_circle(col2, row2 , rnose, nosecolor);//nose break; } wait(0.5); @@ -520,6 +761,7 @@ lcd.text_string("Score: ", 1, 15, FONT_7X8, GREEN); lcd.printf("%d",score); } + // clear the lcd screen lcd.cls(); wait(0.5);