1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

      用c語言實(shí)現(xiàn)藝術(shù)清屏

      更新時(shí)間: 2007-06-01 10:09:25來源: 粵嵌教育瀏覽量:777


        問題的提出:我們?cè)诰幹瞥绦驎r(shí),經(jīng)常要用到清屏處理,如dos下的cls,Turbo C下的clrscr()等都具有清屏功能,但這些均為一般意義的清屏, 并未顯示其清屏規(guī)律.而有時(shí)為了達(dá)到清屏的藝術(shù)美觀,往往對(duì)清屏有一些具體要求,如:開幕清屏;閉幕清屏;上清屏;下清屏;中清屏.為此,這里用C語言編制了幾個(gè)子函數(shù),用于程序中時(shí),既可達(dá)到清屏的目的,有能增加屏幕的藝術(shù)美觀.

      子函數(shù)及演示程序:

      #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;i<d+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;i<y2;i++){
      goto_xy(x1,i);
      putchar(' ');
      goto_xy(x2,i);
      putchar(' ');
      delay(10);
      }
      for(j=x1;j<x2;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<x2;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<x2;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<y2;i++){
      goto_xy(j,i);
      putchar(' ');
      delay(10);
      }
      }
      /******************設(shè)置光標(biāo)子函數(shù)******************/

      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");
      }
      }
      }

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 一区二区三区国产自产视频免费 | 久久国产香蕉观看八 | 亚洲国产精品一区第一页 | 伊人亚洲综合网色aⅴ | 性做久久久久久久久 | 亚洲AV日韩AⅤ综合手机在线观看 |