C语言艺术清屏
问题的提出:我们在编制程序时,经常要用到清屏处理,如dos下的cls,Turbo C下的clrscr()等都具有清屏功能,但这些均为一般意义的清屏,并未显示其清屏规律.而有时为了达到清屏的艺术美观,往往对清屏有一些具体要求,如:开幕清屏;闭幕清屏;上清屏;下清屏;中清屏.为此,这里
nfB{4v.R
用C语言编制了几个子函数,用于程序中时,既可达到清屏的目的,有能增加屏幕的艺术美观.
子函数及演示程序:rDe&M[UP3v
#include<stdio.h>zzt:rIA~+x
#include<dos.h>9t2|0umW ]
#include<conio.h>]?0E6D @ ur,xx
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);t5tTza6T"]
void kcls(int x1,int x2,int y1,int y2);5XB8o?1Nx }Tw
void recls(int x1,int x2,int y1,int y2);
void zcls(int x1,int x2,int y1,int y2);'xd+P,|i'G8z6f.K&M&~ i
void puta(void);
cVW"lD#b:S
/*--------------演示程序---------------------*/!bm6R~n#z0@_M
main();Tc u kCPi?m
{]zt;r#t
puta();.lL+Co c0m-Og.N
getch();
dcls(0,4,0,79);]$a1A1dA
getch();
puta();rn/qQ\Q3A
getch();_[,J6@2^9F{)u/N]
bcls(0,25,0,79);
getch();S:l]"~5i T a3S
puta();
getch();_7O%}$J.}f!x
zcls(0,25,0,79);
getch();iy @){~4e"@JPE9q/m
} K*|q#~Pf-cz
/*********center clear screen(中心清屏)***********/f|.}&w7Ql/q
void zcls(int x1,int x2,int y1,int y2)
{
int x00,y00,x0,y0,i,d;&x$K0y3Ka0_zZ_
if((y2-y1)>(x2-x1)){
d=(x2-x1)/2;
x0=(x1+x2)/2;"aC#[9\3u X
y0=y1+d;
y00=y2-d;
for(i=0;i<(d+1);i++)VaV6kkM1lz?F
recls((x0-i),(x00+i),(y0-i),(y00+i));yx2id)j(CW/m
delay(10);4q3@zzg1t'j
}
else{$V$s"j9@y;lTJ
d=(y2-y1)/2;
y0=(y1+y2)/2;;S:T.]I8jI"G
x0=x1+d;
x00=x2-d;
for(i=0;i<d+1;i++)
recls(x0-i,x00+i,y0-i,y00+i);SZ-|6B'U
delay(10);
}(vo{?.j1L4v8S8d
}
/************* clear rectangle side(矩形边清屏)***********************/"F @R7Y;~f:`
void recls(int x1,int x2,int y1,int y2)f ~ x g)k Z9q(R
{
int i,j; J \BRe
for(i=y1;i<y2;i++){M:p5T*XkRw
goto_xy(x1,i);
putchar(' ');
goto_xy(x2,i);3hA xZm Z3?I'|v
putchar(' ');c#CCNEz
delay(10);
}
for(j=x1;j<x2;j++){2n!IfqpB m&l
goto_xy(i,y1);
putchar(' ');l^7~:W P:Lq;@C
goto_xy(j,y2);
putchar(' ');"Du/I!X3C RK
delay(10);
}U$NPS,Q
}
/******************open screen clear(开屏式清屏)*********************/
DCI'O}
void kcls(int x1,int x2,int y1,int y2)x:cH,@[yXx
{:vK_r-YM9Q,Bg7@
int t,s,i,j;
t=s=(y1+y2)/2;
for(;t<=y2;t++,s--)
for(j=x1;j<x2;j++){a0C3EG X"BT|3n
goto_xy(j,t);