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

Dependencies:   ConfigFile N5110 PowerControl beep mbed

Revision:
60:681bc941b94d
Parent:
59:be7a31cb8cd1
Child:
61:64077ba14f3c
--- a/main.cpp	Sat May 02 02:39:30 2015 +0000
+++ b/main.cpp	Sun May 03 22:26:11 2015 +0000
@@ -93,7 +93,6 @@
     RIGHT,
     CENTRE,
     UNKNOWN
-
 };
 
 //struct for Joystick
@@ -222,74 +221,157 @@
     //centre stick
     lcd.drawRect(a3,37,0,7,1);
     //back of the head
-    lcd.drawRect(a1,33,0,4,1);
+    lcd.drawRect(a4,33,0,4,1);
     //top of the head
-    lcd.drawRect(a1,33,4,0,1);
+    lcd.drawRect(a5,33,4,0,1);
     //jaw
-    lcd.drawRect(a2,38,2,0,1);
+    lcd.drawRect(a6,38,2,0,1);
     //right shoulder
-    lcd.drawRect(a4,40,1,0,1);
+    lcd.drawRect(a7,40,1,0,1);
     //left shoulder
-    lcd.drawRect(a5,40,1,0,1);
+    lcd.drawRect(a8,40,1,0,1);
     //left arm
-    lcd.drawRect(a5,41,0,1,1);
+    lcd.drawRect(a9,41,0,1,1);
     //right arm
-    lcd.drawRect(a6,41,0,1,1);
+    lcd.drawRect(a10,41,0,1,1);
     //right eye
-    lcd.drawRect(a6,35,0,0,1);
+    lcd.drawRect(a11,35,0,0,1);
     //mouth piece
-    lcd.drawRect(a6,37,0,0,1);
+    lcd.drawRect(a12,37,0,0,1);
     //left eye
-    lcd.drawRect(a2,35,0,0,1);
+    lcd.drawRect(a13,35,0,0,1);
     //sword handle
-    lcd.drawRect(a7,36,0,0,1);
-    lcd.drawRect(a5,37,0,0,1);
-    lcd.drawRect(a8,38,0,0,1);
-
+    lcd.drawRect(a14,36,0,0,1);
+    lcd.drawRect(a15,37,0,0,1);
+    lcd.drawRect(a16,38,0,0,1);
+   
     lcd.refresh();
 }
 
 //stops ninja going through walls
 void ninjaBoundaries()
 {
-    if(a6 > 79 )
-        a6 = 79;
-    if(a4 > 78)
-        a4 = 78;
-    if(a2 > 77)
-        a2 = 77;
-    if(a3 > 76)
-        a3 = 76;
-    if(a1 > 75)
-        a1 = 75;
-    if(a8 > 74)
-        a8 = 74;
-    if(a5 > 73)
-        a5 = 73;
-    if(a7 > 72)
-        a7 = 72;
-
-    if(a6 < 11 )
-        a6 = 11;
-    if(a4 < 10)
-        a4 = 10;
-    if(a2 < 9)
-        a2 = 9;
-    if(a3 < 8)
-        a3 = 8;
-    if(a1 < 7)
-        a1 = 7;
-    if(a8 < 6)
-        a8 = 6;
-    if(a5 < 5)
-        a5 = 5;
-    if(a7 < 4)
-        a7 = 4;
+    //right eye
+    if(a11 > 80 )
+        a11 = 80;
+    //mouth piece
+    if(a12 > 80)
+        a12 = 80;
+    //right arm
+    if(a10> 80)
+        a10 = 80;
+    //right shoulder
+    if(a7 > 79)
+        a7 = 79;        
+    //right leg    
+    if(a2 > 78)
+        a2 = 78;
+    //jaw    
+    if(a6 > 78)
+        a6 = 78;
+    //left eye
+    if(a13 > 78)
+        a13 = 78;  
+    //centre    
+    if(a3 > 77)
+        a3 = 77;
+    //back of the head
+    if(a4 > 76 )
+     a4= 76;
+     //topf of the head
+     if(a5 > 76)
+     a5 = 76;
+    //left leg
+    if(a1>76)
+    a1 = 76;
+    //sword
+    if(a16>75)
+    a16 = 75;
+    //left shoulder
+    if(a8 >74)
+    a8 = 74;
+    //left arm
+    if(a9>74)
+    a9 = 74;
+    //sword
+    if(a15>74)
+    a15 = 74;
+    //sword
+    if(a14 > 73)
+    a14 = 73;
+    
+    //right eye
+    if(a11 < 5 )
+        a11 = 5;
+    //mouth piece
+    if(a12 < 3)
+        a12 = 3;
+    //right arm
+    if(a10< 9)
+        a10 = 9;
+    //right shoulder
+    if(a7 < 8)
+        a7 = 8;        
+    //right leg    
+    if(a2 < 7)
+        a2 = 7;
+    //jaw    
+    if(a6 < 3)
+        a6 = 3;
+    //left eye
+    if(a13 < 3)
+        a13 = 3;  
+    //centre    
+    if(a3 < 6)
+        a3 = 6;
+    //back of the head
+    if(a4 < 7)
+     a4= 7;
+     //top of the head
+     if(a5 < 3)
+     a5 = 3;
+    //left leg
+    if(a1 < 5)
+    a1 = 5;
+    //sword
+    if(a16 < 8)
+    a16 = 8;
+    //left shoulder
+    if(a8 < 3)
+    a8 = 3;
+    //left arm
+    if(a9 < 3)
+    a9 = 3;
+    //sword
+    if(a15 < 9)
+    a15 = 9;
+    //sword
+    if(a14 < 10)
+    a14 = 10;     
 }
 
 //resets variables initial values when game ends or is exited
 void resetGame()
 {
+
+    //global variables for movement (pixelNinja)
+    a1 = 22;
+    a2 = 24;
+    a3 = 23;
+    a4 = 22;
+    a5 = 22;
+    a6 = 24;
+    a7 = 25;
+    a8 = 20;
+    a9 = 20;
+    a10 = 26;
+    a11 = 26;
+    a12 = 26;
+    a13 = 24;
+    a14 = 19;
+    a15 = 20;
+    a16 = 21;
+    
     score = 0;
 
     a1 = 22;
@@ -590,6 +672,48 @@
     }
 }
 
