#include
<
graphics.h
>
![None.gif](/Images/OutliningIndicators/None.gif)
#include
"
dos.h
"
![None.gif](/Images/OutliningIndicators/None.gif)
#include
"
stdio.h
"
![None.gif](/Images/OutliningIndicators/None.gif)
#include
"
alloc.h
"
![None.gif](/Images/OutliningIndicators/None.gif)
int
num1,num2,num3,h0,cy[
66
];
![None.gif](/Images/OutliningIndicators/None.gif)
void
plot1(
int
,
int
,
int
,
int
);
![None.gif](/Images/OutliningIndicators/None.gif)
void
move(
char
getone,
char
putone)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{ int x0=40,x,y,w,h,tx,ty,tw,th,x1,x2,y1,y2,xm1,ym1,xm2,ym2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
int i,n,size;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
void *buffer,*buffer1;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
switch(getone)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'A':num1--;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'B':num2--;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'C':num3--;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
default: exit(0);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
switch(putone)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'A':num1++;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'B':num2++;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'C':num3++;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
default: exit(0);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
switch(getone)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'A':x=120;y1=cy[num1+1]-h0;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'B':x=320;y1=cy[num2+1]-h0;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'C':x=520;y1=cy[num3+1]-h0;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
default: exit(0);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
switch(putone)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'A':tx=120-50;ty=cy[num1]-h0;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'B':tx=320-50;ty=cy[num2]-h0;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case 'C':tx=520-50;ty=cy[num3]-h0;break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
default: exit(0);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
x1=x-50;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
x2=x+50;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
y2=y1+h0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
xm1=(x1+tx)/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
ym1=(y1+ty)/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
xm2=xm1+100;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
ym2=ym1+h0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
size=imagesize(x1,y1,x2,y2);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
buffer=malloc(size);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
getimage(x1,y1,x2,y2,buffer);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setfillstyle(SOLID_FILL,3);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
bar(x1,y1,x2,y2);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setcolor(YELLOW);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line((x1+x2)/2,y1,(x1+x2)/2,y2);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
buffer1=malloc(size);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
n=abs(tx-x1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
for(i=0;i<n;i+=3)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
xm1=x1+(float)(tx-x1)/n*i;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
ym1=y1+(float)(ty-y1)/(tx-x1)*(xm1-x1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
xm2=xm1+100;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
ym2=ym1+h0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
getimage(xm1,ym1,xm2,ym2,buffer1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
putimage(xm1,ym1,buffer,COPY_PUT);/**//* delay(10); */
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
putimage(xm1,ym1,buffer1,COPY_PUT);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
putimage(tx,ty,buffer,COPY_PUT);/**//* delay(50);*/
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
free(buffer1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
free(buffer);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
void
hanoi(
int
n,
char
one,
char
two,
char
three)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(n==1) move(one,three);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
else
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
hanoi(n-1,one,three,two);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
move(one,three);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
hanoi(n-1,two,one,three);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
main()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
int gdriver,gmode,x0=40,y0=400,x1,x2,x3,y1,y2,y3,x,y,w0=100;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
int i,num,w,w1;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
printf("Please input the number of plate(<=64):");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
scanf("%d",&num);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(num>65)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{printf ("number great than 64 ",exit(0));}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
h0=(y0-80)/num;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
w1=(100-10)/num;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
num1=num;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
num2=0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
num3=0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
gdriver=DETECT;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
initgraph(&gdriver,&gmode,"");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setfillstyle(SOLID_FILL,3);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
bar(0,0,640,480);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
setcolor(15); /**//* white */
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(1,1,637,1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(1,1,1,477);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(0,0,638,0);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(0,0,0,478);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
setcolor(8); /**//*darkgray */
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(638,2,638,478);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(639,1,639,479);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(632,380,632,472);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
setcolor(14); /**//* yellow */
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x0,401,640-x0,401);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x0+80,40,x0+80,400);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x0+280,40,x0+280,400);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x0+480,40,x0+480,400);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
x1=x0+80;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
x2=x0+280;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
x3=x0+480;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
for(x=x1,y=y0,w=w0,i=1;i<=num;i++,y=y-h0-1,w=w-w1)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
plot1(x,y,w,h0);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
cy[i]=y;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setcolor(14);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x0+80,40,x0+80,400);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
getch();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
hanoi(num,'A','B','C');
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
getch();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
void
plot1(
int
x,
int
y,
int
w,
int
h)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{int x1,x2,y1,y2,xc,yc,a,b;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
x1=x-w/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
x2=x+w/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
y1=y-h;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
y2=y;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
xc=(x1+x2)/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
yc=(y1+y2)/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
a=w/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
b=h/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setfillstyle(SOLID_FILL,14);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* bar(x1,y1,x2,y2); */
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
setcolor(14); /**//* yellow */
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setlinestyle(0,0,1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
ellipse(xc,yc,0,360,a,b);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
floodfill(xc-2,yc,YELLOW);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
floodfill(xc+2,yc,YELLOW);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setcolor(1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
ellipse(xc,yc,0,360,a,b);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
ellipse(xc,yc,0,360,a-3,b-3);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setfillstyle(SOLID_FILL,12);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
floodfill(xc-2,yc+b-2,BLUE);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
floodfill(xc+2,yc+b-3,BLUE);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//* line(x1,y1,x1,y2);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x1,y2,x2,y2);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x2,y2,x2,y1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
line(x2,y1,x1,y1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
*/
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
转载于:https://www.cnblogs.com/aween/archive/2006/02/28/339894.html