home *** CD-ROM | disk | FTP | other *** search
-
- { HEY! PcManíacos: }
-
- { Si queréis contactar con los autores de esta sección, }
- { ahora podéis hacerlo a través de sus e-mails privados: }
-
- { Miquel Barceló: (Demoscene) }
- { e-mail: sa281@blues.uab.es }
-
- { Eduard Sánchez Palazón (Curso de ficheros musicales/Demoscene) }
- { e-mail: eduard@ergos.es }
-
- { Esperamos vuestros mensajes! }
-
- { -------------------------------------------------------------- }
- { Efectos Recursivos / water.pas }
- { Por Miquel Barceló }
- { -------------------------------------------------------------- }
-
- uses crt,graf;
-
- procedure Prepara_Paleta;
- var
- cont : integer;
- r,g,b : byte;
- begin
- for cont:=0 to 125 do
- putrgb(cont,30*cont div 125,35*cont div 125,50*cont div 125);
- for cont:=126 to 255 do
- putrgb(cont,30+33*(cont-125) div 130,35+28*(cont-125) div 130,50+13*(cont-125) div 130);
- end;
-
- procedure Agua (desde,hasta : pointer);
- var
- cont : word;
- s1,o1,s2,o2 : word;
- temp : integer;
- begin
- s1:=seg(desde^);
- o1:=ofs(desde^);
- s2:=seg(hasta^);
- o2:=ofs(hasta^);
- for cont:=320 to 63680 do
- begin
- temp:=mem[s1:o1+cont-320]+
- mem[s1:o1+cont-1]+
- mem[s1:o1+cont+1]+
- mem[s1:o1+cont+320]
- -512;
- temp:=temp shr 1 - mem[s2:o2+cont]+128;
- mem[s2:o2+cont]:=128+temp-temp shr 7;
- end;
- end;
-
- var
- pant :array [0..1] of pointer;
- c :integer;
- cnt : integer;
- begin
- getmem(pant[0],64000);
- getmem(pant[1],64000);
- cls(128,pant[0]^);
- cls(128,pant[1]^);
- Set_Vga;
- Prepara_Paleta;
- c:=0;
- repeat
- Agua(pant[c],pant[c xor 1]);
- c:=c xor 1;
- flip(pant[c]^,vga^);
- mem[seg(pant[c]^):ofs(pant[c]^)+320+random(63360)]:=255;
- mem[seg(pant[c]^):ofs(pant[c]^)+320+random(63360)]:=255;
- mem[seg(pant[c]^):ofs(pant[c]^)+320+random(63360)]:=255;
- until keypressed;
- readkey;
- repeat
- Agua(pant[c],pant[c xor 1]);
- c:=c xor 1;
- flip(pant[c]^,vga^);
- mem[seg(pant[c]^):ofs(pant[c]^)+32160+round(80*sin(cnt/15))+320*round(80*sin(cnt/21))]:=250;
- cnt:=cnt+1;
- until keypressed;
- readkey;
- repeat
- Agua(pant[c],pant[c xor 1]);
- c:=c xor 1;
- flip(pant[c]^,vga^);
- until keypressed;
- Set_Text;
- freemem(pant[0],64000);
- freemem(pant[1],64000);
- end.
-