地球 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);
}

C语言实验:已知地球上两点的经度和纬度求其球面距离

要求:地球的平均半径为6371千米,已知地球上两个城市A、B的经度和纬度,编程序求出这两个城市之间的地面距离。 首先,固定两点,a(x1,y1,z1),b(x2,y2,z2)。 由...
  • zhengnanlee
  • zhengnanlee
  • 2013年03月24日 10:14
  • 8053

2014.10.4模拟赛【某种密码】

某种密码(password.*)     关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY。若KEY=∑▒〖Ai*Bi...
  • zhb1997
  • zhb1997
  • 2014年10月04日 20:58
  • 279

【USACO1.1_1】★Your Ride Is Here 你要乘坐的飞碟在这里

一个众所周知的事实,在每一彗星后面是一个不明飞行物UFO. 这些不明飞行物时常来收集来自在 地球上忠诚的支持者. 不幸地,他们的空间在每次旅行只能带上一群支持者. 他们要做的是用一种 聪明的方案让...
  • zwcwu31
  • zwcwu31
  • 2014年04月01日 22:43
  • 1459

PID连续控制算法的表达式以及C语言实现

1.      数字(离散)PID控制算法的表达式: 将PID调节器离散化,用差分方程来代替连续系统的微分方程,分为位置式和增量式两类。 重点理解概念如下: a)  基本偏差e(t):表示当前测...
  • xiao2yizhizai
  • xiao2yizhizai
  • 2016年03月31日 13:56
  • 12753

最小二乘法的C语言实现

1. 前言 最近断断续续看了一些数学书,有高等数学,也有初等数学,有科普的,有微积分的。 有时候,觉得数学才是世界上最美的东西,但有时候又觉得数学很高冷,不接地气。 不过,前段时间工作中用到...
  • shine_journey
  • shine_journey
  • 2017年06月07日 13:07
  • 1143

C语言设计并行处理

要编写一个好的游戏,必需使用到并行机制。并行机制要涉及到一个重要的语句,那就是While语句。你可能不禁会问:那不就是循环吗?对,并行机制就是要利用循环,即游戏循环(Game Loop)。实际上,所有...
  • lifan_3a
  • lifan_3a
  • 2014年12月02日 14:18
  • 1274

如何使用C语言编写精确定时程序?

Windows是基于消息机制的系统,任何事件的执行都是通过发送和接收消息来完成的。这样就带来了一些问题,如一旦计算机的CPU被某个进程占用,或系统资源紧张时,发送到消息队列中的消息就暂时被挂起,得不到...
  • az44yao
  • az44yao
  • 2015年04月16日 17:50
  • 3509

遗传算法(GA)的C语言实现

问题: 在下面的程序中将要运用遗传算法对一个多项式求最小值 要求在(-8,8)间寻找使表达式达到最小的x,误差为0.001 问题分析: 编码:采用常规码,即二进制码编码。构造简单,交叉、变异的...
  • u013007900
  • u013007900
  • 2015年02月05日 10:07
  • 8129

最小二乘法C语言的实现

1.实验目的: 进一步熟悉曲线拟合的最小二乘法。 掌握编程语言字符处理程序的设计和调试技术。   2.实验要求: 输入:已知点的数目以及各点坐标 。 输出:根据最小二乘法原理以及各点坐标求...
  • huangshanchun
  • huangshanchun
  • 2015年12月26日 14:53
  • 3558

用C语言实现Ping程序功能

本文转载自:http://www.ibm.com/developerworks/cn/linux/network/ping/ping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。pi...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2013年06月18日 19:46
  • 3285
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:地球 c语言实现
举报原因:
原因补充:

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