A retro gaming programme, designed for use on a portable embedded system. Incorporates power saving techniques.

Dependencies:   ConfigFile N5110 PowerControl beep mbed

Revision:
17:242ccf6a8442
Parent:
16:93ae2f311fd8
Child:
18:c38e1966d870
--- a/tower.h	Fri Apr 17 21:26:52 2015 +0000
+++ b/tower.h	Sat Apr 18 00:42:44 2015 +0000
@@ -6,8 +6,8 @@
 N5110 lcd(p7,p8,p9,p10,p11,p13,p22);
 
 // timers to check state of buttons
-Ticker timer;//buttonA
-Ticker timer2;//buttonB
+Ticker timerA;//buttonA
+Ticker timerB;//buttonB
 
 // create buzzer objecct
 Beep buzzer(p21);
@@ -30,6 +30,9 @@
 
 // Globabl Variables /////////////////////////
 
+// sound FX toggle
+int FX = 0;
+
 // timer flags to check state of buttons
 int buttonFlagA = 0;
 int buttonFlagB = 0;
@@ -441,10 +444,24 @@
     lcd.refresh();
 }
 
+// beep/light when buttons are closed
+void actionButtons()
+{
+    if((FX == 0)&&(buttonA||buttonB)) {
+        ledY = 1;
+        buzzer.beep(1500,0.3);
+    }
+    if (buttonA || buttonB) {
+        ledY = 1;
+    } else {
+        ledY = 0;
+    }
+}
+
 // presents main menu options
 void mainMenu(int& mainOption)
 {
-    //actionButtons();//set audible/light for button
+    actionButtons();//set audible/light for button
 
     // joystick selection
     if (printFlag) {//if flag set, clear flag and print joystick values to serial port
@@ -554,7 +571,7 @@
 // presents exit menu options
 void exitMenu(int& exitOption)
 {
-    //actionButtons();
+    actionButtons();
     if (printFlag) {//if flag set, clear flag and print joystick values to serial port
         printFlag = 0;
 
@@ -657,7 +674,7 @@
 // present difficulty options
 void difficultyMenu(int& subOption)
 {
-    //actionButtons();
+    actionButtons();
 
     // joystick selection
     if (printFlag) {//if flag set, clear flag,print joystick values
@@ -729,7 +746,7 @@
 // present sound FX options
 void soundFXMenu(int& fxOption)
 {
-    //actionButtons();
+    actionButtons();
 
     // joystick selection
     if (printFlag) {//if flag set, clear flag,print joystick values
@@ -752,26 +769,30 @@
             serial.printf(" CENTRE\n");
         if (joystick.direction == UNKNOWN)
             serial.printf(" Unsupported direction\n");
+    }
 
-        // 'ON' option 1
-        if (fxOption == 0) {
-            lcd.drawCircle(72,27,2,1);
-            refreshCursor1();
-            refreshCursor3();
+    // 'ON' option 1
+    if (fxOption == 0) {
+        lcd.drawCircle(72,27,2,1);//draw cursor 'ON'
+        refreshCursor1();
+        refreshCursor3();
 
-            if(buttonA == 1) { //select normal
-                //  fall = 2;
-            }
+        if(buttonFlagA) {
+            buttonFlagA =0;
+            FX = 0;
+            serial.printf("FX = %d",FX);
         }
-        // 'OFF' option 2
-        if (fxOption == 1) {
-            lcd.drawCircle(72,35,2,1);
-            refreshCursor1();
-            refreshCursor2();
+    }
+    // 'OFF' option 2
+    if (fxOption == 1) {
+        lcd.drawCircle(72,35,2,1);//draw cursor 'OFF'
+        refreshCursor1();
+        refreshCursor2();
 
-            if(buttonA == 1) { //select difficult
-                //fall = 3;
-            }
+        if(buttonFlagA) {
+            buttonFlagA =0;
+            FX = 1;
+            serial.printf("FX = %d",FX);
         }
     }
 }
@@ -791,7 +812,7 @@
 // actual game
 void game(int& exitFlag, int& exitOption)
 {
-    //actionButtons();
+    actionButtons();
     lcd.clear();//clears screen
     backGround();//draw background
 
@@ -803,7 +824,7 @@
         if (length <= 14)  //ensure length is smaller than screen
             lcd.printString(buffer,3,0);//display
 
-        //actionButtons();
+        actionButtons();
         pixelNinja();//set character
         hazards();//initiates hazards
         hazardFall();//increments hazards towards floor
@@ -875,12 +896,12 @@
                 resetGame();
                 break;
             }
-            //wait(0.05);
             startrek();//clears unset pixels, keeps set pixels
-            
+
 
 /// Exit Menu (Back button pressed)///
             if(buttonB == 1) {
+                actionButtons();
                 drawExitMenu();//draws the exit menu
 
                 while(1) {
@@ -888,7 +909,7 @@
 
                     // 'exit' option YES
                     if((buttonA == 1)&&(exitOption == 0)) { //returns to menu
-      //                  actionButtons();
+                        actionButtons();
                         lcd.clear();//clears screen
                         resetGame();//resets scores/objects
                         exitFlag = 1;//sets exit flag
@@ -914,7 +935,7 @@
 // high scores screen
 void scores()
 {
-    //actionButtons();
+    actionButtons();
     lcd.clear();//clear screen
     backGround();//set background
     lcd.printString("High Scores",10,0);//title
@@ -936,7 +957,7 @@
         lcd.printString(highScore3,5,4);//display
 
     while(1) {
-      //  actionButtons();//select
+        actionButtons();//select
 
         // back to menu
         if(buttonB == 1) {
@@ -952,22 +973,22 @@
     int option = 0;
     int subOption = 0;
     int fxOption = 0;
-    //actionButtons();
+    actionButtons();
     drawOptionsMenu();//draws options menu
     // counters for navigation
-    
+
     while(1) {
-        //actionButtons();
+        actionButtons();
         optionsMenu(option);//presents options
 
 ////////////////////// difficulty menu ////////////////////////////////////
         if ((option == 0)&&(buttonFlagA)) {
             buttonFlagA = 0;//reset flag
-            //actionButtons();
+            actionButtons();
             drawDifficultyMenu();//draws difficulty menu
 
             while(1) {
-              //  actionButtons();
+                actionButtons();
                 difficultyMenu(subOption);//presents difficulty options
 
                 if(buttonFlagB) {
@@ -975,18 +996,19 @@
                     lcd.clear();//clear screen
                     break;//return back
                 }
+                sleep();//put while to sleep
             }
-        drawOptionsMenu();
+            drawOptionsMenu();
         }
 ///////////////////// sound FX menu //////////////////////////////////////
         if((option ==1)&&(buttonFlagA)) {
             buttonFlagA = 0;//reset flag
-            //actionButtons();
+            actionButtons();
             drawSoundFXMenu();//draw menu
 
             while(1) {
-               // actionButtons();
-                soundFXMenu(fxOption);
+                actionButtons();
+                soundFXMenu(fxOption);//presents options
 
                 // back to options menu
                 if(buttonFlagB) {
@@ -994,6 +1016,7 @@
                     lcd.clear();//clear screen
                     break;//return back
                 }
+                sleep();//put while to sleep
             }
             drawOptionsMenu();
         }
@@ -1003,6 +1026,7 @@
             lcd.clear();//clear
             break;//return back
         }
+    sleep();//put while to sleep
     }
 }