public Block(Point location,  BlockTypes newBlockType)
        {
            // Create the new block
            if (newBlockType==BlockTypes.Undefined) {
                //BlockType = (BlockTypes)(random.Next(7)) + 1;
                BlockType = BlockTypes.Line; //force line block for testing
            }
            else {
                BlockType = newBlockType;
            }
            // Create each of the squares of the block
            // Set the square colors, based on the block type
            square1 = new Square(new Size(squareSize, squareSize), backColors[(int)BlockType], foreColors[(int)BlockType]);
            square2 = new Square(new Size(squareSize, squareSize), backColors[(int)BlockType], foreColors[(int)BlockType]);
            square3 = new Square(new Size(squareSize, squareSize), backColors[(int)BlockType], foreColors[(int)BlockType]);
            square4 = new Square(new Size(squareSize, squareSize), backColors[(int)BlockType], foreColors[(int)BlockType]);

            // Set the squares positions based on the block type
            switch(BlockType) {
                case BlockTypes.Square:
                    square1.Location = new Point(location.X, location.Y);
                    square2.Location = new Point(location.X+squareSize, location.Y);
                    square3.Location = new Point(location.X, location.Y+squareSize);
                    square4.Location = new Point(location.X+squareSize, location.Y+squareSize);
                    break;
                case BlockTypes.Line:
                    square1.Location = new Point(location.X, location.Y);
                    square2.Location = new Point(location.X, location.Y+squareSize);
                    square3.Location = new Point(location.X, location.Y+2*squareSize);
                    square4.Location = new Point(location.X, location.Y+3*squareSize);
                    break;
                case BlockTypes.J:
                    square1.Location = new Point(location.X+squareSize, location.Y);
                    square2.Location = new Point(location.X+squareSize, location.Y+squareSize);
                    square3.Location = new Point(location.X+squareSize, location.Y+2*squareSize);
                    square4.Location = new Point(location.X, location.Y+2*squareSize);
                    break;
                case BlockTypes.L:
                    square1.Location = new Point(location.X, location.Y);
                    square2.Location = new Point(location.X, location.Y+squareSize);
                    square3.Location = new Point(location.X, location.Y+2*squareSize);
                    square4.Location = new Point(location.X+squareSize, location.Y+2*squareSize);
                    break;
                case BlockTypes.T:
                    square1.Location = new Point(location.X, location.Y);
                    square2.Location = new Point(location.X+squareSize, location.Y);
                    square3.Location = new Point(location.X+2*squareSize, location.Y);
                    square4.Location = new Point(location.X+squareSize, location.Y+squareSize);
                    break;
                case BlockTypes.Z:
                    square1.Location = new Point(location.X, location.Y);
                    square2.Location = new Point(location.X+squareSize, location.Y);
                    square3.Location = new Point(location.X+squareSize, location.Y+squareSize);
                    square4.Location = new Point(location.X+2*squareSize, location.Y+squareSize);
                    break;
                case BlockTypes.S:
                    square1.Location = new Point(location.X, location.Y+squareSize);
                    square2.Location = new Point(location.X+squareSize, location.Y+squareSize);
                    square3.Location = new Point(location.X+squareSize, location.Y);
                    square4.Location = new Point(location.X+2*squareSize, location.Y);
                    break;
            }
        }
 public static void StopSquare(Square square, int x, int y)
 {
     arrBitGameField[y] = arrBitGameField[y] | (1<<x);
     arrGameField[x, y] = square;
 }