SecondReality/TUNNELI/BALLGEN3.PAS
2017-09-24 01:45:36 +02:00

77 lines
No EOL
1.5 KiB
ObjectPascal

uses crt;
type bc = record
x : integer;
y : integer;
end;
rengas = record
x,y,r : shortint;
end;
var pallo : array[0..100] of bc;
putki : array[0..400] of rengas;
pcalc : array[0..117,0..63] of bc;
t : word;
procedure plot(x,y:integer;c:byte);
begin
if (x > 0) and (x < 319) and (y > 0) and (y < 199) then
mem[$a000:x+y*320] := c;
inc(t);
end;
procedure ball(px,py,r:integer;c:byte);
var x,y : word;
begin
for x := 0 to 31 do plot( px+round(sin(x*pi/16)*round(r*1.1)), py+round(cos(x*pi/16)*r), x div 8+1 );
end;
var x,y,z : integer;
x1,y1 : word;
a : word;
procedure clr;
begin
asm
mov ax,$a000
mov es,ax
mov cx,32000
mov di,0
xor ax,ax
rep stosw
end;
end;
var f : file;
r : word;
begin
asm
mov ax,$13
int $10
end;
r := 0;
for Z := 20 to 137 do
for a := 0 to 63 do
with pcalc[z-20][a] do
begin
x := 160+round(sin(a*pi/32)*round(z*1.7));
y := 100+round(cos(a*pi/32)*z);
end;
for x := 0 to 117 do
for y := 0 to 63 do plot(pcalc[x][y].x,pcalc[x][y].y,15);
assign(f,'tunnel.dat');
rewrite(f,1);
blockwrite(f,pcalc,sizeof(pcalc));
close(f);
repeat until keypressed;
asm
mov ax,$3
int $10
end;
end.