C语言艺术清屏
问题的提出:我们在编制程序时,经常要用到清屏处理,如dos下的cls,Turbo C下的clrscr()等都具有清屏功能,但这些均为一般意义的清屏, Id{b8E3g9{;yKvo(H(z]e;j3G.Q
并未显示其清屏规律.而有时为了达到清屏的艺术美观,往往对清屏有一些具体要求,如:开幕清屏;闭幕清屏;上清屏;下清屏;中清屏.为此,这里)by ck3m
!f~ tOq
用C语言编制了几个子函数,用于程序中时,既可达到清屏的目的,有能增加屏幕的艺术美观. ] lj%S`}
子函数及演示程序:U ZL8Q7OUm7C
(W!m2zHl
#include<stdio.h>2R)DA6B:i
#include<dos.h>*W S%~uYdizL
#include<conio.h>5]^&Yk B8w+A8J
-I\8G'Z3EE+Rv i7xI[ h
void goto_xy(int x,int y);/y x}&tP'GX
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);6L g7yiz;i({
void puta(void);
LBu?5e ^
/*--------------演示程序---------------------*/
main()
{6D%@0l]._khC
puta();$x$Y0D.D)\g1sx
getch();%~8g`5m \#g*KM
dcls(0,4,0,79);"hxkl M#U.k7w*y
getch();
puta();+F6cHLD.Y/`
getch();
bcls(0,25,0,79);f2P$}%g_G6Zr)z7y
getch();:L_k-Up |,~^
puta();
getch();yy)WH7KW`^T*S
zcls(0,25,0,79);s J8H&Xn}
getch();q h|!Z~k:qi
}h6X`3Q*^r8Z$F#l
/*********center clear screen(中心清屏)***********/%n!ZPCX[b g
void zcls(int x1,int x2,int y1,int y2)
{
int x00,y00,x0,y0,i,d;Xo,S`[`
if((y2-y1)>(x2-x1)){
d=(x2-x1)/2;K2rO z,o0C!m
x0=(x1+x2)/2;
y0=y1+d;
y00=y2-d;
for(i=0;i<(d+1);i++)k8x$vA*b3N7ZEs
recls((x0-i),(x00+i),(y0-i),(y00+i));
delay(10);
}
else{A/t5X&{ m l,n-Bc$`1E
d=(y2-y1)/2;9Eu&^%w'BYt[^u
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);&GkA-P/A3K,Su
}
},T'@+t aI!Z4dH
/************* clear rectangle side(矩形边清屏)***********************/
%B/L(C/FF^:iuj D,x
void recls(int x1,int x2,int y1,int y2)
{\MP8PZ#r
int i,j;
for(i=y1;i<y2;i++){ siS9D-Vc"O!v;s:XhH
goto_xy(x1,i);@`"`Wt"OC$v
putchar(' ');
goto_xy(x2,i);
putchar(' ');U/QH[&zj9o3C/]D0I?
delay(10);
}*f+c6}4F"@O;us
for(j=x1;j<x2;j++){
goto_xy(i,y1);
putchar(' ');
goto_xy(j,y2);
putchar(' ');
delay(10);
}
}L)} ~$Mo.[/E/g
/******************open screen clear(开屏式清屏)*********************/4X7ufW,\
1_h7t:X^e*}S
void kcls(int x1,int x2,int y1,int y2)+GII1jfP CSn8r
{
int t,s,i,j;
t=s=(y1+y2)/2;