Ahmed Adamjee
/
SnakeVSBlock
Snake vs Block Game to be run upon K64F.
SnakevsBlock/SnakevsBlock.cpp
- Committer:
- AhmedPlaymaker
- Date:
- 2019-03-30
- Revision:
- 10:751bd953fa27
- Parent:
- 9:d1d79d4ee673
- Child:
- 12:1e601b176437
File content as of revision 10:751bd953fa27:
#include "SnakevsBlock.h" SnakevsBlock::SnakevsBlock() { } SnakevsBlock::~SnakevsBlock() { } void SnakevsBlock::init() { //The snake length configuration and all the other initial information passing will be done here length=3; foodbuff=0; } void SnakevsBlock::read_input(Gamepad &pad) { _d = pad.get_direction(); //Obtains Direction pushed towards on Joystick. _mag = pad.get_mag(); //Obtains Magnitude of Joystick. } void SnakevsBlock::draw(N5110 &lcd, Gamepad &pad) { _s.draw(lcd, length); //Draws the Snake. //Make these snake buffs relative to the snake drops which in turn relate to the game speed if(foodbuff >=0) { _f.draw(lcd); //Draws the first food. if(foodbuff >=50) { _ff.draw(lcd); //Draws the second food. if(foodbuff >=80) { _fff.draw(lcd); //Draws the third food. } } foodbuff +=1; if(foodbuff == 110) { foodbuff = 110; } } _b.draw(lcd, length); //Code to print length on game screen. char bufferscore[14]; sprintf(bufferscore,"%d",length); lcd.printString(bufferscore,1,0); if(pad.check_event(Gamepad::BACK_PRESSED)){ //Waits for Back button to be pressed. NVIC_SystemReset(); //Software Reset. } } void SnakevsBlock::update(Gamepad &pad) //Updates objects on screen. { _s.update(_d,_mag, length); _f.update(); _ff.update(); _fff.update(); _b.update(); CheckSnakeFoodCollision(pad); //Function checks for when the snake collides with it's food. } void SnakevsBlock::get_pos() { Vector2D snake_pos = _s.get_pos(length); //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite // 81.000000 0.000000 top right // 0.000000 0.000000 is top left // 81.000000 45.000000 bottom right snakex = snake_pos.x; snakey = snake_pos.y; //printf("snakexy in GAME = %d %d \n", snakex, snakey); } void SnakevsBlock::CheckSnakeFoodCollision(Gamepad &pad) { //Obtains all required coordinates. Vector2D f_pos = _f.get_pos(); Vector2D ff_pos = _ff.get_pos(); Vector2D fff_pos = _fff.get_pos(); Vector2D snake_pos = _s.get_pos(length); //If statements check if the snake sprite has collided with any //of the three food sprites, if so then the food location is reset and //length of the snake is increased using the length variable. if ( ((snake_pos.y == f_pos.y) || (snake_pos.y == f_pos.y + 1) || (snake_pos.y == f_pos.y + 2) || (snake_pos.y + 1== f_pos.y) || (snake_pos.y + 1== f_pos.y + 1) || (snake_pos.y + 1== f_pos.y + 2) || (snake_pos.y + 2 == f_pos.y) || (snake_pos.y + 2 == f_pos.y + 1) || (snake_pos.y + 2 == f_pos.y + 2)) && ((snake_pos.x == f_pos.x) || (snake_pos.x == f_pos.x + 1) || (snake_pos.x == f_pos.x + 2) || (snake_pos.x + 1 == f_pos.x) || (snake_pos.x + 1== f_pos.x + 1) || (snake_pos.x + 1 == f_pos.x + 2) || (snake_pos.x + 2 == f_pos.x) || (snake_pos.x + 2 == f_pos.x + 1) || (snake_pos.x + 2 == f_pos.x + 2)) ) { //printf("snake feast working \n"); //audio feedback pad.tone(1000.0,0.1); f_pos.x = rand() % 82; f_pos.y = 0; length+=1; } if ( ((snake_pos.y == ff_pos.y) || (snake_pos.y == ff_pos.y + 1) || (snake_pos.y == ff_pos.y + 2) || (snake_pos.y + 1== ff_pos.y) || (snake_pos.y + 1== ff_pos.y + 1) || (snake_pos.y + 1== ff_pos.y + 2) || (snake_pos.y + 2 == ff_pos.y) || (snake_pos.y + 2 == ff_pos.y + 1) || (snake_pos.y + 2 == ff_pos.y + 2)) && ((snake_pos.x == ff_pos.x) || (snake_pos.x == ff_pos.x + 1) || (snake_pos.x == ff_pos.x + 2) || (snake_pos.x + 1 == ff_pos.x) || (snake_pos.x + 1== ff_pos.x + 1) || (snake_pos.x + 1 == ff_pos.x + 2) || (snake_pos.x + 2 == ff_pos.x) || (snake_pos.x + 2 == ff_pos.x + 1) || (snake_pos.x + 2 == ff_pos.x + 2)) ) { //printf("snake feast working \n"); // audio feedback pad.tone(1000.0,0.1); ff_pos.x = rand() % 82; ff_pos.y = 0; length+=1; } if ( ((snake_pos.y == fff_pos.y) || (snake_pos.y == fff_pos.y + 1) || (snake_pos.y == fff_pos.y + 2) || (snake_pos.y + 1== fff_pos.y) || (snake_pos.y + 1== fff_pos.y + 1) || (snake_pos.y + 1== fff_pos.y + 2) || (snake_pos.y + 2 == fff_pos.y) || (snake_pos.y + 2 == fff_pos.y + 1) || (snake_pos.y + 2 == fff_pos.y + 2)) && ((snake_pos.x == fff_pos.x) || (snake_pos.x == fff_pos.x + 1) || (snake_pos.x == fff_pos.x + 2) || (snake_pos.x + 1 == fff_pos.x) || (snake_pos.x + 1== fff_pos.x + 1) || (snake_pos.x + 1 == fff_pos.x + 2) || (snake_pos.x + 2 == fff_pos.x) || (snake_pos.x + 2 == fff_pos.x + 1) || (snake_pos.x + 2 == fff_pos.x + 2)) ) { //printf("snake feast working \n"); // audio feedback pad.tone(1000.0,0.1); fff_pos.x = rand() % 82; fff_pos.y = 0; length+=1; } _f.set_pos(f_pos); _ff.set_pos(ff_pos); _fff.set_pos(fff_pos); }