Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Mon Apr 22 04:24:38 2019 +0000
Revision:
38:30e4e6191762
Parent:
36:dfdd619874ae
Child:
41:4edac50f010d
This might be the biggest yet!!! THIS HAS MOTION CONTROL

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AhmedPlaymaker 9:d1d79d4ee673 1 #include "SnakeFood.h"
AhmedPlaymaker 9:d1d79d4ee673 2
AhmedPlaymaker 9:d1d79d4ee673 3 SnakeFood::SnakeFood()
AhmedPlaymaker 9:d1d79d4ee673 4 {
AhmedPlaymaker 9:d1d79d4ee673 5
AhmedPlaymaker 9:d1d79d4ee673 6 }
AhmedPlaymaker 9:d1d79d4ee673 7
AhmedPlaymaker 9:d1d79d4ee673 8 SnakeFood::~SnakeFood()
AhmedPlaymaker 9:d1d79d4ee673 9 {
AhmedPlaymaker 9:d1d79d4ee673 10
AhmedPlaymaker 9:d1d79d4ee673 11 }
AhmedPlaymaker 9:d1d79d4ee673 12
AhmedPlaymaker 9:d1d79d4ee673 13 //SnakeFood Sprite.
AhmedPlaymaker 9:d1d79d4ee673 14 int food_sprite[3][3] = {
AhmedPlaymaker 9:d1d79d4ee673 15 {0,1,0},
AhmedPlaymaker 9:d1d79d4ee673 16 {1,0,1},
AhmedPlaymaker 9:d1d79d4ee673 17 {0,1,0},
AhmedPlaymaker 9:d1d79d4ee673 18 };
AhmedPlaymaker 9:d1d79d4ee673 19
AhmedPlaymaker 9:d1d79d4ee673 20 void SnakeFood::init() //Delete Int
AhmedPlaymaker 9:d1d79d4ee673 21 {
AhmedPlaymaker 9:d1d79d4ee673 22 fooddrop=0;
AhmedPlaymaker 30:461231877c89 23 n = 0;
AhmedPlaymaker 9:d1d79d4ee673 24 }
AhmedPlaymaker 9:d1d79d4ee673 25
AhmedPlaymaker 9:d1d79d4ee673 26
AhmedPlaymaker 36:dfdd619874ae 27 void SnakeFood::draw(N5110 &lcd, int blockbuff)
AhmedPlaymaker 9:d1d79d4ee673 28 {
AhmedPlaymaker 9:d1d79d4ee673 29
AhmedPlaymaker 38:30e4e6191762 30 velocity.x = 0;
AhmedPlaymaker 38:30e4e6191762 31 velocity.y = 1;
AhmedPlaymaker 38:30e4e6191762 32 _blockbuff = blockbuff;
AhmedPlaymaker 9:d1d79d4ee673 33
AhmedPlaymaker 9:d1d79d4ee673 34 //add sideways velocity incase I want to make it dodgy.
AhmedPlaymaker 9:d1d79d4ee673 35
AhmedPlaymaker 9:d1d79d4ee673 36 //Resets SnakeFood position if it reaches the bottom of the screen.
AhmedPlaymaker 9:d1d79d4ee673 37 //Also prevents SnakeFood from going out of the side of the screen.
AhmedPlaymaker 36:dfdd619874ae 38 if(_fx < 0) {_fx = 0;}
AhmedPlaymaker 36:dfdd619874ae 39 if(_fx > 81) {_fx = 81;}
AhmedPlaymaker 36:dfdd619874ae 40 if(_fy >= 48) {n = 0;}
AhmedPlaymaker 36:dfdd619874ae 41 if(n == 0){
AhmedPlaymaker 36:dfdd619874ae 42 _fx = (rand() % 82); //this makes the food pop up at a random, unspecified location in the x axis.
AhmedPlaymaker 36:dfdd619874ae 43 _fy = -3;
AhmedPlaymaker 38:30e4e6191762 44 if(!((_blockbuff <= 11)&&(_blockbuff >= -11))) { //this makes sure that the snake food only appears when the block doesn't cover it.
AhmedPlaymaker 36:dfdd619874ae 45 n = n+1;
AhmedPlaymaker 9:d1d79d4ee673 46 }
AhmedPlaymaker 36:dfdd619874ae 47 }
AhmedPlaymaker 9:d1d79d4ee673 48
AhmedPlaymaker 9:d1d79d4ee673 49 lcd.drawSprite(_fx,_fy,3,3,(int *)food_sprite); //Function to draw the sprite.
AhmedPlaymaker 9:d1d79d4ee673 50 }
AhmedPlaymaker 9:d1d79d4ee673 51
AhmedPlaymaker 9:d1d79d4ee673 52
AhmedPlaymaker 9:d1d79d4ee673 53
AhmedPlaymaker 9:d1d79d4ee673 54 Vector2D SnakeFood::get_pos() //Obtains the X and Y coordinate of the target.
AhmedPlaymaker 9:d1d79d4ee673 55 {
AhmedPlaymaker 9:d1d79d4ee673 56 Vector2D snakefoodpos = {_fx,_fy};
AhmedPlaymaker 9:d1d79d4ee673 57 //printf("snakefoodpos from food = %f %f \n", snakefoodpos.x, snakefoodpos.y);
AhmedPlaymaker 9:d1d79d4ee673 58 return snakefoodpos;
AhmedPlaymaker 9:d1d79d4ee673 59 }
AhmedPlaymaker 9:d1d79d4ee673 60
AhmedPlaymaker 9:d1d79d4ee673 61
AhmedPlaymaker 9:d1d79d4ee673 62
AhmedPlaymaker 9:d1d79d4ee673 63
AhmedPlaymaker 9:d1d79d4ee673 64 void SnakeFood::update()
AhmedPlaymaker 9:d1d79d4ee673 65 {
AhmedPlaymaker 38:30e4e6191762 66 _fx += velocity.x;
AhmedPlaymaker 38:30e4e6191762 67 _fy += velocity.y;
AhmedPlaymaker 9:d1d79d4ee673 68 }
AhmedPlaymaker 9:d1d79d4ee673 69
AhmedPlaymaker 9:d1d79d4ee673 70
AhmedPlaymaker 9:d1d79d4ee673 71 void SnakeFood::set_pos(Vector2D p)
AhmedPlaymaker 9:d1d79d4ee673 72 {
AhmedPlaymaker 9:d1d79d4ee673 73 _fx = p.x;
AhmedPlaymaker 9:d1d79d4ee673 74 _fy = p.y;
AhmedPlaymaker 38:30e4e6191762 75 if(((_blockbuff <= 11)&&(_blockbuff >= -11))&&_fy == -3) { //this makes sure that the snake food only appears when the block doesn't cover it.
AhmedPlaymaker 38:30e4e6191762 76 n = 0;
AhmedPlaymaker 38:30e4e6191762 77 }
AhmedPlaymaker 9:d1d79d4ee673 78 }