コード例 #1
0
ファイル: glut.cpp プロジェクト: Sefjor/red-black-tree
void quant(int x, int y, int& xleft, int& xright, int& yboth, int printnum, double level, col color)
{
    printtext("", printnum, x, y);
    int r = 12;
    float dx = 8-level;
    xright = x + r * dx;
    yboth = y + r * 2.5;
    xleft = x - r * dx;
    if (color == col::red)  glColor3f(1, 0, 0);
    else glColor3f(0, 0, 0);
    mycircle(x, y, r);
    if (printnum != 0)
    {
    glColor3f(0, 0, 0);
    mycircle(xright, yboth, r);
    mycircle(xleft, yboth, r);
    myline(x + 0.8 * r, y + 0.6 * r, xright - 0.3 * r, yboth - 0.9 * r);
    myline(x - 0.8 * r, y + 0.6 * r, xleft + 0.3 * r, yboth - 0.9 * r);
    }
}
コード例 #2
0
ファイル: menu.cpp プロジェクト: rohit-95/Graphics
void myfunc_menu() {
    cleardevice();
    clearmouseclick(WM_RBUTTONDOWN);
    Point2D a, b;
    outtext((char*)"Click and drag to make a circle and show its radius, RIGHT CLICK TO EXIT");
    do {
        mouseLine(a, b);
        int r = rnd(sqrt(pow((b.x - a.x), 2) + pow((b.y - a.y), 2)));
        myline(a, b);
        mycircle(a, r);
    }while(!ismouseclick(WM_RBUTTONDOWN));
}
コード例 #3
0
ファイル: 183.C プロジェクト: bearjb/studyc
main()
{
	int mode=VGAHI,driver=VGA;
	char ch;
 	unsigned int l;
 	int i,gi,gj,j,flag=1;/*i,j是循环变量,flag是标记变量,-1:向x负半轴移动,+1:向x正半轴移动*/
 	double qx,qy,k,b=0.0,speech=0.4,x,y;
 	double r=2.0,bx=60.0,byy=270.0;
 	double pianx=100.0,piany=100.0,tx=20.0,ty=10.0,jx=2.0,jy=2.0;
 	int mx=0,my=0,mb,sum;/*sum纪录砖块的数目*/
 	FILE * p;
  	if((p = fopen("record.dat", "r")) == NULL)
    	{
    		p=fopen("record.dat","w");
    		fprintf(p,"0 0 0 0 0\n");
    		rewind(p);
     	}
     	fclose(p);

	initgraph(&driver,&mode,"C:\\tc");
	setbkcolor(BLUE);
 	Msinit();
 	Setmouse((int)(pianx+1+bx/2),(int)((tx+jx)*8+pianx-1-bx/2),(int)byy+piany,(int)byy+piany);

star:	cleardevice();/*程序重载的介入点*/
	setcolor(RED);
	outtextxy(30,20,"^_^ Welcome to Play Hitting Brick Game! ^_^");

	sum=0;
 	qx=100.0+pianx-10;qy=180.0+pianx-10;k=0.33;
 	setcolor(7);
 	rectangle((int)(pianx-2),(int)(piany-2),(int)((tx+jx)*8+2+pianx),302+piany);
 	setcolor(1);
 	rectangle((int)(pianx-1),(int)(piany-1),(int)((tx+jx)*8+1+pianx),301+piany);
 	/*读取盘面情况*/
 	p=fopen("record.dat", "r");
 	for(i=0;i<5;i++)
 		fscanf(p,"%x ",&zhuan[i]);
 	fclose(p);
 	/*画砖块*/
 	for(i=0;i<5;i++)
 	{
 		l=1;
  		for(j=0;j<16;j++)
  		{
  			if((zhuan[i]&l)==0)
   			{
   				Draw((int)((jx+tx)*((16*i+j)%8)+pianx+jx),(int)((jy+ty)*((int)((16*i+j)/8))+piany+jy),(int)tx,(int)ty);
    				sum+=1;
   			}
   			l=l*2;
  		}
 	}
	gotoxy(5,4);
	printf("Press any key to start game...Q key to quit...");
	ch=getch();
	if(ch=='q'||ch=='Q')
		quitgame();
	else
	{
		gotoxy(5,4);
		printf("                                              ");
	}

 	for(;;)
	{
		setfillstyle(1, 0);
  		bar(mx-bx/2,my,mx+bx/2,my+5);
  		Msread(&mx, &my, &mb);

  		Draw(mx-bx/2,my,bx,5);
  		setcolor(0);
		mycircle(qx,qy,r,0);
  		/*判断求是否反弹*/
  		if(qx-r<=pianx+1 || qx+r>=(tx+jx)*8+pianx-1)
  		{
  			flag=-flag;
  			k=-k;
  		}
  		if(qy-r<=piany+1)
  			k=-k;

  		for(gi=0;gi<5;gi++)
  		{
  			l=1;
  			for(gj=0;gj<16;gj++)
  			{
  				if((zhuan[gi]&l)==0)
    				{
    					j=(16*gi+gj)/8;
     					i=(16*gi+gj)%8;
     					x=(jx+tx)*i+jx+tx/2+pianx;
     					y=(jy+ty)*j+jy+ty/2+piany;
     					/*边判断1*/
     					if(qy>=y-ty/2 && qy<=y+ty/2 &&(pow(qx+r-x+tx/2,2)<1 || pow(qx-r-x-tx/2,2)<1))
      					{
      						flag=-flag;
      						k=-k;
       						zhuan[gi]=zhuan[gi]|l;
       						sum-=1;
       						if(sum==0)
       							wingame();
       						setfillstyle(1, 0);
       						bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)*j+piany+jy+ty);
      					}
      					else
      					/*边判断2*/
     					if(qx>=x-tx/2 && qx<=x+tx/2 &&(pow(qy+r-y+ty/2,2)<1 || pow(qy-r-y-ty/2,2)<1))
      					{
      						k=-k;
       						zhuan[gi]=zhuan[gi]|l;
       						sum-=1;
       						if(sum==0)
       							wingame();
       						setfillstyle(1, 0);
       						bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)*j+piany+jy+ty);
      					}
      					else
      					/*角判断*/
     					if(pow(qx-x+tx/2,2)+pow(qy-y+ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y+ty/2,2)<=r*r || pow(qx-x+tx/2,2)+pow(qy-y-ty/2,2)<=r*r || pow(qx-x-tx/2,2)+pow(qy-y-ty/2,2)<=r*r)
      					{
      						flag=-flag;
       						zhuan[gi]=zhuan[gi]|l;
       						sum-=1;
       						if(sum==0)
       							wingame();
       						setfillstyle(1, 0);
       						bar((jx+tx)*i+pianx+jx,(jy+ty)*j+piany+jy,(jx+tx)*i+pianx+jx+tx,(jy+ty)*j+piany+jy+ty);
      					}
     				}
     				l=l*2;
     			}
     		}
  		/*棍棒的反弹*/
  		if(qx<=mx+bx/2 && qx>=mx-bx/2 && pow(qy+r-my,2)<1)
  		{
  			k=-(k/pow(k*k,0.5))*(0.3*bx/(pow(pow(qx-mx,2),0.5)+0.000001));
  		}
  		if((int)(qy+r)>my+0.5)
  		{
			gotoxy(5,5);
  			printf("You have lost the game!Press any key to restart...");
  			getch();
  			goto star;
  		}
  		b=qy-qx*k;
  		if(flag==1)
  			qx=qx+speech/pow(1.0+k*k,0.5);
  		if(flag==-1)
  			qx=qx-speech/pow(1.0+k*k,0.5);
  		qy=qx*k+b;/*计算球心坐标*/
  		setcolor(14);
		mycircle((int)qx,(int)qy,r,14);
  		delay(1);
  		if(mb==1)
  		{
			gotoxy(5,5);
  			printf("You have lost the game!Press any key to restart...");
  			getch();
  			goto star;
  		}
 	}
}
コード例 #4
0
ファイル: hue4.c プロジェクト: joeytwiddle/code
int main(void) {

    int f,i,j,k,c,x,y,ix,iy,displayloop;
    float thru,ctmp;
    RGB rgb;
    FILE *fp;

    srand((int)time(NULL));

    usingmap=0;
    makingmap=1;
    mmx=0;
    mmy=0;


    img=(uchar **)calloc(scrhei,sizeof(uchar *));
    img2=(uchar **)calloc(scrhei,sizeof(uchar *));
    for (y=0; y<scrhei; y++) {
        img[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        img2[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        for (x=0; x<scrwid; x++) {
            img[y][x]=255*y/scrhei;
            img2[y][x]=myrnd()*255;
            if (x<scrwid-1 && y<scrhei-1) {
                pix[x][y][usingmap]=x;
                piy[x][y][usingmap]=y;
                for (i=0; i<=1; i++)
                    for (j=0; j<=1; j++)
                        amount[x][y][i][j][usingmap]=(float)1/4;
            }
        }
    }

    /* Originals from QB
       op[0] = 1; damp[0] = .999; force[0] = .005;
       op[1] = 1.02; damp[1] = .999; force[1] = .002;
       op[2] = 0; damp[2] = .999; force[2] = .002;
       op[3] = 1; damp[3] = .999; force[3] = .005;
       op[4] = 1; damp[4] = .999; force[4] = .005;
       op[5] = 0; damp[5] = .999; force[5] = .002;
    */

    /* From QB later
       name$(1) = "Velocity"
       op(1) = 1: damp(1) = .999: force(1) = .002
       name$(2) = "Rotation"
       op(2) = 0: damp(2) = .999: force(2) = .002
       name$(3) = "Drip"
       op(3) = 1: damp(3) = .999: force(3) = .005
       name$(4) = "Dribble"
       op(4) = 1: damp(4) = .999: force(4) = .005
       name$(5) = "Slide"
       op(5) = 0: damp(5) = .999: force(5) = .002
       name$(6) = "Accelerate"
       op(6) = 1: damp(6) = .999: force(6) = .005
       name$(7) = "xDisplace"
       op(7) = 0: damp(7) = .999: force(7) = .005
       name$(8) = "yDisplace"
       op(8) = 0: damp(8) = .999: force(8) = .005
       REM 9 and 10 are options for splitting displacements (no var)
       name$(9) = "2d/3d split"
       name$(10) = "Split"
    */

    // 0 Accelerate
    op[0] = 1;
    damp[0] = .999;
    force[0] = .005;
    // 1 Velocity
    op[1] = 1.02;
    damp[1] = .999;
    force[1] = .01;
    // 2 Rotation
    op[2] = 0;
    damp[2] = .995;
    force[2] = .03;
    // 3 y splurge
    op[3] = 0;
    damp[3] = .999;
    force[3] = .01;
    // 4 Dribble
    op[4] = 1;
    damp[4] = 0;
    force[4] = .01;
    // 5 x splurge
    op[5] = 0;
    damp[5] = .999;
    force[5] = .01;
    op[6]=2;
    damp[6]=.9999;
    force[6]=.01;
    op[7]=1;
    damp[7]=.999;
    force[7]=.01;

    for (f=0; f<fs; f++) {
        var[f] = op[f];
        fon[f]=1;
    }

    allegrosetup(scrwid,scrhei);
    _farsetsel(screen->seg);

    starttimer();

    while(!key[KEY_ESC]) {

        moremap();


        // Animate
        for (x=0; x<scrwid; x++) {
            for (y=0; y<scrhei; y++) {
                c=0;
                for (i=0; i<=1; i++) {
                    for (j=0; j<=1; j++) {
                        c=c+amount[x][y][i][j][usingmap]*img[piy[x][y][usingmap]+j][pix[x][y][usingmap]+i];
                    }
                }
                c--;
                img2[y][x]=c;
            }
        }
        /* for (y=0;y<scrhei;y++) {
             for (x=0;x<scrwid;x++) {
               _farpokeb(screen->seg, (unsigned long)screen->line[y]+x, img2[y][x]);
             }
        }*/
        for (y=0; y<scrhei; y++) {
            movedata(_my_ds(), img2[y], screen->seg, bmp_write_line(screen,y), scrwid);
        }
        for (f=0; f<fs; f++) {
            if (fon[f]) {
                hline(screen, scrwid/2, f*2, scrwid/2+(var[f] - op[f]) * scrwid * 4, 0);
            }
        }
        toff=toff-(float)1/128;
        for (c=0; c<=255; c++) {
            thru=saw((float)c/255-toff);
            rgb.r=huefor(thru,(float)0);
            rgb.g=huefor(thru,(float)1/3);
            rgb.b=huefor(thru,(float)2/3);
            set_color(c,&rgb);
        }
        imgtmp=img;
        img=img2;
        img2=imgtmp;
        for (i=1; i<=5; i++) {
            mycircle(myrnd()*scrwid,myrnd()*scrhei,2+myrnd()*8,myrnd()*255);
        }
        framedone();
    }

    allegro_exit();
    displayframespersecond();

}
コード例 #5
0
int main(void)
{
   /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;
   int midx, midy,x=0,y=0,r=0,i=0,j=0,radius=50,c=0,s=1;
   struct line l[15],base;
   struct line a1,a2,b1,b2,c1,c2,d1,d2,e1,e2,f1,g1,g2,h1,h2,i1,i2,j1,j2;
   point center;
   char ch='z';
   /* initialize graphics and local variables */
   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */
   errorcode = graphresult();
   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1); /* terminate with an error code */
   }
   midx = getmaxx() / 2;
   midy = getmaxy() / 2;
   center.x=0;
   center.y=-midy/2;
   //setcolor(RED);
   base.p[0].x=-midx,base.p[0].y=-midy/2-14,base.p[1].x=midx,base.p[1].y=-midy/2-14;
    while(1)
   {
       ch=getch();
       j++;
       if(ch=='d'||ch==77)
      {
        center.x+=10;
        if(center.x>getmaxx())
            center.x=-getmaxx() / 2;
      }
     else if(ch=='a'||ch==75)
     {
         center.x-=10;
         if(center.x<-getmaxx() / 2)
            center.x=getmaxx() ;
     }
     else if(ch=='w'||ch==72)
     {
         center.y+=12;
     }
     else if(ch=='s'||ch==80)
     {
         if(center.y>=-midy/2)
         center.y=-midy/2;
     }
     else if(ch=='x')
        break;
    i++%7;
   setcolor(i);
  bar(0,0,getmaxx(),getmaxy());
   a1.p[0].x=center.x-160,a1.p[0].y=center.y,a1.p[1].x=center.x-160,a1.p[1].y=center.y+15;
   a2.p[0].x=center.x+160,a2.p[0].y=center.y,a2.p[1].x=center.x+160,a2.p[1].y=center.y+15;
   b1.p[0].x=center.x-160,b1.p[0].y=center.y,b1.p[1].x=center.x-110,b1.p[1].y=center.y;
   b2.p[0].x=center.x+160,b2.p[0].y=center.y,b2.p[1].x=center.x+110,b2.p[1].y=center.y;
   c1.p[0].x=center.x-160,c1.p[0].y=center.y+15,c1.p[1].x=center.x-120,c1.p[1].y=center.y+15;
   c2.p[0].x=center.x+160,c2.p[0].y=center.y+15,c2.p[1].x=center.x+120,c2.p[1].y=center.y+15;
   d1.p[0].x=center.x-120,d1.p[0].y=center.y+15,d1.p[1].x=center.x-60,d1.p[1].y=center.y+60;
   d2.p[0].x=center.x+120,d2.p[0].y=center.y+15,d2.p[1].x=center.x+60,d2.p[1].y=center.y+60;
   e2.p[0].x=center.x-60,e2.p[0].y=center.y+60,e2.p[1].x=center.x+60,e2.p[1].y=center.y+60;
   e1.p[0].x=center.x-70,e1.p[0].y=center.y,      e1.p[1].x=center.x+70,  e1.p[1].y=center.y;
   f1.p[0].x=center.x,   f1.p[0].y=center.y,       f1.p[1].x=center.x,    f1.p[1].y=center.y+60;
   g1.p[0].x=center.x-90,g1.p[0].y=center.y+30,g1.p[1].x=center.x-54,g1.p[1].y=center.y+57;
   g2.p[0].x=center.x+90,g2.p[0].y=center.y+30,g2.p[1].x=center.x+54,g2.p[1].y=center.y+57;
   j1.p[0].x=center.x-90,j1.p[0].y=center.y+30,j1.p[1].x=center.x-5,j1.p[1].y=center.y+30;
   j2.p[0].x=center.x+90,j2.p[0].y=center.y+30,j2.p[1].x=center.x+5,j2.p[1].y=center.y+30;
   i1.p[0].x=center.x-5,i1.p[0].y=center.y+30,i1.p[1].x=center.x-5,i1.p[1].y=center.y+57;
   i2.p[0].x=center.x+5,i2.p[0].y=center.y+30,i2.p[1].x=center.x+5,i2.p[1].y=center.y+57;
   h1.p[0].x=center.x-5,h1.p[0].y=center.y+57,h1.p[1].x=center.x-54,h1.p[1].y=center.y+57;
   h2.p[0].x=center.x+5,h2.p[0].y=center.y+57,h2.p[1].x=center.x+54,h2.p[1].y=center.y+57;
   circle(center.x-90+midx,midy-center.y,14);
   circle(center.x+90+midx,midy-center.y,14);
   mycircle(center.x-90+midx,midy-center.y,20,i);
   mycircle(center.x+90+midx,midy-center.y,20,i);
    print(base);
    print(a1);
    print(a2);
    print(b1);
    print(b2);
    print(c1);
    print(c2);
    print(d1);
    print(d2);
    print(e1);
    print(e2);
    print(f1);
    print(g1);
    print(j1);
    print(i1);
    print(h1);
    print(g2);
    print(j2);
    print(i2);
    print(h2);
    if(ch=='a'||ch==75)
    {
    line(center.x+160,midy-center.y-7,center.x+120,midy-center.y-17);
    line(center.x+160,midy-center.y-7,center.x+120,midy-center.y+3);
    }
    if(ch=='d'||ch==77)
    {
    line(center.x+480,midy-center.y-7,center.x+520,midy-center.y-17);
    line(center.x+480,midy-center.y-7,center.x+520,midy-center.y+3);
    }
    if(j%4!=0)
    {
    line(center.x-90+midx+7,midy-center.y+7,center.x-90+midx-7,midy-center.y-7);
    line(center.x-90+midx+7,midy-center.y-7,center.x-90+midx-7,midy-center.y+7);
    line(center.x+90+midx+7,midy-center.y+7,center.x+90+midx-7,midy-center.y-7);
    line(center.x+90+midx+7,midy-center.y-7,center.x+90+midx-7,midy-center.y+7);
    }
    else
    {
    line(center.x-90+midx+9,midy-center.y,center.x-90+midx-9,midy-center.y);
    line(center.x-90+midx,midy-center.y-9,center.x-90+midx,midy-center.y+9);
    line(center.x+90+midx+9,midy-center.y,center.x+90+midx-9,midy-center.y);
    line(center.x+90+midx,midy-center.y-9,center.x+90+midx,midy-center.y+9);
    }
   }
   getch();
   closegraph();
   return 0;
}
コード例 #6
0
ファイル: psycho3.c プロジェクト: joeytwiddle/code
int main(void) {

    int f,i,j,k,c,x,y,ix,iy,displayloop;
    int usingmap,makingmap,mmx,mmy,tmpmap,maploop;
    float rx,ry,nrx,nry,px,py;
    RGB rgb;
    FILE *fp;

    img=(uchar **)calloc(scrhei,sizeof(uchar *));
    for (y=0; y<scrhei; y++) {
        img[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        for (x=0; x<scrwid; x++) {
            img[y][x]=myrnd()*255;
        }
    }
    img2=(uchar **)calloc(scrhei,sizeof(uchar *));
    for (y=0; y<scrhei; y++) {
        img2[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        for (x=0; x<scrwid; x++) {
            img2[y][x]=myrnd()*255;
        }
    }

    srand((int)time(NULL));

    usingmap=0;
    makingmap=1;
    mmx=0;
    mmy=0;

    /* Originals from QB
    op[0] = 1; damp[0] = .999; force[0] = .005;
    op[1] = 1.02; damp[1] = .999; force[1] = .002;
    op[2] = 0; damp[2] = .999; force[2] = .002;
    op[3] = 1; damp[3] = .999; force[3] = .005;
    op[4] = 1; damp[4] = .999; force[4] = .005;
    op[5] = 0; damp[5] = .999; force[5] = .002;
    */

// 0 Accelerate
    op[0] = 1;
    damp[0] = .999;
    force[0] = .005;
// 1 Velocity
    op[1] = 1.02;
    damp[1] = .999;
    force[1] = .01;
// 2 Rotation
    op[2] = 0;
    damp[2] = .999;
    force[2] = .05;
// 3 Drip
    op[3] = 1;
    damp[3] = .999;
    force[3] = .03;
// 4 Dribble
    op[4] = 1;
    damp[4] = .999;
    force[4] = .01;
// 5 Slide
    op[5] = 0;
    damp[5] = .999;
    force[5] = .01;

    for (f=0; f<fs; f++) {
        var[f] = op[f];
        fon[f]=1;
    }

    allegro_init ();
    install_keyboard ();
    install_timer ();
    set_gfx_mode (GFX_AUTODETECT, scrwid, scrhei, 0, 0);
    set_pallete (desktop_palette);
    _farsetsel(screen->seg);
    for (c=0; c<=255; c++) {
        rgb.r=saw(0,c);
        rgb.g=saw(256/3,c);
        rgb.b=saw(2*256/3,c);
        set_color(c,&rgb);
    }

    while(!key[KEY_ESC]) {

        // Generate some more of the map
        for (maploop=1; maploop<scrwid*scrhei/15; maploop++) {
            rx=(float)mmx/scrwid*2-1;
            ry=(float)(mmy-scrhei/2)/scrwid*2;
            if (fon[1]) {
                rx = rx / var[1];
                ry = ry / var[1];
            }
            if (fon[0]) {
                rx = mysgn(rx)/var[1]*mypow(myabs(rx),1/var[6]);
                ry = mysgn(ry)/var[1]*mypow(myabs(ry),1/var[6]);
            }
            if (fon[2]) {
                nrx = rx * cos(var[2]) + ry * sin(var[2]);
                nry = -rx * sin(var[2]) + ry * cos(var[2]);
                rx = nrx;
                ry=nry;
            }
            if (fon[3]) {
                ry = ry / var[3];
            }
            if (fon[4]) {
                ry = ((myabs(ry) - 1) / var[4] + 1) * mysgn(ry);
            }
            if (fon[5]) {
                rx = rx + var[5] * mysgn(rx);
            }
            px=(rx+1)/2*scrwid;
            py=scrhei/2+(ry)/2*scrwid;
            ix=(int)px;
            iy=(int)py;
            amount[mmx][mmy][0][0][makingmap]=((float)ix+1-(float)px)*((float)(iy+1)-(float)py);
            amount[mmx][mmy][1][0][makingmap]=((float)px-(float)ix)*((float)(iy+1)-(float)py);
            amount[mmx][mmy][0][1][makingmap]=((float)ix+1-(float)px)*((float)py-(float)iy);
            amount[mmx][mmy][1][1][makingmap]=((float)px-(float)ix)*((float)py-(float)iy);
            pix[mmx][mmy][makingmap]=ix;
            piy[mmx][mmy][makingmap]=iy;
            if (ix<0 || ix>=scrwid-1 || iy<0 || iy>=scrhei-1) {
                pix[mmx][mmy][makingmap]=scrwid/2;
                piy[mmx][mmy][makingmap]=scrhei/2;
                for (i=0; i<=1; i++) {
                    for (j=0; j<=1; j++) {
                        amount[mmx][mmy][i][j][makingmap]=0;
                    }
                }
            }
            mmx++;
            if (mmx>=scrwid) {
                mmx=0;
                mmy++;
                if (mmy>=scrhei) {
                    mmy=0;
                    tmpmap=usingmap;
                    usingmap=makingmap;
                    makingmap=tmpmap;
                    for (f=0; f<fs; f++) {
                        perturb(f);
                    }
                    for (i=0; i<4; i++) {
                        f = myrnd() * fs;
                        if (myrnd()<.8) {
                            if (myrnd()<.5)
                                fon[f] = 1;
                            else
                                fon[f]=0;
                        }
                    }
                }
            }
        }

        // Animate
        for (x=0; x<scrwid; x++) {
            for (y=0; y<scrhei; y++) {
                c=0;
                for (i=0; i<=1; i++) {
                    for (j=0; j<=1; j++) {
                        c=c+amount[x][y][i][j][usingmap]*img[piy[x][y][usingmap]+j][pix[x][y][usingmap]+i];
                    }
                }
                c--;
                img2[y][x]=c;
            }
        }
        /*        for (y=0;y<scrhei;y++) {
                for (x=0;x<scrwid;x++) {
                  _farpokeb(screen->seg, (unsigned long)screen->line[y]+x, img2[y][x]);
                }
                }*/
        for (y=0; y<scrhei; y++) {
            movedata(_my_ds(), img2[y], screen->seg, bmp_write_line(screen,y), scrwid);
        }
        for (f=0; f<fs; f++) {
            if (fon[f]) {
                hline(screen, scrwid/2, f*2, scrwid/2+(var[f] - op[f]) * scrwid * 4, 0);
            }
        }
        imgtmp=img;
        img=img2;
        img2=imgtmp;
        for (i=1; i<=5; i++) {
            mycircle(myrnd()*scrwid,myrnd()*scrhei,2+myrnd()*8,myrnd()*255);
        }
    }

}
コード例 #7
0
ファイル: current.c プロジェクト: joeytwiddle/code
int main(void) {

    int f,i,j,k,c,x,y,ix,iy,displayloop;
    int usingmap,makingmap,mmx,mmy,tmpmap,maploop;
    float rx,ry,nrx,nry,px,py;
    RGB rgb;
    FILE *fp;

    img=(uchar **)calloc(scrhei,sizeof(uchar *));
    for (y=0; y<scrhei; y++) {
        img[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        for (x=0; x<scrwid; x++) {
            img[y][x]=myrnd()*255;
        }
    }
    img2=(uchar **)calloc(scrhei,sizeof(uchar *));
    for (y=0; y<scrhei; y++) {
        img2[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        for (x=0; x<scrwid; x++) {
            img2[y][x]=myrnd()*255;
        }
    }

    srand((int)time(NULL));

    usingmap=0;
    makingmap=1;
    mmx=0;
    mmy=0;

    /* Originals from QB
       op[0] = 1; damp[0] = .999; force[0] = .005;
       op[1] = 1.02; damp[1] = .999; force[1] = .002;
       op[2] = 0; damp[2] = .999; force[2] = .002;
       op[3] = 1; damp[3] = .999; force[3] = .005;
       op[4] = 1; damp[4] = .999; force[4] = .005;
       op[5] = 0; damp[5] = .999; force[5] = .002;
       */

    // 0 Accelerate
    op[0] = 1;
    damp[0] = .999;
    force[0] = .005;
    // 1 Velocity
    op[1] = 1.02;
    damp[1] = .999;
    force[1] = .01;
    // 2 Rotation
    op[2] = 0;
    damp[2] = .995;
    force[2] = .03;
    // 3 y splurge
    op[3] = 0;
    damp[3] = .999;
    force[3] = .01;
    // 4 Dribble
    op[4] = 1;
    damp[4] = 0;
    force[4] = .01;
    // 5 x splurge
    op[5] = 0;
    damp[5] = .999;
    force[5] = .01;
    op[6]=2;
    damp[6]=.9999;
    force[6]=.01;
    op[7]=1;
    damp[7]=.999;
    force[7]=.01;


    for (f=0; f<fs; f++) {
        var[f] = op[f];
        fon[f]=1;
    }

    allegrosetup(scrwid,scrhei);
    _farsetsel(screen->seg);
    for (c=0; c<=255; c++) {
        if (c<128) {
            rgb.r=c*63/127;
            rgb.g=0;
            rgb.b=0;
        } else {
            rgb.r=127;
            rgb.g=(c-128)*63/127;
            rgb.b=rgb.g;
        }
        set_color(c,&rgb);
    }

    starttimer();

    while(!key[KEY_ESC]) {

        // Animate
        for (x=0; x<scrwid; x++) {
            for (y=0; y<scrhei; y++) {
                img2[y][x]=lifefrom(x,y);
            }
        }
        for (y=0; y<scrhei; y++) {
            movedata(_my_ds(), img2[y], screen->seg, bmp_write_line(screen,y), scrwid);
        }
        imgtmp=img;
        img=img2;
        img2=imgtmp;
        for (i=1; i<=1; i++) {
            mycircle(myrnd()*scrwid,myrnd()*scrhei,2+myrnd()*40,myrnd()*255);
        }
        framedone();
    }

    allegro_exit();
    displayframespersecond();

}
コード例 #8
0
ファイル: menu.cpp プロジェクト: rohit-95/Graphics
void skipping(int x) {
    cleardevice();
    std::vector<Point2D> neck, body, h1, h2, a1, a2, l1, l2, f1, f2;

    neck.push_back(Point2D(x-5, 120)); neck.push_back(Point2D(x-5, 130));
    neck.push_back(Point2D(x+5, 130)); neck.push_back(Point2D(x+5, 120));

    body.push_back(Point2D(x-40, 130)); body.push_back(Point2D(x+40, 130));
    body.push_back(Point2D(x+40, 200)); body.push_back(Point2D(x-40, 200));

    h1.push_back(Point2D(x-40, 130)); h1.push_back(Point2D(x-40, 140));
    h1.push_back(Point2D(x-55, 165)); h1.push_back(Point2D(x-55, 155));

    h2.push_back(Point2D(x+40, 130)); h2.push_back(Point2D(x+40, 140));
    h2.push_back(Point2D(x+55, 165)); h2.push_back(Point2D(x+55, 155));

    a1.push_back(Point2D(x-75, 140)); a1.push_back(Point2D(x-75, 150));
    a1.push_back(Point2D(x-55, 165)); a1.push_back(Point2D(x-55, 155));

    a2.push_back(Point2D(x+75, 140)); a2.push_back(Point2D(x+75, 150));
    a2.push_back(Point2D(x+55, 165)); a2.push_back(Point2D(x+55, 155));

    l1.push_back(Point2D(x-30, 200)); l1.push_back(Point2D(x-30, 260));
    l1.push_back(Point2D(x-20, 260)); l1.push_back(Point2D(x-20, 200));

    l2.push_back(Point2D(x+30, 200)); l2.push_back(Point2D(x+30, 260));
    l2.push_back(Point2D(x+20, 260)); l2.push_back(Point2D(x+20, 200));

    f1.push_back(Point2D(x-32, 260)); f1.push_back(Point2D(x-32, 265));
    f1.push_back(Point2D(x-18, 265)); f1.push_back(Point2D(x-18, 260));

    f2.push_back(Point2D(x+32, 260)); f2.push_back(Point2D(x+32, 265));
    f2.push_back(Point2D(x+18, 265)); f2.push_back(Point2D(x+18, 260));

    mycircle(x, 100, 20);
    mypoly(body); mypoly(neck);
    mypoly(h1); mypoly(h2);
    mypoly(a1); mypoly(a2);
    mypoly(l1); mypoly(l2);
    mypoly(f1); mypoly(f2);

    float y1 = a1[0].y, d = 30/50;

    setfillstyle(SOLID_FILL, RED);
    floodfill(x, 150, WHITE);
    int k = 500;
    bool inc = true;
    do {
        setcolor(YELLOW);
        hermite(a1[0].x, a1[0].y + 5, a2[0].x, a1[0].y + 5, 5, -k, -5, k);
        setcolor(WHITE);
        circle(x, 100, 20);
        mypoly(body); mypoly(neck);
        mypoly(h1); mypoly(h2);
        mypoly(a1); mypoly(a2);
        mypoly(l1); mypoly(l2);
        mypoly(f1); mypoly(f2);

        delay(100);

        setcolor(BLACK);
        hermite(a1[0].x, a1[0].y + 5, a2[0].x, a1[0].y + 5, 5, -k, -5, k);
        if(k <= -500)
            inc = false;
        if(inc) {
            k -= 10;
            y1 += d;
            a1[0].y = rnd(y1) ;
            a1[1].y = rnd(y1) + 10;
            a2[0].y = rnd(y1) ;
            a2[1].y = rnd(y1) + 10;
        }
        else {
            k += 10;
            y1 -= d;
            a1[0].y = rnd(y1) ;
            a1[1].y = rnd(y1) + 10;
            a2[0].y = rnd(y1) ;
            a2[1].y = rnd(y1) + 10;
        }
    }while(k != 500);
    getch();
}
コード例 #9
0
ファイル: hue2.c プロジェクト: 10crimes/code
int main(void) {
  
  int f,i,j,k,c,x,y,ix,iy,displayloop;
  int usingmap,makingmap,mmx,mmy,tmpmap,maploop;
    float rx,ry,nrx,nry,px,py,thru,ctmp;
  RGB rgb;
  FILE *fp;
  
  srand((int)time(NULL));
  
  usingmap=0; makingmap=1; mmx=0; mmy=0;
  

   img=(uchar **)calloc(scrhei,sizeof(uchar *));
    img2=(uchar **)calloc(scrhei,sizeof(uchar *));
    for (y=0;y<scrhei;y++) {
        img[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        img2[y]=(uchar *)calloc(scrwid,sizeof(uchar));
        for (x=0;x<scrwid;x++) {
            img[y][x]=255*y/scrhei;
            img2[y][x]=myrnd()*255;
            if (x<scrwid-1 && y<scrhei-1) {
              pix[x][y][usingmap]=x;
              piy[x][y][usingmap]=y;
              for (i=0;i<=1;i++)
                for (j=0;j<=1;j++)
                  amount[x][y][i][j][usingmap]=(float)1/4;
            }
        }
    }
  
  /* Originals from QB
     op[0] = 1; damp[0] = .999; force[0] = .005;
     op[1] = 1.02; damp[1] = .999; force[1] = .002;
     op[2] = 0; damp[2] = .999; force[2] = .002;
     op[3] = 1; damp[3] = .999; force[3] = .005;
     op[4] = 1; damp[4] = .999; force[4] = .005;
     op[5] = 0; damp[5] = .999; force[5] = .002;
     */
  
  // 0 Accelerate
  op[0] = 1; damp[0] = .999; force[0] = .005;
  // 1 Velocity
  op[1] = 1.02; damp[1] = .999; force[1] = .01;
  // 2 Rotation
  op[2] = 0; damp[2] = .995; force[2] = .03;
  // 3 y splurge
  op[3] = 0; damp[3] = .999; force[3] = .01;
  // 4 Dribble
  op[4] = 1; damp[4] = 0; force[4] = .01;
  // 5 x splurge
  op[5] = 0; damp[5] = .999; force[5] = .01;
  op[6]=2;damp[6]=.9999;force[6]=.01;
  op[7]=1;damp[7]=.999;force[7]=.01;
  
  
  for (f=0;f<fs;f++) {
    var[f] = op[f];
    fon[f]=1;
  }
  
  allegrosetup(scrwid,scrhei);
  _farsetsel(screen->seg);

  starttimer();

  while(!key[KEY_ESC]) {
    
    // Generate some more of the map
    for (maploop=1;maploop<scrwid*scrhei/20;maploop++) {
      rx=(float)mmx/scrwid*2-1;
      ry=(float)(mmy-scrhei/2)/scrwid*2;
      if (fon[0]) {
        rx = mysgn(rx)/var[7]*mypow(myabs(rx),1/var[0]);
        ry = mysgn(ry)/var[7]*mypow(myabs(ry),1/var[0]);
      }
      if (fon[1]) {
        rx = rx / var[1]; ry = ry / var[1];
      }
      if (fon[2]) {
        nrx = rx * cos(var[2]) + ry * sin(var[2]);
        nry = -rx * sin(var[2]) + ry * cos(var[2]);
        rx = nrx; ry=nry;
      }
      if (fon[3]) {
        ry = ry - mysgn(ry) * sin(var[6]*pi*myabs(ry)) * var[3];
      }
      if (fon[4]) {
        ry = ((myabs(ry) - 1) / var[4] + 1) * mysgn(ry);
      }
      if (fon[5]) {
        rx = rx - mysgn(rx) * sin(var[6]*pi*myabs(rx)) * var[5];
      }
      px=(rx+1)/2*scrwid;
      py=scrhei/2+(ry)/2*scrwid;
      ix=(int)px;
      iy=(int)py;
      if (ix<0 || ix>=scrwid-1 || iy<0 || iy>=scrhei-1) {
        ix=px; iy=py;
      }
      amount[mmx][mmy][0][0][makingmap]=((float)ix+1-(float)px)*((float)(iy+1)-(float)py);
      amount[mmx][mmy][1][0][makingmap]=((float)px-(float)ix)*((float)(iy+1)-(float)py);
      amount[mmx][mmy][0][1][makingmap]=((float)ix+1-(float)px)*((float)py-(float)iy);
      amount[mmx][mmy][1][1][makingmap]=((float)px-(float)ix)*((float)py-(float)iy);
      pix[mmx][mmy][makingmap]=ix;
      piy[mmx][mmy][makingmap]=iy;
      if (ix<0 || ix>=scrwid-1 || iy<0 || iy>=scrhei-1) {
        pix[mmx][mmy][makingmap]=scrwid/2;
        piy[mmx][mmy][makingmap]=scrhei/2;
        for (i=0;i<=1;i++) {
          for (j=0;j<=1;j++) {
            amount[mmx][mmy][i][j][makingmap]=0;
          }
        }
      }
      mmx++;
      if (mmx>=scrwid) {
        mmx=0;
        mmy++;
        if (mmy>=scrhei) {
          mmy=0;
          tmpmap=usingmap;
          usingmap=makingmap;
          makingmap=tmpmap;
          for (f=0;f<fs;f++) {
            perturb(f);
          }
        }
      }
    }
    
    // Animate
    for (x=0; x<scrwid; x++) {
      for (y=0; y<scrhei; y++) {
        c=0;
        for (i=0;i<=1;i++) {
          for (j=0;j<=1;j++) {
            c=c+amount[x][y][i][j][usingmap]*img[piy[x][y][usingmap]+j][pix[x][y][usingmap]+i];
          }
        }
        c--;
        img2[y][x]=c;
      }
    }
    /* for (y=0;y<scrhei;y++) {
         for (x=0;x<scrwid;x++) {
           _farpokeb(screen->seg, (unsigned long)screen->line[y]+x, img2[y][x]);
         }
       }*/
    for (y=0; y<scrhei; y++) {
      movedata(_my_ds(), img2[y], screen->seg, bmp_write_line(screen,y), scrwid);
    }
    for (f=0;f<fs;f++) {
      if (fon[f]) {
        hline(screen, scrwid/2, f*2, scrwid/2+(var[f] - op[f]) * scrwid * 4, 0);
      }
    }
        toff=toff-(float)1/128;
    for (c=0;c<=255;c++) {
      thru=saw((float)c/255-toff);
      rgb.r=huefor(thru,(float)0);
      rgb.g=huefor(thru,(float)1/3);
      rgb.b=huefor(thru,(float)2/3);
      set_color(c,&rgb);
    }
    imgtmp=img;
    img=img2;
    img2=imgtmp;
    for (i=1;i<=5;i++) {
      mycircle(myrnd()*scrwid,myrnd()*scrhei,2+myrnd()*8,myrnd()*255);
    }
    framedone();
  }

  allegro_exit();
  displayframespersecond();

}