Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Joystick N5110 SDFileSystem beep fsmMenu mbed
Fork of SnakeProjectRev1 by
Diff: main.cpp
- Revision:
- 14:56e355c5cfc9
- Parent:
- 13:08159ea3d556
- Child:
- 15:a5590211888c
--- a/main.cpp Sun May 01 14:43:01 2016 +0000 +++ b/main.cpp Sun May 01 16:50:37 2016 +0000 @@ -18,16 +18,16 @@ /// Serial for debug Serial serial(USBTX,USBRX); Ticker pollJoystick; -//Ticker gameTicker; +Ticker gameTicker; + +volatile int game_timer_flag = 0; FILE *fp; // this is our file pointer -int main() -{ +void timer_isr(); - wait(1); - - +int main() +{ calibrateJoystick(); // get centred values of joystick pollJoystick.attach(&updateJoystick,0.5/10.0); // read joystick 20 times per second @@ -37,16 +37,29 @@ redLed = 0; lcd.init(); //snakeIntro(); - hardWall(); + //hardWall(); + wrapAround(); generateFood(); gamePlaying = true; initSnakeTail(); + button.rise(&buttonISR); + gameTicker.attach(&timer_isr,0.1); while(gamePlaying == true) { - gameLogic(); + lcd.setBrightness(1-pot); // turn pot right for brightness + if (buttonFlag) { + buttonFlag = 0; + if (pauseCount < 3) { + gamePaused(); + } + } + + if(game_timer_flag) { + game_timer_flag = 0; + gameLogic(); + } if (printFlag) { // if flag set, clear flag and print joystick values to serial port - printFlag = 0; moveSnake(); } @@ -57,14 +70,10 @@ void generateFood() { - while (randomXoddEven ==0 || randomYoddEven ==0 || lcd.getPixel(randomX,randomY) >= 1) { // do while x or y is even or pixel is on + while (randomXoddEven ==1 || randomYoddEven ==1 || lcd.getPixel(randomX,randomY) >= 1) { // do while x or y is even or pixel is on randomX = rand() % 83 + 1; // randomX in the range 1 to 83 - randomY = rand() % 47 + 1; // randomY in the range 1 to 47 - - // serial.printf("X = %i\n",randomX); // debug - // serial.printf("Y = %i\n\n",randomY); - + randomY = rand() % 47 + 1; // randomY in the range 1 to 47 randomXoddEven = randomX%2; // find out whether odd or even randomYoddEven = randomY%2; } @@ -152,7 +161,8 @@ lcd.refresh(); lcd.drawRect(randomX,randomY,1,1,1); // food - hardWall(); + //hardWall(); + wrapAround(); if (i == randomX && j == randomY) { // if fruit is eaten greenLed = 0; @@ -162,7 +172,7 @@ newFruitXY(); generateFood(); } - wait(0.1); + } @@ -289,18 +299,18 @@ void wrapAround() { - /* if (i == -1) { - i = 83; + if (i == -2) { + i = 82; } if (i == 84) { i = 0; } - if (j == -1) { - j = 47; + if (j == -2) { + j = 46; } - if (j+1 == 48) { - j+1 = 0; - } */ + if (j == 48) { + j = 0; + } } @@ -366,22 +376,29 @@ void gamePaused() { - if (pauseCount < 4 && button == 1) { - wait_ms(90); + wait_ms(100); pauseCount++; - gamePlaying = false; + //gamePlaying = false; lcd.clear(); - lcd.printString("Paused",27,1); - char buffer[14]; int length = sprintf(buffer,"%i left",3-pauseCount); // number of pauses left if (length <= 14) { // if string will fit on display - lcd.printString(buffer,27,3); } // display on screen - } - if(button == 1) { - wait_ms(50); - gamePlaying = true; - moveSnake(); - } - + lcd.printString(buffer,24,3); } // display on screen + + lcd.printString("Paused 5",18,1); + wait(1); + lcd.printString("Paused 4",18,1); + wait(1); + lcd.printString("Paused 3",18,1); + wait(1); + lcd.printString("Paused 2",18,1); + wait(1); + lcd.printString("Paused 1",18,1); + wait(1); + +} + +void timer_isr() +{ +game_timer_flag = 1; } \ No newline at end of file