用C语言实现艺术清屏
来源:互联网 发布:平原县seo招聘 编辑:程序博客网 时间:2024/04/29 19:50
转自:http://www.yesky.com/483/1800983.shtml
2004-05-25 10:50 来源:唯C世界 作者: 责任编辑:方舟·yesky 评论(0)
问题的提出:我们在编制程序时,经常要用到清屏处理,如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;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); }}/******************设置光标子函数******************/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语言实现艺术清屏
- 用C语言实现艺术清屏
- c语言艺术清屏
- C语言清屏
- c语言清屏函数
- c语言实现清屏以及显示当前日期
- c语言中如何清屏?
- C语言下的清屏函数
- C语言各种编译器的清屏方法
- C语言下的清屏函数
- C语言程序清屏和定位函数
- C语言中的清屏函数(自己编写)
- C语言基础 将控制台上面输出的内容清屏
- C语言通用双向链表的实现--设计的艺术
- Canvas清屏的实现
- python如何实现清屏
- linux 实现 cls 清屏
- Python-IDLE实现清屏
- Observer与Observable
- [OpenGL]课后案例13:球体的细分逼近程序
- 使用ImageMagick如何对图片进行全面压缩
- [OpenGL]课后案例14:Mandelbrot集程序
- [OpenGL]课后案例15:Bresenham画线算法
- 用C语言实现艺术清屏
- 单链表
- php学习 第二十五节
- App IPA中图片提取
- 网页几秒自动跳转 .
- 6款不容错过的超棒倒计时jQuery插件
- [OpenGL]课后案例16:带纹理立方体的旋转程序
- Android中一些数据存储函数的封装
- 一个项目经理的个人体会、经验总结