A retro gaming programme, designed for use on a portable embedded system. Incorporates power saving techniques.
Dependencies: ConfigFile N5110 PowerControl beep mbed
Diff: main.cpp
- 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