void Game(Cell cell) // Метод самой логики игры { if (cell.Cycle == Cell.CycleLife.Empty && cell.CellCount == 3) { cell.rect.Fill = cell.GiveLife(); // Если ячейка пустая и рядом 3 соседа, то возрождаем } if (cell.Cycle == Cell.CycleLife.New && cell.CellCount == 2 || cell.Cycle == Cell.CycleLife.New && cell.CellCount == 3) // Если Ячейка живая и рядом либо 2, либо 3 соседа, то живем { cell.rect.Fill = cell.GiveLife(); // Красим в красный и даем жизнь клетке } else // иначе умираем { cell.rect.Fill = cell.Death(); // Красив в зеленые и омертвляем клетку } }
void Draw() // Метод отрисовки наших клеток { for (int x = 0; x < Width / Size; x++) // Цикл по координатной плоскости X { for (int y = 0; y < Height / Size; y++) // Цикл по координатной плоскости Y { Cell cell = new Cell(new Coord(x, y), Size, Brushes.Green, Brushes.Green); // Создаем клетку с параметрами cell.rect.MouseLeftButtonDown += (s, e) => { (s as Rectangle).Fill = Brushes.Red; cell.GiveLife(); }; // Даем ей событие при котором клетка будет оживляться по нажатию на левую кнопку мыши cell.rect.MouseEnter += (s, e) => { if (e.LeftButton == MouseButtonState.Pressed) { (s as Rectangle).Fill = Brushes.Red; cell.GiveLife(); } }; // Событие, которое будет оживлять клетку, если ты навел курсор на нее и нажал на левую кнопку мыши cell.Death(); // Убиваем все клетки сначала Canvas.SetLeft(cell.rect, x * Size); // Метод для того, чтобы все клетки по оси X располагались упорядоченно (одна за другой) Canvas.SetTop(cell.rect, y * Size); // Тоже самое, только по вертикали cells.Add(cell.Position, cell); // Добавляем клетку с ее координатами в словарь canvas.Children.Add(cell.rect); // Рисуем наши клетки на полотне } } }