Ahmed Adamjee
/
SnakeVSBlock
Snake vs Block Game to be run upon K64F.
Blocks/Blocks.cpp
- Committer:
- AhmedPlaymaker
- Date:
- 2019-04-18
- Revision:
- 37:ee47699915b8
- Parent:
- 36:dfdd619874ae
- Child:
- 41:4edac50f010d
File content as of revision 37:ee47699915b8:
#include "Blocks.h" Blocks::Blocks() { } Blocks::~Blocks() { } //Frame Sprite. int Frame[11][1] = { {0}, {0}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {0}, {0}, }; int One[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Two[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Three[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Four[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,1,0,1,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Five[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Six[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,0,0,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0,0,0,0,0,0}, {0,0,0,0,0,1,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Seven[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,1,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,1,0,0,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Eight[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Nine[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,0,1,1,1,0,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,1,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,1,1,1,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,0,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,0,0,1,1,0,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Ten[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,0,1,1,1,0,0,0,0}, {0,0,0,1,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,1,1,0,0,0}, {0,0,0,0,1,0,0,1,0,1,0,1,0,0,0}, {0,0,0,0,1,0,0,1,1,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,1,1,1,0,0,1,1,1,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Eleven[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,0,1,0,0,0,0,1,0,0,0,0}, {0,0,0,0,1,1,0,0,0,1,1,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0,1,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0,1,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0,1,0,0,0,0}, {0,0,0,0,0,1,0,0,0,0,1,0,0,0,0}, {0,0,0,0,1,1,1,0,0,1,1,1,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Twelve[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,0,1,1,1,0,0,0,0}, {0,0,0,1,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,1,0,0,0,1,0,0,0,0,0,0}, {0,0,0,1,1,1,0,1,1,1,1,1,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Thirteen[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,1,1,1,1,1,0,0,0}, {0,0,0,1,1,0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,1,1,1,0,0,1,1,1,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Fourteen[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, {0,0,0,1,1,0,0,0,0,1,1,0,0,0,0}, {0,0,0,0,1,0,0,0,1,0,1,0,0,0,0}, {0,0,0,0,1,0,0,1,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,1,1,1,1,1,0,0,0}, {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, {0,0,0,1,1,1,0,0,0,0,1,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Fifteen[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,1,1,1,1,1,0,0,0}, {0,0,0,1,1,0,0,1,0,0,0,0,0,0,0}, {0,0,0,0,1,0,0,1,1,1,1,0,0,0,0}, {0,0,0,0,1,0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,1,1,1,0,0,1,1,1,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; /* int Sixteen[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,0,0,0,1,1,0,0,0}, {0,0,0,1,1,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,1,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,1,0,0,1,1,1,1,0,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,1,1,1,0,0,1,1,1,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Seventeen[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,1,1,1,1,1,0,0,0}, {0,0,0,1,1,0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, {0,0,0,0,1,0,0,0,0,1,0,0,0,0,0}, {0,0,0,0,1,0,0,0,1,0,0,0,0,0,0}, {0,0,0,0,1,0,0,0,1,0,0,0,0,0,0}, {0,0,0,1,1,1,0,0,1,0,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Eighteen[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,0,1,1,1,0,0,0,0}, {0,0,0,1,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,0,1,1,1,0,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,1,1,1,0,0,1,1,1,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; int Nineteen[11][15] = { {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,0,0,0,1,0,0,0,1,1,1,0,0,0,0}, {0,0,0,1,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,1,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,0,1,1,1,1,0,0,0}, {0,0,0,0,1,0,0,0,0,0,0,1,0,0,0}, {0,0,0,0,1,0,0,0,0,0,1,0,0,0,0}, {0,0,0,1,1,1,0,0,1,1,0,0,0,0,0}, {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1}, {0,1,1,1,1,1,1,1,1,1,1,1,1,1,0}, }; */ void Blocks::init() { blockdrop=0; k = 0; } int Blocks::draw(N5110 &lcd, int length, int blockgap) { velocity.x = 0; velocity.y = 1; //Resets SnakeFood position if it reaches the bottom of the screen. //Also prevents SnakeFood from going out of the side of the screen. if(_bx < 0){ _bx = 0; } if(_bx > 84){ _bx = 84; } if(_by >= (blockgap)){ k = 0; } if(k == 0){ send=0; _bx = 0; _by = -11; k = k+1; pos = 4; times = 1; i=0;// to save the positions of the random numbers generated in a block while(pos<=68) { if(times == rand()%6) { double round = length/(3/2); caseselect[i] = floor(round); } if(times == rand()%6) { caseselect[i] = 0; } else { caseselect[i] = rand()%16; } pos+=16; times+=1; if (times == 5) { times = 0; } i++; } double roundagain = length/(7/2); //to make sure at least one is smaller than the snake size caseselect[rand()%5] = floor(roundagain); } lcd.drawSprite(_bx+3,_by,11,1,(int *)Frame); //Function to draw the sprite. lcd.drawSprite(_bx+19,_by,11,1,(int *)Frame); lcd.drawSprite(_bx+35,_by,11,1,(int *)Frame); lcd.drawSprite(_bx+51,_by,11,1,(int *)Frame); lcd.drawSprite(_bx+67,_by,11,1,(int *)Frame); lcd.drawSprite(_bx+83,_by,11,1,(int *)Frame); i = 0; pos = 4; while((i<5)&&(pos<=68)) { state = caseselect[i]; switch(state) { case 0: // This case creates empty block break; case 1: lcd.drawSprite(pos,_by,11,15,(int *)One); break; case 2: lcd.drawSprite(pos,_by,11,15,(int *)Two); break; case 3: lcd.drawSprite(pos,_by,11,15,(int *)Three); break; case 4: lcd.drawSprite(pos,_by,11,15,(int *)Four); break; case 5: lcd.drawSprite(pos,_by,11,15,(int *)Five); break; case 6: lcd.drawSprite(pos,_by,11,15,(int *)Six); break; case 7: lcd.drawSprite(pos,_by,11,15,(int *)Seven); break; case 8: lcd.drawSprite(pos,_by,11,15,(int *)Eight); break; case 9: lcd.drawSprite(pos,_by,11,15,(int *)Nine); break; case 10: lcd.drawSprite(pos,_by,11,15,(int *)Ten); break; case 11: lcd.drawSprite(pos,_by,11,15,(int *)Eleven); break; case 12: lcd.drawSprite(pos,_by,11,15,(int *)Twelve); break; case 13: lcd.drawSprite(pos,_by,11,15,(int *)Thirteen); break; case 14: lcd.drawSprite(pos,_by,11,15,(int *)Fourteen); break; case 15: lcd.drawSprite(pos,_by,11,15,(int *)Fifteen); break; default: break; } i++; pos+=16; } return send; //this is for the game to decide wether to remember the number on the block for the current itteration. //we dont need to remember if it has already gone past the screen. } Vector2D Blocks::get_pos() //Obtains the X and Y coordinate of the target. { Vector2D blockpos = {_bx,_by}; //printf("blockpos is = %f %f \n", blockpos.x, blockpos.y); return blockpos; } int * Blocks::get_number() //Obtains the X and Y coordinate of the target. { return caseselect; } void Blocks::update(int blocknum, int srn, int send) //send sends the block number only when the y position satisfies a particular requirement { //and srn gives the srn of the block, snake is colliding with. _bx += velocity.x; _by += velocity.y; if(send) {caseselect[srn] = blocknum;} } void Blocks::set_pos(Vector2D p) { _bx = p.x; _by = p.y; }