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
Diff: main.cpp
- Revision:
- 12:825a402d230f
- Parent:
- 11:f8478bc749e0
- Child:
- 13:08159ea3d556
--- a/main.cpp Sun May 01 12:15:09 2016 +0000
+++ b/main.cpp Sun May 01 13:46:08 2016 +0000
@@ -15,66 +15,11 @@
// Connections to SD card holder on K64F (SPI interface)
SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
-//DigitalOut greenLed(PTC2);
-//DigitalOut redLed(PTA2);
-
-//Beep buzzer(PTA1);
-
-/* // timer to regularly read the joystick
+/// Serial for debug
+Serial serial(USBTX,USBRX);
Ticker pollJoystick;
-// Serial for debug
-Serial serial(USBTX,USBRX);
-
-Ticker gameTicker;
+//Ticker gameTicker;
-/// create enumerated type (0,1,2,3 etc. for current direction snake is travelling (not joystick reading))
-enum CurrentDirection {
- up,
- down,
- left,
- right,
- centre,
-};
-CurrentDirection currentDirection = centre; /// intialise direction at beginning
-
-int randomX = rand() % 83 + 1; // randomX in the range 1 to 81
-int randomY = rand() % 47 + 1; // randomY in the range 1 to 47
-int randomXoddEven = randomX%2; // find out whether odd or even
-int randomYoddEven = randomY%2;
-
-int snakeTailX[100];
-int snakeTailY[100];
-
-
-int snakeTailLength = 3;
-
-int score = 0;
-int top_score = 0;
-int fruitValue = 10;
-
-int i = 41; // snake head origin x
-int j = 23; // snake head origin y
-
-int prev_i;
-int prev_j;
-int prev2_i;
-int prev2_j;
-
-
-bool gamePlaying = false;
-
-// function prototypes
-void generateFood();
-void newFruitXY();
-void moveSnake();
-void hardWall();
-void specialMap();
-void wrapAround();
-void scoreCalculation();
-void gameOver();
-void initSnakeTail();
-void snakeIntro(); */
-
FILE *fp; // this is our file pointer
int main()
@@ -97,16 +42,13 @@
gamePlaying = true;
initSnakeTail();
- while(1) {
+ while(gamePlaying == true) {
+ //displayGame();
if (printFlag) { // if flag set, clear flag and print joystick values to serial port
- printFlag = 0;
- if (gamePlaying == true) {
- moveSnake();
- }
- else if (gamePlaying == false) {
- }
+ printFlag = 0;
+ moveSnake();
}
sleep(); // put the MCU to sleep until an interrupt wakes it up
}
@@ -190,7 +132,6 @@
prev_j = prev2_j;
}
-
if (currentDirection == left) { // shift snake head coordinates according to current direction
i -= 2; } // move left
@@ -211,8 +152,6 @@
lcd.drawRect(randomX,randomY,1,1,1); // food
hardWall();
- //specialMap();
- //wrapAround();
if (i == randomX && j == randomY) { // if fruit is eaten
greenLed = 0;
@@ -221,12 +160,13 @@
snakeTailLength++;
newFruitXY();
generateFood();
-
}
wait(0.1);
}
}
+
+
void hardWall() {
@@ -349,9 +289,9 @@
}
-/*void wrapAround() {
+void wrapAround() {
- if (i == -1) {
+ /* if (i == -1) {
i = 83;
}
if (i == 84) {
@@ -362,23 +302,9 @@
}
if (j+1 == 48) {
j+1 = 0;
- }
+ } */
- lcd.setPixel(i,j);
- lcd.setPixel(i,j+1);
- lcd.setPixel(i+1,j+1);
- lcd.setPixel(i+1,j);
- lcd.setPixel(prev_i,prev_j);
- lcd.setPixel(prev_i,prev_j+1);
- lcd.setPixel(prev_i+1,prev_j+1);
- lcd.setPixel(prev_i+1,prev_j);
- lcd.setPixel(prev2_i,prev2_j);
- lcd.setPixel(prev2_i,prev2_j+1);
- lcd.setPixel(prev2_i+1,prev2_j+1);
- lcd.setPixel(prev2_i+1,prev2_j);
-
- lcd.refresh();
-} */
+}
void scoreCalculation() {
@@ -438,4 +364,26 @@
lcd.clear();
- }
\ No newline at end of file
+ }
+
+ void gamePaused() {
+
+ if (pauseCount < 4 && button == 1) {
+ wait_ms(90);
+ pauseCount++;
+ 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();
+ }
+
+}
\ No newline at end of file