Simon: A Memory Game

Dependencies:   4DGL-uLCD-SE PinDetect mbed

Revision:
2:c92f0e749b94
Parent:
1:cd222334a4fe
--- a/main.cpp	Tue Oct 21 14:01:21 2014 +0000
+++ b/main.cpp	Tue Oct 21 15:29:16 2014 +0000
@@ -28,6 +28,7 @@
 
 // analog input for seeding rand() function
 AnalogIn adcReading(p18);
+AnalogIn pot(p19);
 
 // variable declarations
 int levels[16];
@@ -38,6 +39,7 @@
 int failed;
 int start = 1;
 int randomSeed;
+float volume;
 
 // function prototypes
 void enableInterrupts();
@@ -62,6 +64,8 @@
     
     while(1) {
         
+        volume = pot.read();
+        
         // only initialize these variables at the start of each game
         if(start == 1){
             failed = 0;
@@ -83,7 +87,8 @@
         // wait in this loop until the user pushes buttons the same number of times as the current level
         // or until the user has pushed an incorrect button
         while(buttonPushes != level && failed == 0){
-            wait(0.5);
+            volume = pot.read();
+            wait(0.1);
         }
         
         // if the user has failed, disable the pushbutton interrupts, notify the user that they failed,
@@ -96,7 +101,7 @@
         
         // if the user has completed all of the levels without failing, disable the pushbutton interrupts,
         // notify the user that they won, and set start=1 so that the game restarts from level 1
-        if(level == 5 && failed == 0){
+        if(level == 10 && failed == 0){
             disableInterrupts();
             endGame();
             start = 1;
@@ -215,25 +220,25 @@
         switch(levels[i]){
             case 1:
                 led1 = 1;
-                mySpeaker.PlayNote(659.26, 0.50, 0.2);
+                mySpeaker.PlayNote(659.26, 0.50, volume);
                 led1 = 0;
                 wait(0.025);
                 break;
             case 2:
                 led2 = 1;
-                mySpeaker.PlayNote(554.00, 0.50, 0.2);
+                mySpeaker.PlayNote(554.00, 0.50, volume);
                 led2 = 0;
                 wait(0.025);
                 break;
             case 3:
                 led3 = 1;
-                mySpeaker.PlayNote(440.00, 0.50, 0.2);
+                mySpeaker.PlayNote(440.00, 0.50, volume);
                 led3 = 0;
                 wait(0.025);
                 break;
             case 4:
                 led4 = 1;
-                mySpeaker.PlayNote(329.63, 0.50, 0.2);
+                mySpeaker.PlayNote(329.63, 0.50, volume);
                 led4 = 0;
                 wait(0.025);
                 break;
@@ -253,7 +258,7 @@
     buttonPushes++;
     
     led1 = 1;
-    mySpeaker.PlayNote(659.26, 0.25, 0.2);
+    mySpeaker.PlayNote(659.26, 0.25, volume);
     led1 = 0;
     
     if(levels[buttonPushes-1] != 1){
@@ -268,7 +273,7 @@
     buttonPushes++;
     
     led2 = 1;
-    mySpeaker.PlayNote(554.00, 0.25, 0.2);
+    mySpeaker.PlayNote(554.00, 0.25, volume);
     led2 = 0;
     
     if(levels[buttonPushes-1] != 2){
@@ -283,7 +288,7 @@
     buttonPushes++;
     
     led3 = 1;
-    mySpeaker.PlayNote(440.00, 0.25, 0.2);
+    mySpeaker.PlayNote(440.00, 0.25, volume);
     led3 = 0;
     
     if(levels[buttonPushes-1] != 3){
@@ -298,7 +303,7 @@
     buttonPushes++;
     
     led4 = 1;
-    mySpeaker.PlayNote(329.63, 0.25, 0.2);
+    mySpeaker.PlayNote(329.63, 0.25, volume);
     led4 = 0;
     
     if(levels[buttonPushes-1] != 4){
@@ -320,10 +325,10 @@
     uLCD.printf("Over");
     
     
-    mySpeaker.PlayNote(147.00, 0.60, 1);
-    mySpeaker.PlayNote(139.00, 0.60, 1);
-    mySpeaker.PlayNote(131.00, 0.60, 1);
-    mySpeaker.PlayNote(123.00, 1.60, 1);
+    mySpeaker.PlayNote(147.00, 0.60, volume);
+    mySpeaker.PlayNote(139.00, 0.60, volume);
+    mySpeaker.PlayNote(131.00, 0.60, volume);
+    mySpeaker.PlayNote(123.00, 1.60, volume);
     
 }
 
@@ -341,42 +346,42 @@
     
     int time = 0.01;
     
-    mySpeaker.PlayNote(392.00, 0.33, 0.2);
+    mySpeaker.PlayNote(392.00, 0.33, volume);
     wait(time);
-    mySpeaker.PlayNote(349.23, 0.17, 0.2);
+    mySpeaker.PlayNote(349.23, 0.17, volume);
     wait(time);
     
-    mySpeaker.PlayNote(311.13, 0.33, 0.2);
+    mySpeaker.PlayNote(311.13, 0.33, volume);
     wait(time);
-    mySpeaker.PlayNote(311.13, 0.17, 0.2);
+    mySpeaker.PlayNote(311.13, 0.17, volume);
     wait(time);
-    mySpeaker.PlayNote(311.13, 0.33, 0.2);
+    mySpeaker.PlayNote(311.13, 0.33, volume);
     wait(time);
-    mySpeaker.PlayNote(349.23, 0.17, 0.2);
+    mySpeaker.PlayNote(349.23, 0.17, volume);
     wait(time);
     
-    mySpeaker.PlayNote(392.00, 0.33, 0.2);
+    mySpeaker.PlayNote(392.00, 0.33, volume);
     wait(time);
-    mySpeaker.PlayNote(392.00, 0.17, 0.2);
+    mySpeaker.PlayNote(392.00, 0.17, volume);
     wait(time);
-    mySpeaker.PlayNote(392.00, 0.165, 0.2);
+    mySpeaker.PlayNote(392.00, 0.165, volume);
     wait(time);
-    mySpeaker.PlayNote(349.23, 0.165, 0.2);
+    mySpeaker.PlayNote(349.23, 0.165, volume);
     wait(time);
-    mySpeaker.PlayNote(311.13, 0.17, 0.2);
+    mySpeaker.PlayNote(311.13, 0.17, volume);
     wait(time);
     
-    mySpeaker.PlayNote(349.23, 0.165, 0.2);
+    mySpeaker.PlayNote(349.23, 0.165, volume);
     wait(time);
-    mySpeaker.PlayNote(392.00, 0.165, 0.2);
+    mySpeaker.PlayNote(392.00, 0.165, volume);
     wait(time);
-    mySpeaker.PlayNote(349.23, 0.17, 0.2);
+    mySpeaker.PlayNote(349.23, 0.17, volume);
     wait(time);
-    mySpeaker.PlayNote(311.13, 0.33, 0.2);
+    mySpeaker.PlayNote(311.13, 0.33, volume);
     wait(time);
-    mySpeaker.PlayNote(293.66, 0.17, 0.2);
+    mySpeaker.PlayNote(293.66, 0.17, volume);
     wait(time);
     
-    mySpeaker.PlayNote(311.13, 0.5, 0.2);
+    mySpeaker.PlayNote(311.13, 0.5, volume);
     
 }
\ No newline at end of file