再来一个问题,我已经把程序弄好了!大家看看

maodi0614 2007-01-08 02:43:27
TurboC下通过!
这个程序是旋转的,我要让它不旋转,静止的显示该如何实现?
改了一上午,越改错误越多!

#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;
initgraph(&graphdriver,&graphmode,"C:\bc");/*双引号里面为文件所在的路径,例如C:\bc*/
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);
}
...全文
207 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WENJINGWEN 2007-01-09
  • 打赏
  • 举报
回复
看来我的TC有问题了,怎么运行不出来.
maodi0614 2007-01-08
  • 打赏
  • 举报
回复
的确可以
但是屏幕总是闪闪的
kouzhongling 2007-01-08
  • 打赏
  • 举报
回复
把int degree=0;放到了循环内部 使得每次循环degree重新归0 看到的就停下来的了
kouzhongling 2007-01-08
  • 打赏
  • 举报
回复
//不知道这算不算停 这个东西编的挺好完的^-^
#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;
initgraph(&graphdriver,&graphmode,"C:\bc");/*双引号里面为文件所在的路径,例如C:\bc*/
cleardevice();
size=imagesize(160,80,320,320);
buffer=malloc(size);
getimage(160,80,320,320,buffer);
getpalette(&palette);

while(!kbhit())
{ int degree=0;
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);
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