📄 zhixian.c
字号:
#define pi 3.141592
#define MAX(a,b) (a>b)? a:b
#define MIN(a,b) (a<b)? a:b
#include "graphics.h"
#include "math.h"
struct rectangle{
int xmin;
int xmax;
int ymin;
int ymax;
};
struct point{
float x;
float y;};
struct point pot[2];
struct rectangle rect={150,490,100,380};
int x=0,y=0;
void zhongxing(int x,int y,int s)
{ int i;
for(i=x-5;i<=x+5;i++)
{ putpixel(i,y,s);}
for(i=y-5;i<=y+5;i++)
{ putpixel(x,i,s);
}
}
void add(int x,int y,int i)
{
pot[i].x=x;
pot[i].y=y;
}
int clip(float q,float d,float *t0,float *t1)
{ float r;
if(q<0)
{ r=d/q;
if(r>*t1)
return(0);
else if(r>*t0)
{ *t0=r;
return(1);
}
}
else if(q>0)
{ r=d/q;
if(r<*t0)
return(0);
else if(r<*t1)
{ *t1=r;
return(1);
}
}
else if(d<0)
return(0);
return(1);
}
void liang(struct point * pot,struct rectangle * rect)
{ float delatx,delaty,t0,t1;
t0=0;t1=1;
delatx=pot[1].x-pot[0].x;
if(clip(-delatx,pot[0].x-rect->xmin,&t0,&t1))
if(clip(delatx,rect->xmax-pot[0].x,&t0,&t1))
{ delaty=pot[1].y-pot[0].y;
if(clip(-delaty,pot[0].y-rect->ymin,&t0,&t1))
if(clip(delaty,rect->ymax-pot[0].y,&t0,&t1))
{ line((int)(pot[0].x+t0*delatx),(int)(pot[0].y+t0*delaty),
(int)(pot[0].x+t1*delatx),(int)(pot[0].y+t1*delaty));
}
}
}
void main()
{int driver=DETECT,mode; int i=0,j,key;
registerbgidriver(EGAVGA_driver);
initgraph(&driver,&mode,"\\tc");
initgraph(&driver,&mode,"\\tc");
zhongxing(x,y,4);
setcolor(3);
rectangle(150,100,490,380);
/**/for(;;)
{ if(bioskey(1))
{ key=bioskey(0);
if(key==0x4d00)
{ zhongxing(x,y,0);
x+=5;
zhongxing(x,y,4);
rectangle(150,100,490,380);
}
if(key==0x011b)
{printf("esc be press");
break;
}
if(key==0x4b00)
{ zhongxing(x,y,0);
x-=5;
zhongxing(x,y,4);
rectangle(150,100,490,380);
}
if(key==0x5000)
{
zhongxing(x,y,0);
y+=5;
zhongxing(x,y,4);
rectangle(150,100,490,380);
}
if(key==0x4800)
{
zhongxing(x,y,0);
y-=5;
zhongxing(x,y,4);
rectangle(150,100,490,380);
}
if(key==0x1c0d)
{ add(x,y,i);
circle(x,y,3);
i+=1;
}
if(key==0x3920)
{liang(pot,&rect);
for(j=0;j<2;j++)
{ pot[j].x=0;pot[j].y=0;}
i=0;
}
}
}
getch();
closegraph();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -