地球 c语言实现

原创 2007年09月24日 15:46:00

 #include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <process.h>

#define TRUE 1
#define FALSE 0
#define IMAGE_SIZE 10

void draw_picture();
void move_picture();
void draw_image(int x, int y);
void putpixel_stars();

char title[]="WELLCOME TO THE";
char *move="COMPUTER WOELD!";
void *pt_addr;
int x,y,maxx,maxy,midx,midy;

int main()
{
   int driver = VGA;
   int mode=VGAHI;
   int errorcode;
   initgraph(&driver, &mode, "C://soft//TC");
   errorcode=graphresult();
   if(errorcode!=0){
     printf("Graphics error:%s/n",grapherrormsg(errorcode));
     printf("Press any key to halt:");
     getch();
     exit(1);
   }
   cleardevice();
   maxx=getmaxx();
   maxy=getmaxy()-20;
   midx=maxx/2;
   midy=maxy/2;
   x=0;
   y=midy-25;
   setbkcolor(GREEN);
   draw_picture();
   move_picture();
   free(pt_addr);
   settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
   settextjustify(LEFT_TEXT,TOP_TEXT);
   restorecrtmode();
}

void draw_picture(void)
{
  unsigned int i,size;
  setlinestyle(SOLID_LINE,0,NORM_WIDTH);
  setcolor(LIGHTBLUE);
  for(i=0;i<=14;i++)
  {
    ellipse(midx,midy,0,360,108,108-8*i);
    ellipse(midx,midy,0,360,108-8*i,108);
  }
  setcolor(BLUE);
  setlinestyle(SOLID_LINE,0,THICK_WIDTH);
  ellipse(midx,midy,130,50,170,30);
  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);
  putpixel_stars();
  setcolor(DARKGRAY);
  setlinestyle(SOLID_LINE,0,THICK_WIDTH);
  rectangle(0,0,maxx,maxy);
  setfillstyle(SOLID_FILL,LIGHTGRAY);
  bar(0,getmaxy()-18,getmaxx(),getmaxy());
  outtextxy(150,getmaxy()-12,"Program for Demo in CG Lesson ,HUST");
  setlinestyle(SOLID_LINE,0,NORM_WIDTH);
  setcolor(BLUE);
  settextstyle(TRIPLEX_FONT,HORIZ_DIR,6);
  settextjustify(CENTER_TEXT,CENTER_TEXT);
  outtextxy(midx-70,70,title);
}

void move_picture(viod)
{
  char printmove[2];
  int movex;
  do{
    x=0;
    movex=midx-200;
    setcolor(6);
    while(x<=maxx)
    {
      if(kbhit())break;
      putimage(x,y-IMAGE_SIZE,pt_addr,XOR_PUT);
      x=x+5;
      if(*move!='/0'&& x>movex)
      {
        *(printmove)=*(move++);
        *(printmove+1)='/0';
        outtextxy(movex,y+IMAGE_SIZE+100,printmove);
    movex+=30;
      }
      putimage(x,y-IMAGE_SIZE,pt_addr,XOR_PUT);
      delay(150000);
    }
     putimage(0,y-IMAGE_SIZE,pt_addr,XOR_PUT);
  }while(!kbhit());
}

void draw_image(int x,int y)
{
  setcolor(GREEN);
  setfillstyle(1,4);
  moveto(x+10,y);
  linerel(-3*10,2*10);
  moveto(x+10,y);
  linerel(-3*10,-2*10);
  moveto(x+25,y);
  linerel(-5*10,0);
  fillellipse(x+13,y,8,8);
}

void putpixel_stars(void)
{
  int i,seed=1958;
  int dotx,doty,h,w,color,maxcolor;
  maxcolor=getmaxcolor();
  w=getmaxx();
  h=getmaxy()-20;
  srand(seed);
  for(i=0;i<5000;++i)
  {
    dotx=1+random(w-1);
    doty=1+random(h-1);
    color=random(maxcolor);
    putpixel(dotx,doty,color);
  }
  srand(seed);
}


相关文章推荐

VS 平台下 OpenGL 实现地球、月球、太阳运动

#include #include #include // 旋转的步进值 static float fMoonRot = 0.0f; static float fEarthRo...

JS实现的根据经纬度计算地球上两点之间的距离

最近用到了根据经纬度计算地球表面两点间距离的公式,然后就用JS实现了一下。 计算地球表面两点间的距离大概有两种办法。 第一种是默认地球是一个光滑的球面,然后计算任意两点间的距离,这个距离叫...

Flash 引导层 实现卫星绕地球旋转

1.将图片导入到库 2.建立图层,将图片拉到场景中,命名为地球 3.新建图层,再新建一个元件,命名为卫星    这里用一个椭圆代替卫星     4.新建图层,命名为引导层,画一个椭圆,与地球...

虚拟地球原理与实现

虚拟地球原理与实现 摘要:构建一个虚拟地球,需要解决三个问题,全球角度空间数据模型的构造,海量地理空间数据(包括地形、影像)的组织、管理和调度,空间数据的三维可视化。本文对这三个问题进行了详...

OpenGL太阳地球月亮纹理实现

  • 2012年05月05日 22:16
  • 2.12MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:地球 c语言实现
举报原因:
原因补充:

(最多只允许输入30个字)