#include <stdlib.h>
#include <math.h>
#include "vector.h"
#include "draw.h"
#include "bullet.h"
#include "ship.h"
#include "text.h"

void push (char a, char str[], int len)
{
	int i=len-1;
	while(i>=1){
      		str[i]=str[i-1];
		i--;}
	str[0]=a;
}

void longout(long value, const Vector &pos, byte_t color, byte_t *where){
	char str[20];
	char digit;
	int place=1;
	str[0]='\0';
	do {
		digit=((value/place)%10)+'0';
		push(digit,str,20);
		place*=10;
	}
	while (value/place>=1);
	Text t(str,pos);
	t.draw(color,where);
}

Text::Text(char str[], const Vector &pos){
	ascii=new char[MAXTEXT];
	strlength=0;
	position=Vector(pos);
	while((strlength<MAXTEXT)&&(str[strlength]!='\0')){
		ascii[strlength]=str[strlength];
		strlength++;
	}
}

Text::Text(const Text &copy){
	ascii=new char[MAXTEXT];
	strlength=copy.strlength;
	position=copy.position;
	for(int i=0; i<strlength; i++)
		ascii[i]=copy.ascii[i];
}

Text::~Text(){
	delete [] ascii;
}

void Text::draw(byte_t color, byte_t *where){
	Character out;
	for(int i=0; i<strlength; i++){
		out.set(ascii[i]);
		out.draw(position+Vector(i*5,0),color,where);
	}
}

void Text::drawx2(byte_t color, byte_t *where){
	Character out;
	for(int i=0; i<strlength; i++){
		out.set(ascii[i]);
		out.drawx2(position+Vector(i*10,0),color,where);
	}
}

void Text::set(char str[], const Vector &pos){
	strlength=0;
	position=pos;
	while((strlength<MAXTEXT)&&(str[strlength]!='\0')){
		ascii[strlength]=str[strlength];
		strlength++;
	}
}

void Text::move(const Vector &pos){
	position=pos;
}

Character::Character(char a){
	ascii=a;
	grid=new bool[32];
	setgrid();
}

Character::Character(const Character &copy){
	ascii=copy.ascii;
	grid=new bool[32];
	setgrid();
}

Character::~Character(){
	delete [] grid;
}

void Character::draw(const Vector &pos, byte_t color, byte_t *where){
	for(int i=0; i<4; i++)
		for(int j=0; j<8; j++)
			if (grid[i*8+j]) pixel(int(pos.x)+i,int(pos.y)+j,color,where);
}

void Character::drawx2(const Vector &pos, byte_t color, byte_t *where){
	for(int i=0; i<4; i++)
		for(int j=0; j<8; j++){
			if (grid[i*8+j]) pixel(int(pos.x)+(i*2),int(pos.y)+(j*2),color,where);
			if (grid[i*8+j]) pixel(int(pos.x)+(i*2)+1,int(pos.y)+(j*2),color,where);
			if (grid[i*8+j]) pixel(int(pos.x)+(i*2),int(pos.y)+(j*2)+1,color,where);
			if (grid[i*8+j]) pixel(int(pos.x)+(i*2)+1,int(pos.y)+(j*2)+1,color,where);
		}
}

void Character::set(char a){
	ascii=a;
	setgrid();
}

