#include<graphics.h>
#include
<stdlib.h>
#include
<stdio.h>
#include
<conio.h>
#define IMAGE_SIZE 10 /* 宏定义*/
void draw_image(int x, int y); /* 画飞船函数的说明语句*/
void Putstar(void); /* 画星星函数的说明语句*/
main ()
{
    
int graphdriver=DETECT; /* 检测适配器*/
    
int graphmode, color; /* 最高分辨率的值和色彩的值*/
    
void * pt_addr; /* 全局变量, 用于存储图像, 定义缓冲区空间*/
    
int x,y,maxx,maxy,midy,midx,i; /* 定义各变量数据类型*/
    unsigned 
int size;
    initgraph(
&graphdriver, &graphmode, "");
    maxx
=getmaxx(); /* 取得当前图形方式下允许的x 最大值*/
    maxy
=getmaxy(); /* 取得当前图形方式下允许的y 最大值*/
    midx
=maxx/2;
    x
=0/* 定义x 的初始量为0*/
    midy
=y=maxy/2;
    setcolor(YELLOW); 
/* 前景颜色设置为黄色*/
    settextstyle(TRIPLEX_FONT, HORIZ_DIR, 
4);
    settextjustify(CENTER_TEXT, CENTER_TEXT);
    outtextxy(midx, 
400"AROUND THE WORLD");
    setbkcolor(BLACK); 
/* 背景颜色设置函数, 用法和setcolor相同*/
    setcolor(RED);
    setlinestyle(SOLID_LINE, 
0, THICK_WIDTH);
    ellipse(midx, midy, 
1305016030);
    setlinestyle(SOLID_LINE, 
0, NORM_WIDTH);
    draw_image(x, y); 
/* 画飞船*/
    size
=imagesize (x, y- IMAGE_SIZE, x+(4*IMAGE_SIZE), y+
        IMAGE_SIZE);
    pt_addr
=malloc(size);
    getimage (x, y 
- IMAGE_SIZE, x +(4*IMAGE_SIZE), y +IMAGE_SIZE, pt_addr);
    Putstar(); 
/* 画星*/
    setcolor(WHITE); 
/* 前景颜色为白色*/
    setlinestyle(SOLID_LINE, 
0, NORM_WIDTH);
    rectangle(
00, maxx, maxy); /* 画矩形框*/
    
while(! kbhit())
    
{
        Putstar();
        setcolor(RED);
        setlinestyle(SOLID_LINE, 
0, THICK_WIDTH);
        ellipse(midx, midy, 
1305016030); /* 画一个围绕地球的
                                               光环
*/

        setcolor(BLACK);
        ellipse(midx, midy, 
1305016030);
        
for(i=0; i<=13; i++)
        
{
            setcolor(i
%2==0?LIGHTBLUE:BLACK); /*I 的值不同时选
                                              择的颜色也不同
*/

            ellipse(midx, midy, 
0360100100- 8*i); /* 画地球*/
            setcolor(LIGHTBLUE);
            ellipse(midx, midy, 
0360100- 8*i, 100);
        }

        putimage (x, y
- IMAGE_SIZE, pt_addr, XOR_PUT); /* 恢复
                                                       原先的画面
*/

        x
=x>=maxx?0:x+6;
        putimage(x, y
- IMAGE_SIZE, pt_addr, XOR_PUT); /* 在另
                                                      一位置显示飞船
*/

    }

    free(pt_addr); 
/* 释放缓冲区空间*/
    closegraph();
    
return;
}

void draw_image(int x, int y)
{
    
int arw[11];
    arw[
0]=x+10; arw[1]=y- 10; arw[2]=x+34; arw[3]=y- 6;
    arw[
4]=x+34; arw[5]=y+6; arw[6]=x+10; arw[7]=y+10;
    arw[
9]=x+10; arw[10]=y- 10;
    moveto(x
+10, y- 4);
    setcolor(
14);
    setfillstyle(
14);
    linerel(
- 3*10- 2*8);
    moveto(x
+10, y+4);
    linerel(
- 3*10+2*8);
    moveto(x
+10, y);
    linerel(
- 3*100);
    setcolor(
3);
    setfillstyle(
1, LIGHTBLUE);
    fillpoly(
4, arw);
}

void Putstar(void)
{
    
int seed=1858;
    
int i, dotx, doty, h, w, color, maxcolor;
    maxcolor
=getmaxcolor();
    w
=getmaxx();
    h
=getmaxy();
    srand(seed);
    
for(i=0; i<250++i)
    
{dotx=i+random(w- 1);
    doty
=i+random(h- 1);
    color
=random(maxcolor);
    setcolor(color);
    putpixel(dotx, doty, color);
    circle(dotx
+1, doty+11); }

    srand(seed);
}


以上代码转自:
基于Turbo C2.0 的动画设计
李国彪
( 嘉应学院电子信息工程系, 广东梅州514015)
posted on 2006-10-08 11:00  FireYang  阅读(1126)  评论(0编辑  收藏  举报