Программа "Жизнь"
|
|
masb8ly-GC | Дата: Среда, 07 Декабря 2011, 21:23 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Здравствуйте! Готовясь к олимпиаде я ставлю перед собой цели и постепенно их выполняю. Так вот я начал делать программу "Жизнь", но у меня возникла странная проблемма. При итерациях всегда доминирует желтый цвет, а красного всегда меньше всех. Итерация происходит так: взять клетку таблицы посмотреть ее окружение, окрасить в тот цвет, которго больше в окружении. С чем может быть связана эта проблема? Вот результаты 5 тестов, каждый в 3 этапа. 1 случайно заселение, 2 первая итераци, 3 итерация до окончательного положения.
Backend Developer ESIS Client Side Developer Room8Studio Technical Leader Lucid Reality Labs Chief Technology Officer The Intruders Chief Technology Officer RoyalePlay Games
Сообщение отредактировал masb8ly-GC - Среда, 07 Декабря 2011, 21:25 |
|
| |
Matou | Дата: Четверг, 08 Декабря 2011, 00:29 | Сообщение # 2 |
Исходный коТ
Сейчас нет на сайте
| У тебя изначально желтого цвета больше, потому он и побеждает, проблема в генераторе.
Quote (masb8ly-GC) начал делать программу "Жизнь" Quote (masb8ly-GC) взять клетку таблицы посмотреть ее окружение, окрасить в тот цвет, которго больше в окружении. Какая-то нитакая у тебя жизнь, у нас другая была)
|
|
| |
masb8ly-GC | Дата: Четверг, 08 Декабря 2011, 19:46 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| Quote (Matou) Какая-то нитакая у тебя жизнь, у нас другая была) Да вы правы есть несколько версий "жизни" каждый работает по своим правилам и алгоритмам. А на счет генератора все вроде нормально: Code procedure TForm1.btn1Click(Sender: TObject); begin For I:=1 to 100 Do For J:=1 to 100 Do Begin l[i,j]:=Random(4); if (l[i,j]=2) then drwgrd1.canvas.Brush.Color := clRed else if (l[i,j]=3) then drwgrd1.canvas.Brush.Color := clBlue else drwgrd1.canvas.Brush.Color := clYellow; drwgrd1.canvas.FillRect(drwgrd1 .CellRect(i,j)); end; end;
Backend Developer ESIS Client Side Developer Room8Studio Technical Leader Lucid Reality Labs Chief Technology Officer The Intruders Chief Technology Officer RoyalePlay Games
|
|
| |
TimKruz | Дата: Воскресенье, 11 Декабря 2011, 17:25 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Quote (masb8ly-GC) А на счет генератора все вроде нормально: Эээ, в смысле нормально? Quote (masb8ly-GC) l[i,j]:=Random(4); if (l[i,j]=2) then drwgrd1.canvas.Brush.Color := clRed else if (l[i,j]=3) then drwgrd1.canvas.Brush.Color := clBlue else drwgrd1.canvas.Brush.Color := clYellow; Random(4) выкидывает одно из следующих чисел: 0,1,2,3. Поэтому жёлтый цвет получается в два раза чаще (если 0 или 1), чем красный или синий. Попробуй random(3) или random(3)+1. А перебор вариантов лучше сделать кэйсом: Quote blablabla:=random(3)+1; case blablabla of 1: Color:=clYellow 2: Color:=clRed 3: Color:=clBlue end;
*** Вот только попробовал так сделать - получилось, что постоянно выживают синие, хотя распределение идёт 1:1:1. Получается, у тебя проблема ещё и с обработкой поля...
Сообщение отредактировал TimKruz - Воскресенье, 11 Декабря 2011, 17:29 |
|
| |
masb8ly-GC | Дата: Воскресенье, 11 Декабря 2011, 20:42 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Спасибо за помощь, попозже подумаю над эти! Сейчас просто вплотную занят подготовкой к областной олимпиаде, времени совсем не много))
Backend Developer ESIS Client Side Developer Room8Studio Technical Leader Lucid Reality Labs Chief Technology Officer The Intruders Chief Technology Officer RoyalePlay Games
|
|
| |