Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Вниз

Траблы с фор ду или с руками.   Найти похожие ветки 

 
GrYRI   (2003-11-14 15:06) [0]


unit Life;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a: array[0..100,0..100,0..1] of byte;
b: array[0..100,0..100,0..1] of byte;
n:byte;

implementation

{$R *.DFM}

{procedure init;
var i,j:byte;
begin
randomize;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(2);
end;

procedure prlife;
var i,j,s:byte;
begin
s:=0;
for i:=1 to n do
for j:=1 to n do
begin
s:=s+a[i,j];
s:=s+a[i+1,j];
s:=s+a[i+2,j];
s:=s+a[i,j+1];
s:=s+a[i+2,j+1];
s:=s+a[i,j+2];
s:=s+a[i+1,j+2];
s:=s+a[i+2,j+2];
if b[i+1,j+1]<>2 then
if s>=5 then b[i+1,j+1]:=1
else b[i+1,j+1]:=2
else b[i+1,j+1]:=0;
s:=0;
end;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=b[i,j];
end;

procedure paint1;
var i,j:byte;cx,cy:word;
begin
cx:=0;
With Form1 do
begin
refresh;
for i:=1 to n do
begin
cx:=cx+5;
cy:=0;
for j:=1 to n do
begin
cy:=cy+5;
if a[i,j]=0 then Canvas.brush.color := clblack
else Canvas.brush.color := clRed;
Canvas.Ellipse(cx,cy,cx+5,cy+5);
end;
end;
end;
end;}

procedure TForm1.FormClick(Sender: TObject);
var ip,jp,il,jl,s,k,ir,jr:longint;
begin
//for k:=1 to 50 do
//begin
refresh;
for ip:=1 to 100 do
begin
for jp:=1 to 100 do
begin
if a[ip,jp,0]=0 then Canvas.brush.color := clblack
else Canvas.brush.color := clRed;
Canvas.Ellipse(ip*5,jp*5,ip*5+5,jp*5+5);
end;
end;
s:=0;
for il:=0 to 100 do
for jl:=0 to 100 do
begin
s:=s+a[il,jl,0];
s:=s+a[il+1,jl,0];
s:=s+a[il+2,jl,0];
s:=s+a[il,jl+1,0];
s:=s+a[il+2,jl+1,0];
s:=s+a[il,jl+2,0];
s:=s+a[il+1,jl+2,0];
s:=s+a[il+2,jl+2,0];
if s>=6 then b[il+1,jl+1,0]:=1;
if s=2 then
if a[il+1,jl+1,0]=1 then
begin
b[il+1,jl+1,1]:=1;
b[il+1,jl+1,0]:=1;
end
else b[il+1,jl+1,0]:=0;
if s<2 then b[il+1,jl+1,0]:=0;
if a[il+1,jl+1,1]=1 then
begin
b[il+1,jl+1,0]:=0;
b[il+1,jl+1,1]:=0;
end;
s:=0;
end;
for ir:=1 to 100 do
for jr:=1 to 100 do
begin
a[ir,jr,0]:=b[ir,jr,0];
a[ir,jr,1]:=b[ir,jr,1];
end;
//sleep(100);
//end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i,j:byte;
begin
randomize;
for i:=1 to 100 do
for j:=1 to 100 do
begin
a[i,j,0]:=random(2);
if a[i,j,0]=1 then a[i,j,1]:=random(2);
end;
{a[50,50,0]:=1;
a[51,51,0]:=1;
a[50,51,0]:=1;
a[51,50,0]:=1;
a[52,52,0]:=1;
{a[52,53,0]:=1;
a[53,52,0]:=1;
a[52,51,0]:=1;}
end;

end.


 
Palladin   (2003-11-14 15:10) [1]

И что это?


 
dataMaster   (2003-11-14 15:13) [2]

>Palladin

Насколько я понял, игру человек пишет. "Жизнь" называется... :-)


 
Palladin   (2003-11-14 15:14) [3]

:)
Ну тогда: И что с ней?


 
Silver Alex   (2003-11-14 15:15) [4]

в натуре прикольно :))


 
GrYRI   (2003-11-14 15:33) [5]

Проблемы с циклом фор ду в проседуре форм клик
for il:=0 to 100 do
for jl:=0 to 100 do

с этого места цикл работает так jl= 101 100 99 98
проблема только в этом а если менять значение s=>6 то можно наблюдать как умирает и т.д. но еще есть не оттебагеренные траблы


 
dataMaster   (2003-11-14 15:47) [6]

Может надо массив(ы) объявить до 101 элемента?
var
Form1: TForm1;
a: array[0.. 101,0.. 101,0..1] of byte;
b: array[0.. 101,0.. 100,0..1] of byte;
n:byte;


 
GrYRI   (2003-11-14 15:48) [7]

Удалено модератором


 
esVer   (2003-11-14 15:59) [8]

Удалено модератором


 
GrYRI   (2003-11-14 16:02) [9]

И что делать?


 
Anatoly Podgoretsky   (2003-11-14 16:15) [10]

Работает неправильно?


 
GrYRI   (2003-11-14 16:16) [11]

вообще да


 
Anatoly Podgoretsky   (2003-11-14 16:21) [12]

Тогда в чем неправильность проявляется?


 
GrYRI   (2003-11-14 16:23) [13]

Если менять значения С управляем в сторону живучести или умирания, то при С>=6 сеть должна умирать полностью а есть живущие островки


 
GrYRI   (2003-11-14 16:27) [14]

Да и вообще это не порядок я хочу управлять процессом а не как дельфи захочет, для отсчета в обр сторону есть даунто, и еслиб надо было я воспользовался а она мне свое сунет, как мне определить когда цикл нормально работает а когда оптимизатор включаеться или еэто зависит от параметров рандома?


 
panov   (2003-11-14 16:32) [15]

>GrYRI ©

Вопросы оформляй нормально. Здесь что, клуб телепатов?


 
GrYRI   (2003-11-14 16:34) [16]

Удалено модератором
Примечание: 1 неделя RO


 
GrYRI   (2003-11-14 16:35) [17]

Удалено модератором


 
Arm79   (2003-11-14 16:57) [18]

А нельзя просто отключить оптимизатор?


 
panov   (2003-11-14 17:10) [19]

>Arm79 © (14.11.03 16:57) [18]

А нельзя просто отключить оптимизатор?

Можно, но автор сможет ответить только через неделю.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.011 c
1-79012
-=[SDA]=-
2003-11-14 10:28
2003.11.24
Как закрыть приложение ???


14-79121
Слэш2
2003-11-01 11:34
2003.11.24
Где в инете значки есть на кнопки?


3-78751
Disruptor
2003-11-04 13:23
2003.11.24
Добавление в одну БД информации из другой


3-78800
MegaSharp
2003-11-05 13:07
2003.11.24
ADO + Delphi 5


7-79207
Samael
2003-09-16 12:28
2003.11.24
Перехват событий в NT/2000/XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский