
Completed Snake Program
Dependencies: N5110 PinDetect PowerControl mbed
Fork of DocTest by
Diff: main.cpp
- Revision:
- 5:1bfc306466db
- Parent:
- 4:551dea241d0a
- Child:
- 6:1de103a19681
diff -r 551dea241d0a -r 1bfc306466db main.cpp --- a/main.cpp Tue Apr 14 15:34:37 2015 +0000 +++ b/main.cpp Wed Apr 15 16:34:05 2015 +0000 @@ -25,9 +25,52 @@ vector<int> snakeX (5); vector<int> snakeY (5,27); +int food[2];//element 0 = x position element 1= y position +void randomiseFood(){ + + srand(time(NULL)); + + int randomX = rand() %84; // generate random number between 0 and 83 + int randomY = rand() %47;// generate random number betwwen 0 and 46 + + if (lcd.getPixel(randomX,randomY)==1){ // if that pixel is already filled + + randomX = rand() %83 ; // generate new random numbers + randomY = rand() %47 ;// + + + } + lcd.setPixel(randomX,randomY) ;// set the food + food[0]=randomX; // update food position + food[1]=randomY;// update food position + lcd.refresh(); + + } - + // snakeX.insert(snakeX.begin() , 60); + // snakeY.insert(snakeY.begin() , 60 ); + // snakeX.push_front(30); + // snakeY.push_front(30); + + +void checkForFood(){ + + if (snakeX.back()==food[0] && snakeY.back()==food[1]){ // if x and y of head match food + + snakeX.push_back(food[0]+1); + snakeY.push_back(food[1]); + + + // snakeX.insert (snakeX.begin() + 0, ); + //snakeY.insert (snakeY.begin() + 0, ); + + randomiseFood(); + + } + + + } //snakeX[4]=21; @@ -175,32 +218,32 @@ switch(joystick.direction){ - case UP:snakeX[4]=snakeX[3]; - snakeY[4]=snakeY[3]-1; + case UP:snakeX[snakeX.size()-1]=snakeX[snakeX.size()-2]; + snakeY[snakeY.size()-1]=snakeY[snakeY.size()-2]-1; break; case DOWN: - snakeX[4]=snakeX[3]; - snakeY[4]=snakeY[3]+1; + snakeX[snakeX.size()-1]=snakeX[snakeX.size()-2]; + snakeY[snakeY.size()-1]=snakeY[snakeY.size()-2]+1; break; case LEFT: - snakeX[4]=snakeX[3]-1; - snakeY[4]=snakeY[3]; + snakeX[snakeX.size()-1]=snakeX[snakeX.size()-2]-1; + snakeY[snakeY.size()-1]=snakeY[snakeY.size()-2]; break; case RIGHT: - snakeX[4]=snakeX[3]+1; - snakeY[4]=snakeY[3]; + snakeX[snakeX.size()-1]=snakeX[snakeX.size()-2]+1; + snakeY[snakeY.size()-1]=snakeY[snakeY.size()-2]; break; case CENTRE: - snakeX[4]=snakeX[3]+1; - snakeY[4]=snakeY[3]; + snakeX[snakeX.size()-1]=snakeX[snakeX.size()-2]+1; + snakeY[snakeY.size()-1]=snakeY[snakeY.size()-2]; break; case UNKNOWN: - snakeX[4]=snakeX[3]+1; - snakeY[4]=snakeY[3]; + snakeX[snakeX.size()-1]=snakeX[snakeX.size()-2]+1; + snakeY[snakeY.size()-1]=snakeY[snakeY.size()-2]; break; @@ -381,6 +424,15 @@ void updateGameISR(){ updateGameFlag=1; } + + void printVectorContent(){ + + + for( int i=0; i<snakeX.size(); i++) + serial.printf( "%d \n \r" ,snakeX[i]); + + + } int main() { @@ -416,7 +468,9 @@ pollJoystick.detach(); startGame.attach(&updateGameISR,0.1); startingSnake(); + randomiseFood(); lcd.refresh(); + //init game start time back food while (1){ if(updateGameFlag==1){ @@ -432,7 +486,14 @@ } lcd.refresh(); previousDirection=joystick.direction; - checkForCollision(); + + checkForCollision(); + checkForFood(); + + + //serial.printf("%d",snakeX.size()); + // printVectorContent(); + } }