主题:[原创]用C写的一个旋转的八卦图
caijian123
[专家分:0] 发布于 2006-04-01 18:12:00
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void mysector(int x,int y,int startangle,int endangle,int rx,int ry);
main()
{
int graphdriver=VGA, graphmode=VGAHI ;
int x0=320,y0=240;
int degree=0;
int size=0;
void *buffer=NULL;
int xt=0,yt=0;
struct palettetype palette;
registerbgidriver(EGAVGA_driver);/*如果编译通不过,除掉此句*/
initgraph(&graphdriver,&graphmode,"");/*引号中加入TC的目录 如c:\\tc */
cleardevice();
size=imagesize(160,80,320,320);
buffer=malloc(size);
getimage(160,80,320,320,buffer);
getpalette(&palette);
while(!kbhit())
{
putimage(160,80,buffer,COPY_PUT);
setcolor(15);
circle(x0,y0,160);
degree=(degree+10)%360;
xt=(int)80* sin( (degree+90)*(2*M_PI)/360 ) ;
yt=(int)80* cos( (degree+90)*(2*M_PI)/360 ) ;
/*-----------------------------*/
setfillstyle(1,15);
mysector(x0,y0, 0+degree,180+degree,160,160); /* semicircle_top */
setfillstyle(1,0);
mysector(x0,y0,180+degree,360+degree,160,160); /* semicircle_bottom */
/*------------------------------*/
setcolor(0);
setfillstyle(1,0);
mysector(x0+xt,y0+yt, 0+degree,180+degree,80,80); /*right semicircle */
setcolor(15);
setfillstyle(1,15);
mysector(x0-xt,y0-yt,180+degree,360+degree,80,80); /*left semicircle*/
/*-----------------------------*/
setcolor(15);
setfillstyle(1,15);
mysector(x0+xt,y0+yt,0,360,30,30); /*right small circle */
setcolor(0);
setfillstyle(1,0);
mysector(x0-xt,y0-yt,0,360,30,30); /*left small circle */
/* ------------ --------------------*/
getimage(160,80,320,320,buffer);
/* cleardevice(); */
}
getch();
closegraph();
}
/*--------------------------------------------------*/
void mysector(int x,int y,int startangle,int endangle,int rx,int ry)
{
/* if(endangle>720) endangle=endangle-360;*/
if(startangle<360 && endangle>360)
{
sector(x, y,startangle, 360,rx,ry);
sector(x, y, 0, endangle-360,rx,ry);
}
else if(startangle==360)
sector(x, y,0,endangle-360,rx,ry);
else if(startangle>360 && endangle>360)
sector(x,y,startangle-360,endangle-360,rx,ry);
else sector(x,y,startangle,endangle,rx,ry);
}
回复列表 (共32个回复)
21 楼
wtyoh [专家分:30] 发布于 2006-04-04 00:24:00
Linker Error:Undefined Symbol ‘_EGAVGA_driver' in module bg.c
是怎么得哦
22 楼
mzxjhx [专家分:150] 发布于 2006-04-04 19:42:00
registerbgidriver(EGAVGA_driver);/*如果编译通不过,除掉此句*/
initgraph(&graphdriver,&graphmode,"");/*引号中加入TC的目录 如c:\\tc */
照楼主说的:
除掉第一句,在" "中加上你电脑上Tc程序的具体路径就可以了,路径中只准有英文
可以临时该一下你的路径
23 楼
Recker1 [专家分:480] 发布于 2006-04-04 20:31:00
上楼说的问题很容易解决,去google一下“TC的图形编程”就可找到解决方法。
24 楼
蓝程设计 [专家分:0] 发布于 2006-04-04 20:39:00
Undefined symbol '_EGAVGA_driver'
25 楼
shile [专家分:50] 发布于 2006-04-04 22:32:00
http://www.blogcn.com/u/48/40/xiazai8/blog/30498192.html下载win-tc
26 楼
estar [专家分:0] 发布于 2006-04-07 00:09:00
你编时用的头文件
<graphics.h>
是不是自己定义的
我在
Microsoft Visual C++ 6.0
不能通过 !
27 楼
defsky [专家分:200] 发布于 2006-04-11 21:42:00
怎么我编译出来的 图形 闪烁好厉害了啊`
28 楼
1137 [专家分:10] 发布于 2006-04-12 11:00:00
在TC中,是有几个错误,不过解决了...:)
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void mysector(int x,int y,int startangle,int endangle,int rx,int ry);
main()
{
int graphdriver=VGA, graphmode=VGAHI ;
int x0=320,y0=240;
int degree=0;
int size=0;
void *buffer=NULL;
int xt=0,yt=0;
struct palettetype palette;
registerbgidriver(EGAVGA_driver); /*这一句我也去掉了*/
initgraph(&graphdriver,&graphmode,"") ;/*这里应该有个分号*/
cleardevice();
size=imagesize(160,80,320,320);
buffer=malloc(size);
getimage(160,80,320,320,buffer);
getpalette(&palette);
while(!kbhit())
{
putimage(160,80,buffer,COPY_PUT);
setcolor(15);
circle(x0,y0,160);
degree=(degree+10)%360;
xt=(int)80* sin( (degree+90)*(2*M_PI)/360 ) ;
yt=(int)80* cos( (degree+90)*(2*M_PI)/360 ) ;
setfillstyle(1,15);
mysector(x0,y0, 0+degree,180+degree,160,160);
setfillstyle(1,0);
mysector(x0,y0,180+degree,360+degree,160,160);
setcolor(0);
setfillstyle(1,0);
mysector(x0+xt,y0+yt, 0+degree,180+degree,80,80);
setfillstyle(1,15);
mysector(x0-xt,y0-yt,180+degree,360+degree,80,80);
setcolor(15);
setfillstyle(1,15);
mysector(x0+xt,y0+yt,0,360,30,30);
setcolor(0);
setfillstyle(1,0);
mysector(x0-xt,y0-yt,0,360,30,30);
getimage(160,80,320,320,buffer);
}
getch();
closegraph();
}
void mysector(int x,int y,int startangle,int endangle,int rx,int ry)
{
if(startangle<360 && endangle>360)
{
sector(x, y,startangle, 360,rx,ry);
sector(x, y, 0, endangle-360,rx,ry);
}
else if(startangle==360)
sector(x, y,0,endangle-360,rx,ry);
else if(startangle>360 && endangle>360)
sector(x,y,startangle-360,endangle-360,rx,ry);
else sector(x,y,startangle,endangle,rx,ry);
}
29 楼
1137 [专家分:10] 发布于 2006-04-12 11:10:00
汗,遇到十四楼同志说的问题了....
30 楼
1137 [专家分:10] 发布于 2006-04-12 16:00:00
问题终于解决了。。。
我来回复