// Загружает игровое поле из файла 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); }
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; }