火箭发射动画c语言程序设计,»ð¼ýµÄÔ´´úÂë

#include

#include

#include

#include

#include

#define ESC  0x1b            /*ESCµÄASCIIÂ룬ʮÁù½øÖÆÊý*/

void InstallGraph(void);    /*ͼÐγõʼ»¯º¯ÊýµÄÉùÃ÷*/

void DrawGun(void);         /*»­·¢Éä¼Üº¯ÊýµÄÉùÃ÷*/

void DrawPlan(void);        /*»­»ð¼ýº¯ÊýµÄÉùÃ÷*/

void DrawStar(void);        /*»­ÐǺ¯ÊýµÄÉùÃ÷*/

void *buf;                  /*È«¾Ö±äÁ¿£¬ÓÃÓÚ´æ´¢»ð¼ýµÄͼÏñ*/

int x0=300;                 /*ÒÔÏÂÊÇ»ð¼ýµÄλÖóõʼ»¯²ÎÊý*/

int y0=340;

int width1=5;

int width2=20;

int height=25;

int y1=8;

int y2=15;

int y3=23;

int y4=38;

main()

{

int size;

int i=0;

int key;

int station;

InstallGraph();

setbkcolor(BLACK);          /*ÉèÖñ³¾°ÑÕÉ«*/

cleardevice();

setcolor(BLUE);             /*ÉèÖÃ×ÖµÄÑÕÉ«*/

outtextxy(80,100,"Ready!...Any key to SET OFF !!!");

DrawGun();

getch();

cleardevice();

DrawGun();

DrawPlan();

DrawStar();

setcolor(LIGHTRED);

do{putimage(x0-width2,y0-height-3*width1-i,buf,XOR_PUT);/*Ö÷Ñ­»·¿ªÊ¼£¬ÓÃÓÚÒƶ¯»ð¼ý£¬·½·¨ÊÇÓÃÒì»ò·½Ê½ÔÚÆÁÄ»ÉÏÁ¬Ðø»­³ö»ð¼ýµÄͼÏñ£¬Ã¿»­Ò»´Î£¬ÐÂͼÏñºÍÔ­À´µÄλÖÃÏà²îÁ½¸öÏñËص㡣Õâ¸öÖµÔ½´ó£¬·ÉÐÐËÙ¶ÈÔ½¿ì*/

i+=2;

putimage(x0-width2,y0-height-3*width1-i,buf,XOR_PUT);

key=getch();

if(y0-height-3*width1-i==0)

outtextxy(60,100,"Successfully!!! Press ESC to quit");

if(key==ESC)

{

if(y0-height-3*width1-i>0){

cleardevice();

outtextxy(100,100,"Failue. What did you do?");

outtextxy(130,300,"Press any key to quit.");

getch();

}

}

}

while(key!=ESC);

free(buf);

closegraph();

return 0;       }

void InstallGraph(void)  /*ͼÐγõʼ»¯º¯Êý*/

{

int grdriver=DETECT;

int grmode;

int errorcode;

char *errormsg;

initgraph(&grdriver,&grmode," ");

errorcode=graphresult();

errormsg=grapherrormsg(errorcode);

if(errorcode!=grOk){

printf("Graphics error: %s\n",errormsg);

printf("Press any key to exit.\n");

getch();

exit(1);

}

}

void DrawStar(void)         /*»­ÐǺ¯Êý*/

{

int seed=2000;

int i,dotx,doty,height,width,color,maxcolor;

maxcolor=getmaxcolor();

width=getmaxx();

height=getmaxy();

srand(seed);

for(i=0;i<250;i++){

dotx=i+random(width-1);

doty=i+random(height-1);

color=random(maxcolor);

setcolor(color);

putpixel(dotx,doty,color);

circle(dotx+1,doty+1,1);

}

srand(seed);

}

void DrawGun(void)   /*»­·¢Éä¼Üº¯Êý*/

{

int x0=300;

int y0=430;

int height=45;

int rx=20;

int ry=5;

int rightx,righty,leftx,lefty;

int centery1=30;

rightx=righty=leftx=lefty=12;

setcolor(LIGHTGREEN);

ellipse(x0,y0,180,360,rx,ry);

ellipse(x0,y0-height,0,360,rx,ry);

line(x0+rx,y0,x0+rx,y0-height);

line(x0-rx,y0,x0-rx,y0-height);

moveto(x0+rx,y0);

lineto(x0+rx+rightx,y0+righty);

moveto(x0+rx+rightx,y0+righty);

lineto(x0+rx+rightx+10,y0+righty+10);

circle(x0+rx+rightx+10,y0+righty+10,4);

moveto(x0,y0+ry);

lineto(x0,y0+centery1);

moveto(x0,y0+centery1);

lineto(x0,y0+centery1+10);

circle(x0,y0+centery1+10,4);

moveto(x0-rx,y0);

lineto(x0-rx-leftx,y0+lefty);

moveto(x0-rx-leftx,y0+lefty);

lineto(x0-rx-leftx-10,y0+lefty+10);

circle(x0-rx-leftx-10,y0+lefty+10,4);

line(x0-rx-leftx,y0+lefty,x0,y0+centery1);

line(x0,y0+centery1,x0+rx+rightx,y0+righty);

}

