Snake game for a 5x5 LED matrix
Revision 0:dc906408980e, committed 2013-10-09
- Comitter:
- dhamilton31
- Date:
- Wed Oct 09 16:23:20 2013 +0000
- Child:
- 1:5fcb94bb03db
- Commit message:
- Snake movement completed, along with options to turn LEDs on and off with ledCube class.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bodyPiece.h Wed Oct 09 16:23:20 2013 +0000
@@ -0,0 +1,10 @@
+#ifndef __BODYPIECE_H__ // if x.h hasn't been included yet...
+#define __BODYPIECE_H__ // #define this so the compiler knows it has been included
+
+
+class bodyPiece{
+ public:
+ char currRow, currCol;
+};
+
+#endif // __BODYPIECE_H__
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/draw.h Wed Oct 09 16:23:20 2013 +0000 @@ -0,0 +1,1 @@ +#include "mbed.h"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ledCube.cpp Wed Oct 09 16:23:20 2013 +0000
@@ -0,0 +1,51 @@
+#include "ledCube.h"
+#include "ledValues.h"
+
+// Set up the ledArray output pins
+ledCube::ledCube(){
+ ledArray[0][0] = new DigitalOut(P000);
+ ledArray[0][1] = new DigitalOut(P001);
+ ledArray[0][2] = new DigitalOut(P002);
+ ledArray[0][3] = new DigitalOut(P003);
+ ledArray[0][4] = new DigitalOut(P004);
+ ledArray[1][0] = new DigitalOut(P010);
+ ledArray[1][1] = new DigitalOut(P011);
+ ledArray[1][2] = new DigitalOut(P012);
+ ledArray[1][3] = new DigitalOut(P013);
+ ledArray[1][4] = new DigitalOut(P014);
+ ledArray[2][0] = new DigitalOut(P020);
+ ledArray[2][1] = new DigitalOut(P021);
+ ledArray[2][2] = new DigitalOut(P022);
+ ledArray[2][3] = new DigitalOut(P023);
+ ledArray[2][4] = new DigitalOut(P024);
+ ledArray[3][0] = new DigitalOut(P030);
+ ledArray[3][1] = new DigitalOut(P031);
+ ledArray[3][2] = new DigitalOut(P032);
+ ledArray[3][3] = new DigitalOut(P033);
+ ledArray[3][4] = new DigitalOut(P034);
+ ledArray[4][0] = new DigitalOut(P040);
+ ledArray[4][1] = new DigitalOut(P041);
+ ledArray[4][2] = new DigitalOut(P042);
+ ledArray[4][3] = new DigitalOut(P043);
+ ledArray[4][4] = new DigitalOut(P044);
+
+ lastLedLit = NULL;
+}
+
+// Light the LED at the specified row, column, layer coordinate
+void ledCube::lightLed(char row, char column, char layer){
+ //if(lastLedLit != NULL){
+ // *lastLedLit = 0;
+ //}
+ *ledArray[row][column] = 1;
+ //lastLedLit = ledArray[row][column];
+}
+
+void ledCube::turnOffLed(char row, char column, char layer){
+ *ledArray[row][column] = 0;
+}
+
+void ledCube::drawHorLine(char startRow, char startCol, char endRow, char endCol){
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ledCube.h Wed Oct 09 16:23:20 2013 +0000
@@ -0,0 +1,14 @@
+#include "mbed.h"
+
+class ledCube{
+public:
+ DigitalOut *ledArray[5][5];
+ int numRows, numCols;
+ ledCube();
+ void lightLed(char row, char column, char layer);
+ void drawHorLine(char startRow, char startCol, char endRow, char endCol);
+ void turnOffLed(char row, char column, char layer);
+
+private:
+ DigitalOut *lastLedLit;
+};
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ledValues.h Wed Oct 09 16:23:20 2013 +0000 @@ -0,0 +1,25 @@ +#define P000 PinName(p5) +#define P001 PinName(p6) +#define P002 PinName(p7) +#define P003 PinName(p8) +#define P004 PinName(p9) +#define P010 PinName(p10) +#define P011 PinName(p11) +#define P012 PinName(p12) +#define P013 PinName(p13) +#define P014 PinName(p14) +#define P020 PinName(p15) +#define P021 PinName(p16) +#define P022 PinName(p17) +#define P023 PinName(p18) +#define P024 PinName(p19) +#define P030 PinName(p20) +#define P031 PinName(p21) +#define P032 PinName(p22) +#define P033 PinName(p23) +#define P034 PinName(p24) +#define P040 PinName(p25) +#define P041 PinName(p26) +#define P042 PinName(p27) +#define P043 PinName(p28) +#define P044 PinName(p29) \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Wed Oct 09 16:23:20 2013 +0000
@@ -0,0 +1,13 @@
+#include "mbed.h"
+#include "ledCube.h"
+#include "snake.h"
+
+int main()
+{
+ ledCube cube;
+ snake mySnake(0, 0);
+
+ while(1) {
+
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Oct 09 16:23:20 2013 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/snake.cpp Wed Oct 09 16:23:20 2013 +0000
@@ -0,0 +1,51 @@
+#include "snake.h"
+#include "bodyPiece.h"
+#include <list>
+
+snake::snake(char startRow, char startCol){
+ bodyPiece head = bodyPiece();
+ head.currRow = startRow;
+ head.currCol = startCol;
+ snakeBody.push_back(head);
+}
+
+void snake::move(char newHeadRow, char newHeadCol){
+
+ // Variables to hold the bodyPiece's X and Y positions on the grid
+ char prevRow, prevCol, tempRow, tempCol;
+
+ // Store the snake's head into the iterator
+ std::list<bodyPiece>::iterator it=snakeBody.begin();
+ // Save the head's current Row and Col position
+ prevRow = (*it).currRow;
+ prevCol = (*it).currCol;
+ // Update the head to the new Row and Col
+ (*it).currRow = newHeadRow;
+ (*it).currCol = newHeadCol;
+ // Check to see if we are at the tail with this while loop
+ while(it != snakeBody.end()){
+ // Move to the next bodyPiece
+ it++;
+ // Store the previous piece's location in the current piece
+ tempRow = (*it).currRow;
+ (*it).currRow = prevRow;
+ tempCol = (*it).currCol;
+ (*it).currCol = prevCol;
+ prevRow = tempRow;
+ prevCol = tempCol;
+ }
+}
+
+void snake::addPiece(){
+ snakeBody.push_back(bodyPiece());
+}
+
+food::food(char row, char col){
+ currRow = row;
+ currCol = col;
+}
+
+void food::moveFood(char row, char col){
+ currRow = row;
+ currCol = col;
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/snake.h Wed Oct 09 16:23:20 2013 +0000
@@ -0,0 +1,30 @@
+#include "mbed.h"
+#include "bodyPiece.h"
+#include <list>
+
+
+typedef enum {
+ Up,Down,Left,Right
+} Direction;
+
+class snake
+{
+public:
+ snake(char startRow, char startCol);
+ void move(char newHeadRow, char newHeadCol);
+ int movementSpeed;
+ Direction movementDirection;
+ void addPiece();
+
+private:
+ std::list<bodyPiece> snakeBody;
+ int bodySize;
+};
+
+class food
+{
+public:
+ char currRow, currCol;
+ food(char row, char col);
+ void moveFood(char row, char col);
+};