学习C语言艺术清屏

文章作者 100test 发表时间 2008:01:04 11:54:07
来源 100Test.Com百考试题网


  问题的提出:我们在编制程序时,经常要用到清屏处理,如dos下的cls,Turbo C下的clrscr()等都具有清屏功能,但这些均为一般意义的清屏,

  并未显示其清屏规律.而有时为了达到清屏的艺术美观,往往对清屏有一些具体要求,如:开幕清屏.闭幕清屏.上清屏.下清屏.中清屏.为此,这里

  用C语言编制了几个子函数,用于程序中时,既可达到清屏的目的,有能增加屏幕的艺术美观.
  子函数及演示程序:

  #include
  #include
  #include

  void goto_xy(int x,int y).
  void dcls(int x1,int x2,int y1,int y2).
  void bcls(int x1,int x2,int y1,int y2).
  void kcls(int x1,int x2,int y1,int y2).
  void recls(int x1,int x2,int y1,int y2).
  void zcls(int x1,int x2,int y1,int y2).
  void puta(void).


  /*--------------演示程序---------------------*/
  main()
  {
  puta().
  getch().
  dcls(0,4,0,79).
  getch().
  puta().
  getch().
  bcls(0,25,0,79).
  getch().
  puta().
  getch().
  zcls(0,25,0,79).
  getch().
  }
  /*********center clear screen(中心清屏)***********/
  void zcls(int x1,int x2,int y1,int y2)
  {
  int x00,y00,x0,y0,i,d.
  if((y2-y1)>(x2-x1)){
  d=(x2-x1)/2.
  x0=(x1 x2)/2.
  y0=y1 d.
  y00=y2-d.
  for(i=0.i<(d 1).i )
  recls((x0-i),(x00 i),(y0-i),(y00 i)).
  delay(10).
  }
  else{
  d=(y2-y1)/2.
  y0=(y1 y2)/2.
  x0=x1 d.
  x00=x2-d.
  for(i=0.i  recls(x0-i,x00 i,y0-i,y00 i).
  delay(10).
  }
  }

  /************* clear rectangle side(矩形边清屏)***********************/

  void recls(int x1,int x2,int y1,int y2)
  {
  int i,j.
  for(i=y1.i    goto_xy(x1,i).
  putchar( ).
  goto_xy(x2,i).
  putchar( ).
  delay(10).
  }
  for(j=x1.j  goto_xy(i,y1).
  putchar( ).
  goto_xy(j,y2).
  putchar( ).
  delay(10).
  }
  }
  /******************open screen clear(开屏式清屏)*********************/

  void kcls(int x1,int x2,int y1,int y2)
  {
  int t,s,i,j.
  t=s=(y1 y2)/2.
  for(.t<=y2.t ,s--)
  for(j=x1.j  goto_xy(j,t).
  putchar( ).
  goto_xy(j,s).
  putchar( ).
  delay(10).
  }
  }
  /*****************close screen clear*****闭幕式清屏*******************/

  void bcls(int x1,int x2,int y1,int y2)
  {
  int t,s,j.
  t=y1.
  s=y2.
  for(t=y1.t<(y1 y2)/2.t ,s--)
  for(j=x1.j  goto_xy(j,t).
  putchar( ).
  goto_xy(j,s).
  putchar( ).
  delay(10).
  }
  }
  /******************bottom screen clear(自下清屏)********************/

  void dcls(int x1,int x2,int y1,int y2)
  {
  int t,s,j,i.
  t=s=(y1 y2)/2.
  for(j=x2.j>x1.j--)
  for(i=y1.i  goto_xy(j,i).
  putchar( ).
  delay(10).
  }
  }
  /******************设置光标子函数******************/

  void goto_xy(int x,int y)
  {
  union REGS r.
  r.h.ah=2.
  r.h.dl=y.
  r.h.dh=x.
  r.h.bh=0.
  int86(0x10,&.r,&.r).
  }

  /**********************在屏幕上打出一连串的a字母用于演示程序******************/

  void puta(void)
  {
  int i,j.
  for(i=0.i<24.i ){
  for(j=0.j<79.j ){
  goto_xy(i,j).
  printf("a").
  }
  }
  }



相关文章


计算机等级考试二级C语言模拟试题(1)及答案
CopyFileEx函数的使用方法
最新Dev-c 与Allegor平台的搭建方法
编程初学者易犯的毛病
学习C语言艺术清屏
C#实现SQLServer数据库日志的配置方法
数据库操作类实现(C#,SqlClient)
C#获取数据库表的创建脚本
C#备份和恢复SQLServer数据库
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