Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.12.2022
Сообщений: 1

Проблема с обновлением игровой области

08.12.2022, 14:39. Показов 278. Ответов 0

Студворк — интернет-сервис помощи студентам
Писал игру жизнь. Проблема заключается по всей видимости в функции NextGeneration() после graphics.Clear(Color.Black) так как на момент появляются первые клетки а потом всё становиться черным. В чем могла бы быть проблема?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
private Graphics graphics;
        private int resulution;
        private bool[,] field;
        private int rows;
        private int cols;
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void StartGame()
        {
            if (timer1.Enabled)
                return;
 
            nudDensity.Enabled = false;
            nudResolution.Enabled = false;
            resulution = (int)nudResolution.Value;
            rows = pictureBox1.Height / resulution;
            cols = pictureBox1.Width / resulution;
 
            Random random = new Random();
            field = new bool[cols, rows];
            for (int x = 0; x < cols; x++)
            {
                for (int y = 0; y < rows; y++)
                {
                    field[x, y] = random.Next((int)nudDensity.Value) == 0;
                }
            }
 
            pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
            graphics = Graphics.FromImage(pictureBox1.Image);
            timer1.Start();
        }
 
        private void NextGeneration()
        {
            graphics.Clear(Color.Black);
 
            var newField = new bool[cols, rows];
 
 
            for (int x = 0; x < cols; x++)
            {
                for (int y = 0; y < rows; y++)
                {
                    var neighboursCount = CountNeighbours(x, y);
                    var hasLife = field[x, y];
 
                    if(!hasLife && neighboursCount == 3)
                        newField[x, y] = true;
                    else if (hasLife && (neighboursCount < 2 || neighboursCount > 3))
                        newField[x, y] = false;
                    else
                        newField[x, y] = field[x, y];
 
                    if(field[x,y])
                        graphics.FillRectangle(Brushes.Crimson, x * resulution, y * resulution, resulution, resulution);
                }
            }
            field = newField;
            pictureBox1.Refresh();
        }
 
 
        private int CountNeighbours(int x, int y)
        {
            int count = 0;
            for (int i = -1; i < 2; i++)
            {
                for (int j = -1; j < 2; j++)
                {
                    var col = (x + i + cols) % cols;
                    var row = (y + j + rows) % rows;
                    var isSelfChecking = col == x && row == y;
                    var hasLife = field[col, row];
                    if(hasLife && !isSelfChecking)
                        count++;
                }
            }
            return 0;
        }
 
 
 
 
        private void StopGame()
        {
            if (timer1.Enabled)
            {
                timer1.Stop();
                graphics.Clear(Color.Black);
                nudDensity.Enabled = true;
                nudResolution.Enabled = true;
            }
            else
            {
                return;
            }
            
        }
 
        private void splitContainer1_Panel2_Paint(object sender, PaintEventArgs e)
        {
 
        }
 
        private void timer1_Tick(object sender, EventArgs e)
        {
            NextGeneration();
        }
 
        private void bStart_Click(object sender, EventArgs e)
        {
 
            StartGame();
        }
 
        private void bStop_Click(object sender, EventArgs e)
        {
            StopGame();
        }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2022, 14:39
Ответы с готовыми решениями:

Проблема с обновлением
Приветствую! Ребят помощь нужна случилась такая беда, значит 2 месяца назад поставил 1с 8.2 ввел ключ всё гуд, вот сегодня хочу докинуть...

Проблема с обновлением конфигурации
Помогите решить проблему с обновлением конфигурации 1С Управление Торговлей, может кто сталкивался или знает в чём может быть проблема....

Проблема с обновлением Nod32
Добрый день. Недавно столкнулся с такой проблемой: пытаюсь обновить лицензионный антивирус, мне выскакивает окошко: введите логин и пароль,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.12.2022, 14:39
Помогаю со студенческими работами здесь

Проблема с обновлением Acl
Возникла такая проблема: 1. есть два сервера, например ср1 и ср2. База находится на ср1 и АК тоже находится на ср1, но в ACL указан ср2....

Проблема с обновлением progressbar
Решил попробовать сделать скаичвание файла сопровождающейся обновлением progressbar Сам файл скачивается, а программа завершает работу...

Проблема с обновлением анимации
Всем привет! Проблема сделал загрузку override control в аниматор пистолет работает хорошо, с первого раза(запуск сцены) начинает...

Проблема с обновлением страницы в IE.
НА 1 асп &lt;% response.expiresabsolute = Now() - 1 response.addHeader 'pragma','no-cache' response.addHeader...

Проблема с Обновлением WIndows 10
Привет всем. Столкнулся с этой проблемой. Подскажите пожалуйста как можно исправить это? Скриншот прилатается.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru