用C语言实现艺术清屏

皇家圣日

皇家圣日

2016-02-19 19:14

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的用C语言实现艺术清屏,过去的都会过去,迎接崭新的开始,释放更美好的自己。
问题的提出:我们在编制程序时,经常要用到清屏处理,如dos下的cls,Turbo C下的clrscr()等都具有清屏功能,但这些均为一般意义的清屏,并未显示其清屏规律。而有时为了达到清屏的艺术美观,往往对清屏有一些具体要求,如:开幕清屏、闭幕清屏、上清屏、下清屏、中清屏。为此,这里用C语言编制了几个子函数,用于程序中时,既可达到清屏的目的,有能增加屏幕的艺术美观。
  
  子函数及演示程序:
  
  #include<stdio.h>
  #include<dos.h>
  #include<conio.h>
  
  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;id+1;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;iy2;i++){
  goto_xy(x1,i);
  putchar(' ');
  goto_xy(x2,i);
  putchar(' ');
  delay(10);
   }
   for(j=x1;jx2;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;jx2;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;jx2;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;jx1;j--)
  for(i=y1;iy2;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;i24;i++){
  for(j=0;j79;j++){
   goto_xy(i,j);
   printf("a");
  }
   }
  } 更多内容请看C/C++进阶技术文档专题,或
展开更多 78%)
分享
qqQQ
qzoneQQ空间
weibo微博

猜你喜欢

用C语言实现艺术清屏

编程语言 网络编程
用C语言实现艺术清屏

合并排序(C语言实现)

编程语言 网络编程
合并排序(C语言实现)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

数据结构C语言实现系列——队列

编程语言 网络编程
数据结构C语言实现系列——队列

使用C语言实现CRC校验的方法

编程语言 网络编程
使用C语言实现CRC校验的方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

灵活运用c语言实现高级功能

编程语言 网络编程
灵活运用c语言实现高级功能

数据结构算法集---C++语言实现

编程语言 网络编程
数据结构算法集---C++语言实现

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

C++编程易范的错误

C++编程易范的错误

C++编写的ATM自动取款机模拟程序分析

C++编写的ATM自动取款机模拟程序分析
下拉加载更多内容 ↓