Friday June 14 1996 20:02, Dmitry Naghin писал Genya Koinov:
GK>> Люди, а не знает ли кто здесь , как пламя pисовать? А то сижу тут
GK>> уже целую неделю , а в голову стоющих мыслей так и не пpишло!
А вот еще. Дружок хотел какой-то алгоритм фильтрации реализовать. Hо вместо
того, что бы копировать данные из одного буфера в другой, он делал
преобразования в этом же -- и получил нечаянно нечто, похожее на пламя.
Alexey Kopylov
---
* Origin: (2:5050/2.5@@fidonet.org)
{> Cut here. FileName= FLAME.PAS }
program Test;
{uses CRT;}
var M : array[0..199,0..319] of Byte absolute $A000:$0000;
Num : Word;
procedure SetPalette;
var N, C : Integer;
begin
Port[$3C8] := 0;
for N := 0 to 255 do begin
if N mod 128 < 64 then C := N mod 64 else C := 63 - N mod 64;
Port[$3C9] := C+n;
Port[$3C9] := C;
Port[$3C9] := C;
end;
end; {of SetPalette}
var X, Y, S, DX, DY, C : Integer;
begin
asm mov ax,$13; int $10; end;
SetPalette;
for Num := 0 to 64000 do Mem[$A000:Num] := Num div 2 mod 320;
DX := 0; DY := 0; C := 30;
while 1=1 do begin
if DX < 100 then begin
Inc(DX); Inc(DY);
end
else if C < 60 then Inc(C) else begin
asm mov ax,$03; int $10; end;
Exit;
end;
for Num := 0 to DY do M[DY,Num] := Random(C)+8;
for Num := 0 to DX{-1} do M[Num,DX] := Random(C)+8;
for Num := 1 to 5000 do begin
Y := Random(DY);
X := Random(DX);
S := (M[Y+1,X+1]*2+M[Y+1,X]*2+M[Y+1,X]+M[Y,X+1]*2+M[Y,X+1]) div 8;
if S >= M[Y,X] then Inc(M[Y,X],2) else Dec(M[Y,X],1);
end;
end;
asm mov ax,$03; int $10;
end;
end.
|