+//ninja go left
+void ninjaLeft()
+{
+    a1 = a1-=2;
+    a2 = a2-=2;
+    a3 = a3-=2;
+    a4 = a3 + 1;
+    a5 = a3-3;
+    a6 = a3-3;
+    a7 = a7-=2;
+    a8 = a8-=2;
+    a9 = a9-=2;
+    a10 = a10-=2;
+    a11 = a3-1;
+    a12 = a3-3;
+    a13 = a3-3;
+    a14 = a3+4;
+    a15 = a3+3;
+    a16 = a3+2;
+}
+
+//ninja go right
+void ninjaRight()
+{
+    a1 = a1+=2;
+    a2 = a2+=2;
+    a3 = a3+=2;
+    a4 = a3-1;
+    a5 = a3-1;
+    a6 = a3+1;
+    a7 = a7+=2;
+    a8 = a8+=2;
+    a9 = a9+=2;
+    a10 = a10+=2;
+    a11 = a3+3;
+    a12 = a3+3;
+    a13 = a3+1;
+    a14 = a3-4;
+    a15 = a3-3;
+    a16 = a3-2;
+}
+
 //draws exit menu
 void drawExitMenu()
 {
@@ -949,36 +1073,21 @@
 
         actionButtons();
         drawNinja();//set character
-        drawHazards();//initiates hazards
+        //drawHazards();//initiates hazards
         hazardFall();//increments hazards towards floor
         wait(0.1);//slow down objects
 
         if (printFlag) {  //if flag set, clear flag and print joystick values to serial port
             printFlag = 0;
-
+            if (joystick.direction == RIGHT) {
+                serial.printf(" RIGHT\n");
+                ninjaRight();//move right
+                ninjaBoundaries();
+            }
             //check joystick direction
             if (joystick.direction == LEFT) {
                 serial.printf(" LEFT\n");
-                a1 = a1-=2;
-                a2 = a2-=2;
-                a3 = a3-=2;
-                a4 = a4-=2;
-                a5 = a5-=2;
-                a6 = a6-=2;
-                a7 = a7-=2;
-                a8 = a8-=2;
-                ninjaBoundaries();
-            }
-            if (joystick.direction == RIGHT) {
-                serial.printf(" RIGHT\n");
-                a1 = a1+=2;
-                a2 = a2+=2;
-                a3 = a3+=2;
-                a4 = a4+=2;
-                a5 = a5+=2;
-                a6 = a6+=2;
-                a7 = a7+=2;
-                a8 = a8+=2;
+                ninjaLeft();//move left
                 ninjaBoundaries();
             }
             if (joystick.direction == CENTRE)
@@ -1107,6 +1216,8 @@
     while(1) {
         actionButtons();
         optionsMenu(option);//presents options
+        
+        newButtonA = buttonFlagA;
 
 //////////////////////difficulty menu ////////////////////////////////////
         if ((option == 0)&&(buttonFlagA)) {
@@ -1212,8 +1323,9 @@
 
     buttonA.mode(PullDown);//pull down buttonA
     buttonB.mode(PullDown);//pull down buttonB
-    write();
-    read();
+    
+    write();//write to memory
+    read();//read from memory
 
     int exitFlag = 0;//exit flag
     int mainOption = 0;//counter for main menu