Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
2 / 2 / 2
Регистрация: 16.10.2011
Сообщений: 179

Некорректная работа игры 'Жизнь'

21.12.2012, 10:21. Показов 893. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, накидал за пару часов программу - игру Жизнь http://ru.wikipedia.org/wiki/Жизнь_(игра), но алгоритм, видимо, неправильный

Здесь выкладываю кусок кода, который отвечает за перемещение нарисованных областей:

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
 void cell::stepcells(void)  //перемещение закрашенных областей, симулирующих живык клетки
 {
 clearcells();  //очищаем область, рисуем "сеточку"
 
 for (int i = 0; i < 30; i++)
 {
     for (int j = 0; j < 30; j++)
     {
     if (((countN(i,j))==2) || ((countN(i,j))==3))  //countN(i,j) - функция, рассчитывающая кол-во живых клеток вокруг кетки i j
 
     tempcell[i][j]=true;   //если кол-во живых кл - 2 или 3 - рисуем живую клетку, иначе очищаем область
     else tempcell[i][j]=false;
     }
     }
 
 
       Form3->Canvas->Brush->Color=clGreen;
 
    for (int i = 0; i < 30; i++)
    {
     for (int j = 0; j < 30; j++)
     {
      cell[i][j]=tempcell[i][j];  //массиву клеток присваиваем значения, живых клеток
      if (cell[i][j])
      {
 
       Form3->Canvas->FillRect(Rect(i*20,j*20,i*20+20,j*20+20));  //заливаем область
      }
     }
      }
     Application->ProcessMessages();
 
 
 
 }
 
 int cell::countN(int x, int y)
 {
   int temp=0;
 
   for (int i = -1; i < 2; i++)
   {
        for (int j = -1; j < 2; j++)
        {
        if ((i!=0) && (j!=0)) {
       
            if ((cell[x+i][y+j]) && ((x+i)>-1) && ((y+j)>-1)&& ((x+i)<31) && ((y+j)<31))
            {
             temp++;  //если есть клетка "живая" вокруг исследуемой области - увеличиваем переменную
            }
            }
        }
   }
   return temp;  //возвращаем значение переменной
 }
Проблема в том, что область раполняется явно неравномерно, в чём может быть проблема?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.12.2012, 10:21
Ответы с готовыми решениями:

Корректировка алгоритма игры "Жизнь"
Здравствуйте. У меня некорректно работает игра &quot;жизнь&quot;. Работает всё по какому-то адскому алгоритму. Как можно исправить положение? ...

Некорректная работа таймера
void __fastcall TForm1::Timer1vremTimer(TObject *Sender) { if (Timer2pusk-&gt;Enabled) { int t2; t2=t1/60/1000; ...

keybd_event некорректная работа
Есть строка &quot;abcdefghijklmno&quot;. Я пытаюсь эмулировать её нажатие вызывая в цикле: AnsiString h=&quot;abcdefghijklmno&quot;; ...

3
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.12.2012, 12:02
Цитата Сообщение от mappy89 Посмотреть сообщение
область раполняется явно неравномерно
поясни...
0
2 / 2 / 2
Регистрация: 16.10.2011
Сообщений: 179
21.12.2012, 12:06  [ТС]
*заполняется

через секунд 20 после запуска программы (период обновления 200 мс) почти половина обасти оказывается заполненной
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
21.12.2012, 12:07
Цитата Сообщение от mappy89 Посмотреть сообщение
C++
1
2
if (((countN(i,j))==2) || ((countN(i,j))==3)) *//countN(i,j) - функция, рассчитывающая кол-во живых клеток вокруг кетки i j
tempcell[i][j]=true; * //если кол-во живых кл - 2 или 3 - рисуем живую клетку, иначе очищаем область
Для живых и мертвых клеток правила разные, а у тебя одни и те же. Если вокруг мертвой клетки 2 живых, клетка должна оставаться мертвой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2012, 12:07
Помогаю со студенческими работами здесь

Некорректная работа отладчика
Здравствуйте ! Была замечена некорректная работа отладчика RAD Studio 10.2.3 при разработке консольного приложения (объеём кода ~20 тыс...

Некорректная работа ZipForge?
Люди добрые, помогите кто чем может! Программа задумывалась таким образом: 1)Указываем дерикторию и IP чей-нибудь машины. 2)После...

Некорректная работа кода
Что тут не так что то не пашетvoid __fastcall TForm4::CheckBox1Click(TObject *Sender) { { if (Form4-&gt;CheckBox1-&gt;Checked) ...

Некорректная работа функции Sleep в цикле while
При вызове из цикла do - while, sleep срабатывает только один раз. А как сделать, чтобы между итерациями была пауза? Для примера: ...

Некорректная работа кнопки в текстовом редакторе
Есть код простого текстового редактора. Но в нем не работает кнопка изменения шрифта. Помогите исправить. Вот проект:


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
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. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru