Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Demo Making    >>    flame
   
 
 Flame 2   Алексей Копылов 27.06.1996

Нечаянно полученный эффект, похожий на пламя



1k 
 

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.