求助 如何在TC下用橡皮条画圆
如题!本人是菜鸟,敬请各位大虾指教!!!!! #include <stdio.h>#include <graphics.h>
#include <dos.h>
typedef struct
{
void (*Inits)();/*初始化鼠标驱动*/
int (*MButton)();/*按键位置与按键状态*/
void (*MouseIco)();/*画鼠标光标*/
int x;/*横向坐标*/
int y;/*竖向坐标*/
float R;
int ox;
int oy;
int button;/*按键标志*/
}MOUSE;/*鼠标类*/
void mInits();
int mMButton();
void mMouseIco();
union REGS rg;
int main()
{
MOUSE *pM,mouse;
float R;
int graphdrive=0,graphmode=0;
int tracking=0,x1,y1,ox1,oy1;
pM=&mouse;
pM->Inits=mInits;
pM->MButton=mMButton;
pM->MouseIco=mMouseIco;
initgraph(&graphdrive,&graphmode,"");
setbkcolor(1);
setwritemode(1);/*画线模式*/
pM->Inits(&pM->x,&pM->y);
pM->ox=pM->x;
pM->oy=pM->y;
do
{
pM->button=pM->MButton(&pM->x,&pM->y);
pM->MouseIco(&pM->x,&pM->y,&pM->ox,&pM->oy);
if(pM->button==1)
{
if(!tracking)/*捕获开关*/
{
ox1=x1=pM->x;
oy1=y1=pM->y;
tracking=1;
}
if(pM->x!=ox1||pM->y!=oy1)
{
R=sqrt((ox1-x1)*(ox1-x1)+(oy1-y1)*(oy1-y1))/2;
line(x1,y1,ox1,oy1);
rectangle(x1,y1,ox1,oy1);
circle((x1+ox1)/2,(y1+oy1)/2,R);
ox1=pM->x;
oy1=pM->y;
R=sqrt((pM->x-x1)*(pM->x-x1)+(pM->y-y1)*(pM->y-y1))/2;
line(x1,y1,pM->x,pM->y);
rectangle(x1,y1,pM->x,pM->y);
circle((x1+ox1)/2,(y1+oy1)/2,R);
}
}
else tracking=0;
}while(pM->button!=3);
}
void mInits(int *mx,int *my)
{
rg.x.ax=0;
int86(0x33,&rg,&rg);
if(rg.x.ax==0)
exit(1);
rg.x.ax=7;
rg.x.cx=2;
rg.x.dx=640;
int86(0x33,&rg,&rg);
rg.x.ax=8;
rg.x.cx=2;
rg.x.dx=480;
int86(0x33,&rg,&rg);
rg.x.ax=4;
*mx=rg.x.cx=640/2;
*my=rg.x.dx=480/2;
int86(0x33,&rg,&rg);
rectangle(rg.x.cx-2,rg.x.dx-2,rg.x.cx+2,rg.x.dx+2);
}
int mMButton(int *lx,int *ly)
{
rg.x.ax=3;
int86(0x33,&rg,&rg);
*lx=rg.x.cx;
*ly=rg.x.dx;
return rg.x.bx;
}
void mMouseIco(int *x,int *y,int *oldx,int *oldy)
{
if(*x!=*oldx||*y!=*oldy)
{
rectangle(*oldx-2,*oldy-2,*oldx+2,*oldy+2);
*oldx=*x;
*oldy=*y;
rectangle(*x-2,*y-2,*x+2,*y+2);
}
}
各位帮我看看一下这个程序,,没错误,但运行的时候一闪而过,为什么???急啊 #include <math.h>
#include<graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <dos.h>
#include <time.h>
main()
{
int gd,gm,nx,ny,co,Mx,My,i,col[]={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
float k,x,y,r,q,p,m,kc,xn,yn,mx,my,mxx,myy;
char *sp;
p=.32;
q=.043;
m=100;
printf("\nPlease input the coefficient k(0-300) p(0.32) q(0.043):");
scanf("%f %f %f",&k,&p,&q);
_AX=0x0013;
__int__(0x10);
sp=MK_FP(0xa000,0);
Mx=319;
My=199;
randomize();
co=0xff;
mx=Mx;my=My;
r=0;
mxx=2.4/mx;
myy=2.4/my;
mx=-.93;
my=-1.2;
for(ny=0;ny<=My;ny++)
{
for(nx=0;nx<=Mx;nx++)
{
x=mx+mxx*nx;
y=my+myy*ny;
kc=0;
while(1)
{
xn=x*x-y*y+p;
yn=2*x*y+q;
x=xn;
y=yn;
r=x*x+y*y;
kc++;
if(kc==k)break;
if(r>m)break;
}
i=(k-kc)/3;
if(i>0xff)i=0xff;
sp[nx+ny*320]=i;
}
}
getch();
_AX=0x0003;
__int__(0x10);
}
大家能否在帮我看一下这段程序错在那里??????
页:
[1]
