public Block()
	{
		// Default state of a newly created block
		state = 1;
		blockType = -1;
		shape = Shape.None;
		
		// Generate random block	
		blockType = rn.nextInt(7) + 1;
		shape = Shape.get(blockType);
			
		// Set block based on shape type
		// Blocks represented as int arrays
		int[][] zShape = {  {0, 0, 0, 0},
							{1, 1, 0, 0},
							{0, 1, 1, 0},
							{0, 0, 0, 0}  };
		
		int[][] sShape = {  {0, 0, 0, 0},
							{0, 1, 1, 0},
							{1, 1, 0, 0},
							{0, 0, 0, 0}  };
		
		int[][] lineShape = {  {0, 0, 0, 0},
							   {0, 0, 0, 0},
							   {1, 1, 1, 1},
							   {0, 0, 0, 0}  };
		
		int[][] tShape = {  {0, 0, 0, 0},
							{1, 1, 1, 0},
							{0, 1, 0, 0},
							{0, 0, 0, 0}  };
		
		int[][] squareShape = {  {0, 0, 0, 0},
							     {0, 1, 1, 0},
							     {0, 1, 1, 0},
							     {0, 0, 0, 0}  };

		int[][] lShape = {  {0, 0, 0, 0},
							{1, 1, 1, 0},
							{0, 0, 1, 0},
							{0, 0, 0, 0}  };
		
		int[][] mlShape = {  {0, 0, 0, 0},
							 {1, 1, 1, 0},
							 {1, 0, 0, 0},
							 {0, 0, 0, 0}  };
		
		
		switch(shape) 
		{
		case ZShape:
			block = zShape;
			break;
		case SShape:
			block = sShape;
			break;
		case LineShape:
			block = lineShape;
			break;
		case TShape: 
			block = tShape;
			break;
		case SquareShape: 
			block = squareShape;
			break;
		case LShape:
			block = lShape;
			break;
		case MirroredLShape: 
			block = mlShape;
			break;
		default:

			break;		
		}		 		
	}