void Character::setgrid(){
	switch (ascii){
		case 'a':
		case 'A':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case 'b':
		case 'B':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 'c':
		case 'C':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 'd':
		case 'D':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 'e':
		case 'E':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=0;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=1; grid[15]=1; grid[23]=1; grid[31]=1;
			break;
		case 'f':
		case 'F':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=0;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=0;
			break;
		case 'g':
		case 'G':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=1; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 'h':
		case 'H':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case 'i':
		case 'I':
			grid[0]=0; grid[8]=1; grid[16]=0; grid[24]=0;
			grid[1]=0; grid[9]=1; grid[17]=0; grid[25]=0;
			grid[2]=0; grid[10]=1; grid[18]=0; grid[26]=0;
			grid[3]=0; grid[11]=1; grid[19]=0; grid[27]=0;
			grid[4]=0; grid[12]=1; grid[20]=0; grid[28]=0;
			grid[5]=0; grid[13]=1; grid[21]=0; grid[29]=0;
			grid[6]=0; grid[14]=1; grid[22]=0; grid[30]=0;
			grid[7]=0; grid[15]=1; grid[23]=0; grid[31]=0;
			break;
		case 'j':
		case 'J':
			grid[0]=0; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=0; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=0; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=0; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 'k':
		case 'K':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=1; grid[26]=0;
			grid[3]=1; grid[11]=0; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=1; grid[20]=0; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=1; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case 'l':
		case 'L':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=0;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=1; grid[15]=1; grid[23]=1; grid[31]=1;
			break;
		case 'm':
		case 'M':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=1; grid[17]=1; grid[25]=1;
			grid[2]=1; grid[10]=1; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case 'n':
		case 'N':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=1; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=1; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=1; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=1; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case 'o':
		case 'O':
		case '0':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 'p':
		case 'P':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=0;
			break;
		case 'q':
		case 'Q':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=1; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=1;
			break;
		case 'r':
		case 'R':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case 's':
		case 'S':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=1; grid[19]=0; grid[27]=0;
			grid[4]=0; grid[12]=0; grid[20]=1; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 't':
		case 'T':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=0; grid[9]=1; grid[17]=0; grid[25]=0;
			grid[2]=0; grid[10]=1; grid[18]=0; grid[26]=0;
			grid[3]=0; grid[11]=1; grid[19]=0; grid[27]=0;
			grid[4]=0; grid[12]=1; grid[20]=0; grid[28]=0;
			grid[5]=0; grid[13]=1; grid[21]=0; grid[29]=0;
			grid[6]=0; grid[14]=1; grid[22]=0; grid[30]=0;
			grid[7]=0; grid[15]=1; grid[23]=0; grid[31]=0;
			break;
		case 'u':
		case 'U':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case 'v':
		case 'V':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=1; grid[30]=0;
			grid[7]=0; grid[15]=1; grid[23]=0; grid[31]=0;
			break;
		case 'w':
		case 'W':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=0; grid[19]=0; grid[27]=1;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=1; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=1; grid[31]=1;
			break;
		case 'x':
		case 'X':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=1; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case 'y':
		case 'Y':
			grid[0]=1; grid[8]=0; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=1; grid[25]=0;
			grid[2]=1; grid[10]=0; grid[18]=1; grid[26]=0;
			grid[3]=1; grid[11]=0; grid[19]=1; grid[27]=0;
			grid[4]=0; grid[12]=1; grid[20]=0; grid[28]=0;
			grid[5]=0; grid[13]=1; grid[21]=0; grid[29]=0;
			grid[6]=0; grid[14]=1; grid[22]=0; grid[30]=0;
			grid[7]=0; grid[15]=1; grid[23]=0; grid[31]=0;
			break;
		case 'z':
		case 'Z':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=1;
			grid[1]=0; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=0; grid[10]=0; grid[18]=1; grid[26]=0;
			grid[3]=0; grid[11]=0; grid[19]=1; grid[27]=0;
			grid[4]=0; grid[12]=1; grid[20]=0; grid[28]=0;
			grid[5]=0; grid[13]=1; grid[21]=0; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=1; grid[15]=1; grid[23]=1; grid[31]=1;
			break;
		case '1':
			grid[0]=0; grid[8]=1; grid[16]=0; grid[24]=0;
			grid[1]=1; grid[9]=1; grid[17]=0; grid[25]=0;
			grid[2]=0; grid[10]=1; grid[18]=0; grid[26]=0;
			grid[3]=0; grid[11]=1; grid[19]=0; grid[27]=0;
			grid[4]=0; grid[12]=1; grid[20]=0; grid[28]=0;
			grid[5]=0; grid[13]=1; grid[21]=0; grid[29]=0;
			grid[6]=0; grid[14]=1; grid[22]=0; grid[30]=0;
			grid[7]=1; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case '2':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=0; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=0; grid[19]=1; grid[27]=0;
			grid[4]=0; grid[12]=1; grid[20]=0; grid[28]=0;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=0;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=1; grid[15]=1; grid[23]=1; grid[31]=1;
			break;
		case '3':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=0; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=0; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=0; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case '4':
			grid[0]=1; grid[8]=0; grid[16]=0; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=1;
			grid[4]=0; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=0; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=0; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=0; grid[23]=0; grid[31]=1;
			break;
		case '5':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=1;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=0;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=0; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=0; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case '6':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=1; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case '7':
			grid[0]=1; grid[8]=1; grid[16]=1; grid[24]=1;
			grid[1]=0; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=0; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=0; grid[19]=1; grid[27]=0;
			grid[4]=0; grid[12]=0; grid[20]=1; grid[28]=0;
			grid[5]=0; grid[13]=1; grid[21]=0; grid[29]=0;
			grid[6]=0; grid[14]=1; grid[22]=0; grid[30]=0;
			grid[7]=0; grid[15]=1; grid[23]=0; grid[31]=0;
			break;
		case '8':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=1; grid[19]=1; grid[27]=0;
			grid[4]=1; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=1; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case '9':
			grid[0]=0; grid[8]=1; grid[16]=1; grid[24]=0;
			grid[1]=1; grid[9]=0; grid[17]=0; grid[25]=1;
			grid[2]=1; grid[10]=0; grid[18]=0; grid[26]=1;
			grid[3]=0; grid[11]=1; grid[19]=1; grid[27]=1;
			grid[4]=0; grid[12]=0; grid[20]=0; grid[28]=1;
			grid[5]=0; grid[13]=0; grid[21]=0; grid[29]=1;
			grid[6]=1; grid[14]=0; grid[22]=0; grid[30]=1;
			grid[7]=0; grid[15]=1; grid[23]=1; grid[31]=0;
			break;
		case ':':
			grid[0]=0; grid[8]=0; grid[16]=0; grid[24]=0;
			grid[1]=0; grid[9]=0; grid[17]=0; grid[25]=0;
			grid[2]=0; grid[10]=1; grid[18]=0; grid[26]=0;
			grid[3]=0; grid[11]=0; grid[19]=0; grid[27]=0;
			grid[4]=0; grid[12]=0; grid[20]=0; grid[28]=0;
			grid[5]=0; grid[13]=1; grid[21]=0; grid[29]=0;
			grid[6]=0; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=0; grid[15]=0; grid[23]=0; grid[31]=0;
			break;
		case '.':
			grid[0]=0; grid[8]=0; grid[16]=0; grid[24]=0;
			grid[1]=0; grid[9]=0; grid[17]=0; grid[25]=0;
			grid[2]=0; grid[10]=0; grid[18]=0; grid[26]=0;
			grid[3]=0; grid[11]=0; grid[19]=0; grid[27]=0;
			grid[4]=0; grid[12]=0; grid[20]=0; grid[28]=0;
			grid[5]=0; grid[13]=0; grid[21]=0; grid[29]=0;
			grid[6]=0; grid[14]=0; grid[22]=0; grid[30]=0;
			grid[7]=0; grid[15]=1; grid[23]=0; grid[31]=0;
			break;
		default:
			for(int i=0; i<4; i++)
				for(int j=0; j<8; j++)
					grid[i*8+j]=0;
	}
}

