Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Blocks/Blocks.cpp
- Committer:
- AhmedPlaymaker
- Date:
- 2019-04-26
- Revision:
- 48:d774bb162c61
- Parent:
- 47:b448ffd073e7
File content as of revision 48:d774bb162c61:
#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()
{
k = 0;
}
void Blocks::draw(N5110 &lcd, int length)
{
_length = length;
velocity.x = 0;
velocity.y = 1;
if(k == 0){
_bx = 0;
_by = -11;
i=0; //this variable is used to save the positions of the random numbers generated in a block
while(i < 5) {
caseselect[i] = rand()%16; //can make it 17 here later so that people are in for a shock when they think its an empty space and loose massive lives???
i++;
}
round = _length/(7/2); //to make sure at least one is smaller than the snake size
caseselect[rand()%5] = floor(round);
round = _length/(2); //to make sure at least two smaller than the snake size (two because one is already smaller)
caseselect[rand()%5] = floor(round);
k = k+1; //to stop this if function to keep executing.
}
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; //this refers to the x coordinate of the blocks.
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;
}
}
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 blockgap, int srn, int send_block_number) //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.
// this if function makes sure the block appears at the rate of blockgap.
if(_by >= (blockgap)){
k = 0;
}
_bx += velocity.x;
_by += velocity.y;
if(send_block_number) {caseselect[srn] = blocknum;}
}
void Blocks::set_pos(Vector2D p)
{
_bx = p.x;
_by = p.y;
}