void DrawPlan(void)  /*·¢Éä»ð¼ýº¯Êý*/

{

int size;

setcolor(LIGHTRED);

setfillstyle(1,BLUE);

ellipse(x0,y0-height,0,180,width1,3*width1);

moveto(x0+width1,y0);

lineto(x0+width1,y0-height);

moveto(x0+width1,y0);

lineto(x0+width2,y0+y2);

moveto(x0-width1,y0);

lineto(x0-width1,y0-height);

moveto(x0-width1,y0);

lineto(x0-width2,y0+y2);

moveto(x0+width2,y0+y3);

lineto(x0+width2,y0+y1);

moveto(x0+width2,y0+y3);

lineto(x0+width1,y0+y2);

moveto(x0-width2,y0+y3);

lineto(x0-width2,y0+y1);

moveto(x0-width2,y0+y3);

lineto(x0-width1,y0+y2);

moveto(x0,y0+y4);

lineto(x0+width1,y0+y2);

moveto(x0,y0+y4);

lineto(x0-width1,y0+y2);

setfillstyle(2,LIGHTRED);

floodfill(x0,y0,LIGHTRED);

size=imagesize(x0-width2-1,y0-height-3*width1,x0+width2+1,y0+y4);

buf=malloc(size);

if(!buf){printf("No enough memory!");

exit(0);}

getimage(x0-width2,y0-height-3*width1,x0+width2,y0+y4,buf);

}

ÉÏһƪ£º{ʵÀý}Ó²¼þ²âÊÔ ÈËÆø:6249

ÏÂһƪ£º{ʵÀý}´Ê·¨·ÖÎöÆ÷ ÈËÆø:6811

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解释一下这段代码过程void CMP_ISR(void) interrupt 21 { u8 i; CMPCR1 &= ~0x40; // ÐèÈí¼þÇå³ýÖжϱê־λ if(XiaoCiCnt == 0) //Ïû´Åºó²Å¼ì²â¹ý0ʼþ, XiaoCiCnt=1:ÐèÒªÏû´Å, =2:ÕýÔÚÏû´Å, =0ÒѾ­Ïû´Å { T4T3M &= ~(1<<3); // Timer3Í£Ö¹ÔËÐÐ P27 = 0; if(B_Timer3_OverFlow) //Çл»Ê±¼ä¼ä¸ô(Timer3)ÓÐÒç³ö { B_Timer3_OverFlow = 0; PhaseTime = 8000; //»»Ïàʱ¼ä×î´ó8ms, 2212µç»ú12V¿Õת×î¸ßËÙ130usÇл»Ò»Ïà(200RPS 12000RPM), 480mA } else { i=T3H; PhaseTime = (((u16)i << 8) + T3L) >> 1; //µ¥Î»Îª1us if(PhaseTime >= 8000) PhaseTime = 8000; //»»Ïàʱ¼ä×î´ó8ms, 2212µç»ú12V¿Õת×î¸ßËÙ130usÇл»Ò»Ïà(200RPS 12000RPM), 480mA } T3H = 0; T3L = 0; T4T3M |= (1<<3); //Timer3¿ªÊ¼ÔËÐÐ PhaseTimeTmp[TimeIndex] = PhaseTime; //±£´æÒ»´Î»»Ïàʱ¼ä if(++TimeIndex >= 16) TimeIndex = 0; //ÀÛ¼Ó8´Î for(PhaseTime=0, i=0; i<16; i++) PhaseTime += PhaseTimeTmp[i]; //Çó16´Î»»Ïàʱ¼äÀÛ¼ÓºÍ PhaseTime = PhaseTime >> 5; //Çó16´Î»»Ïàʱ¼äµÄƽ¾ùÖµµÄÒ»°ë, ¼´30¶Èµç½Ç¶È if((PhaseTime >= 40) && (PhaseTime <= 1000)) TimeOut = 150; //¶Âת600ms³¬Ê± if( PhaseTime >= 60) PhaseTime -= 40; //ÐÞÕýÓÉÓÚÂ˲¨µçÈÝÒýÆðµÄÖͺóʱ¼ä else PhaseTime = 20; // PhaseTime = 20; //Ö»¸ø20us, ÔòÎÞÖͺóÐÞÕý, ÓÃÓÚ¼ì²âÂ˲¨µçÈÝÒýÆðµÄÖͺóʱ¼ä T4T3M &= ~(1<<7); //Timer4Í£Ö¹ÔËÐÐ PhaseTime = PhaseTime << 1; //2¸ö¼ÆÊý1us PhaseTime = 0 - PhaseTime; T4H = (u8)(PhaseTime >> 8); //×°ÔØ30¶È½ÇÑÓʱ T4L = (u8)PhaseTime; T4T3M |= (1<<7); //Timer4¿ªÊ¼ÔËÐÐ XiaoCiCnt = 1; //1:ÐèÒªÏû´Å, 2:ÕýÔÚÏû´Å, 0ÒѾ­Ïû´Å P27 = 1; } }
最新发布
07-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值