Snake game for a 5x5 LED matrix

Dependencies:   MCP23S17 mbed

Revision:
2:9c075a0a6d4e
Parent:
1:5fcb94bb03db
--- a/snake.cpp	Thu Oct 17 04:32:58 2013 +0000
+++ b/snake.cpp	Thu Oct 17 22:09:22 2013 +0000
@@ -4,7 +4,8 @@
 #include "ledCube.h"
 
 // Constructor
-snake::snake(char startRow, char startCol){
+snake::snake(char startRow, char startCol)
+{
     bodyPiece head = bodyPiece();
     head.currRow = startRow;
     head.currCol = startCol;
@@ -15,8 +16,9 @@
 }
 
 // Movement method for the snake, will update LEDs and snake's body
-char snake::move(char newHeadRow, char newHeadCol, ledCube cube){
-    
+char snake::move(char newHeadRow, char newHeadCol, ledCube *cube)
+{
+
     // Variables to hold the bodyPiece's X and Y positions on the grid
     char prevRow, prevCol, tempRow, tempCol;
 
@@ -24,15 +26,15 @@
     std::list<bodyPiece>::iterator it=snakeBody.begin();
     // Save the head's current Row and Col position
     prevRow = (*it).currRow;
-    prevCol = (*it).currCol; 
+    prevCol = (*it).currCol;
     // Update the head to the new Row and Col
     (*it).currRow = newHeadRow;
     (*it).currCol = newHeadCol;
-    cube.turnOffLed(prevRow, prevCol, 0);
-    cube.turnOnLed(newHeadRow, newHeadCol, 0);
+    (*cube).turnOffLed(prevRow, prevCol, 0);
+    (*cube).turnOnLed((*it).currRow, (*it).currCol, 0);
     char bodyCount = 1;
     // Check to see if we are at the tail with this while loop
-    while(bodyCount < bodySize){
+    while(bodyCount < bodySize) {
         // Move to the next bodyPiece
         it++;
         bodyCount++;
@@ -44,85 +46,84 @@
         prevRow = tempRow;
         prevCol = tempCol;
         // Check to see if the head has collided with this bodyPiece
-        if(snakeBody.front().currRow == prevRow && snakeBody.front().currCol == prevCol){
+        if(snakeBody.front().currRow == prevRow && snakeBody.front().currCol == prevCol) {
             return 1;
         }
-        if(prevRow < 5 && prevCol < 5){
-            cube.turnOffLed(prevRow, prevCol, 0);
+        if(prevRow < 5 && prevCol < 5) {
+            (*cube).turnOffLed(prevRow, prevCol, 0);
         }
-
-        cube.turnOnLed((*it).currRow, (*it).currCol, 0);
+        (*cube).turnOnLed((*it).currRow, (*it).currCol, 0);
     }
     return 0;
 }
 
 // Checks the current movement direction and decided where to move the snake head next
 // Will return 1 if out of bounds or if the head has hit a bodyPiece, 0 if still in the boundaries
-char snake::moveSnake(ledCube cube){
+char snake::moveSnake(ledCube *cube)
+{
     bodyPiece head = snakeBody.front();
     char ret = 0;
-    switch(movementDirection){
-    case Down:
-        if(head.currCol-1 < 0){
-            ret =  1;
-        }
-        else{
-            ret = move(head.currRow, head.currCol-1, cube);
-        }
-    break;
-    case Up:
-        if(head.currCol+1 > NUM_COLS){
-            ret = 1;
-        }
-        else{
-            ret = move(head.currRow, head.currCol+1, cube);
-        }
-    break;
-    case Left:
-        if(head.currRow-1 < 0){
-            ret = 1;
-        }
-        else{
-            ret = move(head.currRow-1, head.currCol, cube);
-        }
-    break;
-    case Right:
-        if(head.currRow+1 > NUM_ROWS){
-            ret = 1;
-        }
-        else{
-            ret = move(head.currRow+1, head.currCol, cube);
-        }
+    switch(movementDirection) {
+        case Down:
+            if(head.currCol+1 > NUM_COLS) {
+                ret =  1;
+            } else {
+                ret = move(head.currRow, head.currCol+1, cube);
+            }
+            break;
+        case Up:
+            if(head.currCol-1 < 0) {
+                ret = 1;
+            } else {
+                ret = move(head.currRow, head.currCol-1, cube);
+            }
+            break;
+        case Left:
+            if(head.currRow-1 < 0) {
+                ret = 1;
+            } else {
+                ret = move(head.currRow-1, head.currCol, cube);
+            }
+            break;
+        case Right:
+            if(head.currRow+1 > NUM_ROWS) {
+                ret = 1;
+            } else {
+                ret = move(head.currRow+1, head.currCol, cube);
+            }
     }
     return ret;
 }
 
 // Adds a new piece on to snake's tail
-void snake::addPiece(){
+void snake::addPiece()
+{
     bodyPiece b;
     snakeBody.push_back(b);
     bodySize++;
     printf("piece added + bodySize: %d\n", bodySize);
 }
 
-bool snake::isEating(char foodRow, char foodCol){
-    if(snakeBody.front().currRow == foodRow && snakeBody.front().currCol == foodCol){
+bool snake::isEating(char foodRow, char foodCol)
+{
+    if(snakeBody.front().currRow == foodRow && snakeBody.front().currCol == foodCol) {
         addPiece();
         return 1;
-    }
-    else{
+    } else {
         return 0;
     }
 }
 
 // Constructor for the food class
-food::food(char row, char col){
+food::food(char row, char col)
+{
     currRow = row;
     currCol = col;
 }
 
 // Moves food to a new row and column
-void food::moveFood(char row, char col){
+void food::moveFood(char row, char col)
+{
     currRow = row;
     currCol = col;
 }