谁能帮我注释下这个c语言程序?

谁能帮我注释下这个c语言程序?急用!中间******为一段我了解的所以不发了。帮我解释清楚逻辑部分就可以速度快或非常全的话肯定追加100分!我C语言不好,所以越详细越好#... 谁能帮我注释下这个c语言程序?急用!
中间******为一段我了解的所以不发了。
帮我解释清楚逻辑部分就可以
速度快或非常全的话肯定追加100分!
我C语言不好,所以越详细越好
#define PI 3.1415926
#define step 3
#define R 10
#include<time.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
main()
{
int gdriver=DETECT,gmode;
static int startx=5;
static int starty=100;
int maxx,l=1,n=1;
double dalta=20,angle;
int size;
void *image;
initgraph(&gdriver,&gmode,"");
cleardevice();
setbkcolor(BLUE);
size=imagesize(startx,starty,startx+60,starty+60);
image=(unsigned char *)malloc(size);
maxx=getmaxx();
while(!kbhit())
{
if(l==1)
{
n++;
angle=-1*(n*step)/PI*180/R;
if((int)(-1*angle)%360<dalta)
angle-=dalta;
if(n>(maxx-70)/step)
l=0;
}
if(l==0)
{
--n;
angle=-1*(n*step)/R/PI*180;
if((int)(-1*angle)%360<dalta)
angle-=dalta;
if(n==1)l=1;
}
******
getimage(startx+n*step,starty,startx+n*step+60,starty+60,image);
delay(10000);
putimage(startx+n*step,starty,image,XOR_PUT);
}
free(image);
closegraph();
}
展开
 我来答
冒险岛乐乐
推荐于2016-07-08 · TA获得超过1969个赞
知道小有建树答主
回答量:621
采纳率:0%
帮助的人:0
展开全部
已基本搞定。如下:
#define PI 3.1415926
#define step 3
#define R 10
#include<time.h>
#include<stdlib.h>
#include<graphics.h> /* tc/tc++绘图功能函数必需的头文件 */
#include<conio.h>
#include<dos.h>
main() /* 运动的小车动画c程序 */
{
int gdriver=DETECT,gmode;/* 设定图形驱动类型为:DETECT(自动检测),自动测试显示卡类型,选择相应的驱动程序,此方式下gmode(整数,显示模式)无需设置 */
static int startx=5; /* 设置动画的起始位置(小车的起点位置) */
static int starty=100;
int maxx,l=1,n=1;
double dalta=20,angle;/* dalta步长,angle画小车车轮上的填充扇形,用来显示小车车轮的动态滚动效果 */
int size;
void *image;
initgraph(&gdriver,&gmode,""); /* 初始化图形界面,调用图形驱动程序,设置屏幕为图形界面模式。 */
cleardevice(); /* 清屏 */
setbkcolor(BLUE); /* 设置屏幕背景色为蓝色 */
size=imagesize(startx,starty,startx+60,starty+60);/* 将startx,starty,startx+60,starty+60确定的位图图像范围(字节数)用整数size保存起来 */
image=(unsigned char *)malloc(size); /* 开辟大小为size字节的指向字符的内存空间 */
maxx=getmaxx();/* getmaxx()用来获得屏幕的最大x坐标,以判断小车是否运动到屏幕的左右边界 */
while(!kbhit()) /* 循环,按任一键退出循环 */
{
if(l==1)/* 判断小车的运动方向,l==1小车向右运动�*/
{
n++;
angle=-1*(n*step)/PI*180/R;/* 小车向右运动,轮子顺时针转动,角度angle的绝对值增加,画扇形,产生动态效果 */
if((int)(-1*angle)%360<dalta)
angle-=dalta;
if(n>(maxx-70)/step)
l=0;
}
if(l==0)/* l==0小车向左运动 轮子逆时针转动,角度angle的绝对值减小,画扇形,产生动态效果*/
{
--n;
angle=-1*(n*step)/R/PI*180;
if((int)(-1*angle)%360<dalta)
angle-=dalta;
if(n==1)l=1; /* 小车初始时刻是向右运动 */
}
line(startx+n*step+15,starty,startx+n*step+45,starty); /* 以下为画小车的形状 */
line(startx+n*step+15,starty,startx+n*step+11,starty+20);
line(startx+n*step+45,starty,startx+n*step+49,starty+20);
line(startx+n*step+17,starty+2,startx+n*step+42,starty+2);
line(startx+n*step+17,starty+2,startx+n*step+14,starty+20);
line(startx+n*step+43,starty+2,startx+n*step+46,starty+20);
rectangle(startx+n*step+23,starty+5,startx+n*step+37,starty+20);
rectangle(startx+n*step+27,starty+15,startx+n*step+33,starty+20);
line(startx+n*step+27,starty+10,startx+n*step+23,starty+15);
line(startx+n*step+33,starty+10,startx+n*step+37,starty+15);
line(startx+n*step+2,starty+20,startx+n*step+58,starty+20);
line(startx+n*step,starty+40,startx+n*step+60,starty+40);
line(startx+n*step,starty+40,startx+n*step+2,starty+20);
line(startx+n*step+58,starty+20,startx+n*step+60,starty+40);
bar(startx+n*step+17,starty+22,startx+n*step+43,starty+38);
setcolor(GREEN);
pieslice(startx+n*step+15,starty+50,angle,angle-dalta,10);
pieslice(startx+n*step+45,starty+50,angle,angle-dalta,10);
setcolor(GREEN);
setfillstyle(SOLID_FILL,GREEN);
circle(startx+n*step+15,starty+50,10);
circle(startx+n*step+45,starty+50,10);
circle(startx+n*step+15,starty+50,3);
circle(startx+n*step+45,starty+50,3);
getimage(startx+n*step,starty,startx+n*step+60,starty+60,image);/* 将startx+n*step,starty,startx+n*step+60,starty+60指定区域的位图数据存到内存以地址image开始的size个字节中 */
delay(10000); /* 延时10000毫秒 */
putimage(startx+n*step,starty,image,XOR_PUT);/* 将上面getimage()函数保存的图像输出显示,这里使用的是异或xor运算输出方式,即清除旧的位图,显示新的位图,利用人眼的视觉暂停效应产生小车在运动的效果 */
} /* 其实质就是位图数据不停的写入内存然后再在不同的位置(n在变化)写到屏幕上 */
free(image); /* 释放内存空间 */
closegraph(); /* 关闭图形工作模式 */
}

