Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2018, 20:01   #1
Tabaki
Новичок
Джуниор
 
Регистрация: 10.06.2018
Сообщений: 1
По умолчанию Клеточный автомат, обработка клеток в матрице

Пишу игру жизнь на си шарпе в формах, матрицу создал как кнопки в контейнере TableLayotPannel, за состояние клеток решил сделать ответственным цвет кнопки, но возникла проблема с их обработкой.
Обработка должна проходить циклически (То есть матрица 10 на 10 но условно бесконечна, так как клетки с противополжных концов должны быть связаны) вместе с этой трудностью всплыла другая, когда прохожу циклом по матрице, нужно оббежать соседние 8 клеток, моя реализация выглядит так:
Код:
private void CheckButtonsNow(object sender, EventArgs e)
        {
            int Sum = 0;
            foreach (var Buttons in tableLayoutPanel1.Controls)
            {
                if (Buttons is Button)
                {
                    for (int i = 0; i < 3; i++)
                    {
                        for (int j = 0; j < 3; j++)
                        {
                            if (((Button)Buttons).BackColor == Color.Green|| ((Button)Buttons).BackColor == Color.Red)
                                Sum++;
                            if (i == 2 && j == 2)
                                Sum--;//Исключаем добавление к числу живых сканируемой клетки
                        }
                    }//Оббегаем соседние кнопки, считаем живые
                    if (Sum == 3 && ((Button)Buttons).BackColor == Color.White)
                        ((Button)Buttons).BackColor = Color.Yellow;//Оживающая клетка окрашивается в желтый
                    if ((Sum < 2 || Sum > 3) && ((Button)Buttons).BackColor == Color.Green)
                        ((Button)Buttons).BackColor = Color.Red;//Умирающая клетка становится красной
                    if ((Sum >= 2 || Sum <= 3) && ((Button)Buttons).BackColor == Color.Green)
                        ((Button)Buttons).BackColor = Color.Green;//Живая клетка живет при наличии 2 или 3 соседей
                    if ((Sum < 2 || Sum > 3) && ((Button)Buttons).BackColor == Color.White)
                        ((Button)Buttons).BackColor = Color.White;//Мертвая клетка не оживает при наличии менее 2 и более 3 живых соседей
                    Sum = 0;
                }
            }
        }
Но не работает, думаю проблема во вложенном цикле, подскажите как его оформить чтоб программа выполнялась
Tabaki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клеточный автомат c# с использованием datagridview sashakozlovskiy Помощь студентам 0 08.06.2016 12:15
Клеточный автомат Винера-Розенблюта slavarus Помощь студентам 2 17.09.2013 06:56
Клеточный автомат (Игра Жизнь) в Delphi nitroes Фриланс 4 12.03.2012 13:11
Клеточный автомат Munya Фриланс 4 08.05.2010 13:34
Клеточный автомат Noor Помощь студентам 4 29.11.2007 09:19