微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题在C语言中利用随机函数实现动画技术
栏目软件操作与技巧
作者江西 黄焕如
发布1993-08-06
  程序中改变X1、Y1、X2、Y2的数值,能将“微型机”图形移到屏幕的任何位置,改变XY的数值大小,能将“微型机”中屏幕范围放大或缩小。值得注意的是,该程序编译并链接成EXE文件后(TCC<文件名>GRAPHICS.LIB),在当前路径中必须含有EGA和VGA图形驱动程序及立体字符集(TRIP.CHR),否则程序会出错或者得不到放大的字体。如果将这些驱动程序和字符集事先链接在GRAPHICS.LIB中,然后再链接原程序,则该程序能脱离这些驱动程序和字符集而直接运行,具体操作可参考Turb C 2.0使用手册。
  本程序已在AST 386SX/20(VGA)上,Turb C 2.0编译下通过。
  /*利用随机函数实现动画技术实例*/
  #include<conioh>
  #include<stdioh>
  #include<stdibh>
  #include<graphicsh>
  #include<timeh>
  #defineX1260
  #defineY1140
  #defineX2320
  #defineY2180
  #defineXY16
  int GDriver,GMode,MColors,ECode;
  struct palettetype palette;
  void Initialize(void);void RBars(void);
  int main()
  {
  Initialize();/*初始化图形系统*//*显示放大字体*/
  setcolor(YELLOW);
  settextstyle(TRIPLEX-FONT,HORIZ-DIR,4);
  settextjustify(CENTER-TEXT,CENTER-TEXT);
  outtextxy((getmaxx()/2-17),360,"COMPUTER");
  RBars();/*主程序*/
  closegraph();/*关闭图形系统*/exit(1);
  }
  void Initialize(void)
  {
  GDriver=DETECT;
  initgraph(&GDriver,&GMode,"");
  ECode=graphresult();
  if(ECode!=gr0k){
  printf("Graphics Error:%s\n",grapherrormsg(ECode));
  exit(1);}
  getpalette(&palette);
  MColors=getmaxcolor()+1;
  }
  void RBars(void)
  {
  int color;/*画“微型计算机”图形*/
  setcolor(WHITE);
  setfillstyle(1,DARKGRAY);
  bar3d(X1-20,Y1-10,X2+56,Y2+70,0,3);
  setfillstyle(CLOSE-DOT-FILL,RED);
  bar(X1+4,Y1+78,X1+20,Y1+83);
  setcolor(MAGENTA);
  circle(X2+28,Y2+60,4);
  circle(X2+16,Y2+60,4);
  circle(X2+4,Y2+60,4);
  setcolor(WHITE);
  setfillstyle(SOLID-FILL,DARKGRAY);
  bar3d(X1-60,Y1+120,X1+154,Y1+170,0,2);
  bar3d(X1+20,Y1+126,X1+100,Y1+164,0,2);
  line(X1+20,Y1+145,X1+100,Y1+145);
  setfillstyle(SOLID-FILL,GREEN);
  bar(X1+26,Y1+130,X1+34,Y1+152);
  setfillstyle(WIDE-DOT-FILL,RED);
  bar(x1-24,y1+128,X1-44,Y1+142);
  /*利用随机函实现矩形画面互相覆盖,产生动感*/
  while(!dbhit()){
  color=random(MColors-1)+1;
  setcolor(color);
  setfillstyle(random(11)+1,color);
  bar3d(X1+random(getmaxx()/XY),Y1+random
  (getmaxy()/XY),
  X@+random(getmaxx()/XY),Y2+random
  (getmaxy()/XY),0,5);}
  }