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)
Recent changes RSS feed Creative Commons License Donate Driven by DokuWiki