public void InitMap()
        {
            using (var sr = new StreamReader("Map.txt"))
            {
                string line;
                Grid = new SquareGrid(15);
                int i = 0;
                while ((line = sr.ReadLine()) != null)
                {
                    var items = line.Split();
                    for (int j = 0; j < items.Length; j++)
                    {
                        var item     = items[j];
                        var freeCell = new FreeCell();
                        Grid.Rows[i][j] = freeCell;

                        if (item == "*")
                        {
                            freeCell.IsStart = true;
                        }
                        else if (item[item.Length - 1] == 'w')
                        {
                            freeCell.WordFactor = int.Parse(item.Trim('w'));
                        }
                        else
                        {
                            freeCell.Factor = int.Parse(item);
                        }
                    }
                    i++;
                }
            }
        }
        public void DrawGrid(SquareGrid grid)
        {
            var point = startPoint;
            var dx    = size.Width + gapSize;
            var dy    = size.Height + gapSize;

            gridGraphic.Clear(Color.White);

            var   font = SystemFonts.MessageBoxFont;
            Brush brush;

            foreach (var row in grid.Rows)
            {
                foreach (var cell in row)
                {
                    if (cell.IsStart)
                    {
                        brush = Brushes.OrangeRed;
                    }
                    else if (cell.WordFactor > 1)
                    {
                        brush = wordFactorBrushes[cell.WordFactor];
                    }
                    else
                    {
                        brush = factorBrushes[cell.Factor];
                    }

                    var rect = new Rectangle(point, size);
                    gridGraphic.FillRectangle(brush, rect);
                    if (cell.Letter != null)
                    {
                        gridGraphic.FillRectangle(Brushes.BlanchedAlmond, rect);
                        gridGraphic.DrawString(cell.Letter.ToString(), font, Brushes.Black, rect);
                    }
                    gridGraphic.DrawRectangle(cellBorderPen, rect);
                    point.X += dx;
                }
                point.X  = 0;
                point.Y += dy;
            }
            canvas.Image = gridBmp;
        }