/* Se autoriza la distribucion y uso libre de este programa (freeware) */ /* Fernando Galindo Soria Cd. de Mexico */ /* rayos 1993 */ #include #include #include #include #include #include void dibuja2(int,int,double,int,int); void rota(void); int w0,w1,w2,direcc=0, color[][16]={{15,15,15,15,15,14,10,2,2,2,2,2,2,4,4,4}, {15,15,6,15,8,10,7,10,2,8,8,7,8,8,6},}, lran,cran,co,car; double l0,l1,l2; int cota; void main() { int gd=DETECT,gm,i,ncolor,ine,basex,indco; double nc=0; int r1,r2,r3,r4; initgraph(&gd,&gm,""); randomize(); i=rand(); i=random(random(397)); i=rand(); i=rand(); srand((unsigned) time(&i)); randomize(); cleardevice(); nc=0; setcolor(random(16)+1); while (!kbhit()) { nc=0; while((random(3)!=0)&&(kbhit()==0)) { nc+=0.30;//rayos w0=-20+random(10); w1=-5+random(10); w2=20-random(10); l0=0.52,l1=0.8;l2=0.71;cota=19; lran=random(10); cran=random(10);i=20+(int)(nc); r1=random(getmaxx());r2=random(200);r3=random(20);r4=random(40); co=15; dibuja2(r1,r2,50+r3,290-r4,15); co=9; dibuja2(r1,r2,50+r3,290-r4,15); cleardevice(); } } cleardevice(); closegraph(); } void rota() { outport(0x3d4,13); direcc++; if(direcc>79)direcc=0; outport(0x3d5,direcc); } void dibuja2(int x0,int y0,double l,int an,int ind) { int x1,y1,colorin; if (l >cota && !kbhit()) { if(co<7) colorin=color[co][ind]; else colorin=co; if(x0>getmaxx())x0=0; if(x0<0)x0=getmaxx(); x1=x0-(l*cos(an/57.29578)); y1=y0-(l*sin(an/57.29578)); if(colorin>=0) { setcolor(colorin); line(x0,y0,x1,y1); } else moveto(x1,y1); if(random(4)!=3)dibuja2(x1,y1,(l+random(5))*l0,an+w0+random(4)-5,ind-1); if(random(4)!=0)dibuja2(x1,y1,(l+random(5))*l1,an+w1+random(4)-5,ind-1); if(random(4)!=2)dibuja2(x1,y1,(l+random(5))*l2,an+w2+random(4)-5,ind-1); if(random(8000)==17)rota(); delay(2); } }