PROGRAM Satan_666;
USES crt, graph;
VAR
vpor,kolor,tlo,c,d,a,b,n,r1,r,x,y,xa,ya,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5:INTEGER;
v3d,aobr,vobr,m,l,k:REAL;
BEGIN
randomize;
a:=9;
b:=2;
ClrScr;
InitGraph(a,b,'{c:\\progra~1\\pp\\bgi\\'});
vpor:=10;
vobr:=0.4;
aobr:=3;
v3d:=0.05;
tlo:=0;
kolor:=4;
x:=319;
y:=239;
r:=70;
r1:=r;
k:=0;
m:=0;
n:=1;
SetLineStyle(0,1,1);
SetBkColor(tlo);
delay(70);
REPEAT
REPEAT
c:=4*(random(4)-2);
d:=4*(random(4)-2);
UNTIL NOT ((c=0) AND (d=0));
IF x<r1+8 THEN
BEGIN
c:=4*(1+random(1));
n:=-n;
END;
IF x>631-r1 THEN
BEGIN
c:=4*(-1-random(1));
n:=-n;
END;
IF y<r+8 THEN d:=4*(1+random(1));
IF y>471-r THEN d:=4*(-1-random(1));
REPEAT
IF ((c=0) AND ((d=-1) OR (d=1))) OR ((d=0) AND ((c=-1) OR (c=1))) THEN
BEGIN
delay(vpor);
END
ELSE
BEGIN
IF ((c=-1) AND ((d=-1) OR (d=1))) OR ((d=1) AND ((c=-1) OR (c=1))) THEN
BEGIN
delay(round(1.414*vpor));
END
ELSE
BEGIN
IF ((c=-2) AND ((d=-2) OR (d=2))) OR ((d=2) AND ((c=-2) OR (c=2))) THEN
BEGIN
c:=round(c/2);
d:=round(d/2);
delay(round(1.414*vpor));
END
ELSE
BEGIN
IF ((c=0) AND ((d=-2) OR (d=2))) OR ((d=0) AND ((c=-2) OR (c=2))) THEN
BEGIN
c:=round(c/2);
d:=round(d/2);
delay(vpor);
END
ELSE
BEGIN
delay(round(2.236*vpor));
END;
END;
END;
END;
SetColor(tlo);
line(x1,y1,x3,y3);
line(x1,y1,x4,y4);
line(x2,y2,x4,y4);
line(x2,y2,x5,y5);
line(x3,y3,x5,y5);
ellipse(x,y,0,360,r1,r);
x:=x+c;
y:=y+d;
x1:=round(x+(sin(0+k)*r*sin(m)));
y1:=round(y+cos(0+k)*r);
x2:=round(x+(sin(1.2566+k)*r*sin(m)));
y2:=round(y+cos(1.2566+k)*r);
x3:=round(x+(sin(2*1.2566+k)*r*sin(m)));
y3:=round(y+cos(2*1.2566+k)*r);
x4:=round(x+(sin(3*1.2566+k)*r*sin(m)));
y4:=round(y+cos(3*1.2566+k)*r);
x5:=round(x+(sin(4*1.2566+k)*r*sin(m)));
y5:=round(y+cos(4*1.2566+k)*r);
SetColor(kolor);
line(x1,y1,x3,y3);
line(x1,y1,x4,y4);
line(x2,y2,x4,y4);
line(x2,y2,x5,y5);
line(x3,y3,x5,y5);
r1:=round(abs(sin(m))*r);
ellipse(x,y,0,360,r1,r);
l:=l+(0.001*vpor/10);
IF l>=6.2832/aobr THEN l:=0;
m:=m+n*(v3d*vpor/10);
IF m>=6.2832 THEN m:=0;
IF m<=-6.2832 THEN m:=0;
vobr:=0.18*sin(aobr*l);
k:=k+vobr;
IF k>=6.2832 THEN k:=0;
UNTIL (x<r1+8) OR (x>631-r1) OR (y<r+8) OR (y>471-r) OR (keypressed);
UNTIL keypressed;
ReadKey;
CloseGraph
END.
projects/satan3d.txt · Last modified: 2010/07/25 18:16 (external edit)