参考资料: http://zhidao.baidu.com/question/85662597.html

匿名用户
2009-02-24
展开全部
#define PI 3.1415926
#define step 3
#define R 10
#include<time.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
main()
{
int gdriver=DETECT,gmode; //gdriver定义图形驱动序号变量为DETECT
static int startx=5; //定义起始的描画坐标,x值定义为5
static int starty=100; //定义起始的描画坐标,y值定义为100
int maxx,l=1,n=1;
double dalta=20,angle;
int size;
void *image;
initgraph(&gdriver,&gmode,""); //初始化图形系统处理,&gdriver是图形驱动序号变量的地址。gmode是在gdriver选定后,图形显示模式序号变量的地址。在初始化时,存放图形驱动文件的路径暂定为""
cleardevice(); //清除图形屏幕,也就是将描画区域进行初始化
setbkcolor(BLUE); //将背景色设置为BLUE
size=imagesize(startx,starty,startx+60,starty+60); //取得保存位图像所需的字节数
image=(unsigned char *)malloc(size); //申请内存空间,以保存需要描画的图像
maxx=getmaxx(); //取得屏幕的最大x坐标
while(!kbhit()) //检查当前按下的键,如果按下的键有效的话
{
if(l==1)
{
n++;
angle=-1*(n*step)/PI*180/R; //这个公式不太清楚,应该是一些属性的计算
if((int)(-1*angle)%360<dalta)
angle-=dalta; //这个公式不太清楚,应该是一些属性的计算
if(n>(maxx-70)/step)
l=0;
}
if(l==0)
{
--n;
angle=-1*(n*step)/R/PI*180; //这个公式不太清楚,应该是一些属性的计算
if((int)(-1*angle)%360<dalta)
angle-=dalta; //这个公式不太清楚,应该是一些属性的计算
if(n==1)l=1;
}
******
getimage(startx+n*step,starty,startx+n*step+60,starty+60,image); //将指定区域的一个位图存到先前申请的buffer中
delay(10000);//延时10秒
putimage(startx+n*step,starty,image,XOR_PUT); //在屏幕上输出位图,writemode为XOR_PUT
}
free(image); //释放申请的buffer
closegraph(); //关闭图形系统
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式