Beispiel #1
0
        // Загружает игровое поле из файла
        private static CubiconCell[,] LoadLevelFieldFromFile(string path)
        {
            string levelStr = FilesUtils.Read(path);

            string[] rows = levelStr.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

            // Если прочитали пустой набор столбцов
            if (rows.Length == 0)
            {
                throw new Exception();
            }

            string[] firstRowParts = rows[0].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            // Создаём массив для хранения данных поля
            int rowsCount = rows.Length;
            int colsCount = firstRowParts.Length;

            CubiconCell[,] field = new CubiconCell[rows.Length, firstRowParts.Length];

            // Заполняем массив поля
            for (int i = 0; i < rowsCount; i++)
            {
                string[] rowParts = rows[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                if (rowParts.Length != colsCount)
                {
                    throw new Exception();
                }

                for (int j = 0; j < colsCount; j++)
                {
                    field[i, j]     = new CubiconCell();
                    field[i, j].Row = i;
                    field[i, j].Col = j;

                    field[i, j].State = states[int.Parse(rowParts[j])];
                }
            }

            return(field);
        }
Beispiel #2
0
        private void GameField_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
            // Если игра ещё не начата, то закрашиваем ячейки поля белым цветом
            if (game.State == CubiconGameState.NOT_STARTED)
            {
                e.CellStyle.BackColor = Color.White;
                e.PaintBackground(e.CellBounds, false);
                e.Handled = true;

                return;
            }

            CubiconCell cell = game.CurrentLevel[e.RowIndex, e.ColumnIndex];

            // Рисуем ячейку
            e.CellStyle.BackColor = cellsBackgrounds[cell.State];
            e.PaintBackground(e.CellBounds, false);

            // сообщаем, что ячейка полностью отрисована
            e.Handled = true;
        }