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

时间: 2024-12-31 22:51:55

用C语言实现艺术清屏的相关文章

苹果发布超高清屏一体机电脑Retina iMac与Mac mini

[TechWeb报道]就在刚刚结束的苹果新品发布会上,苹果再一次改变了一体机电脑的屏幕分辨率极限,推出了全新的27寸Retina版iMac,新款iMac厚度只有5mm,整体设计语言与前一代产品类似,同属于刀锋边框设计,最大的提升在于那块逆天的5K极致超清屏,分辨率达到了5120*2880的惊人程度,也意味着它将会是当今全球分辨率最高的一体机电脑.除开屏幕分辨率外,硬件配置也得到了提升,具备i5与i7双处理器版本,i5版的处理器主频为3.5Ghz,i7版本则为4.0Ghz,显卡方面倒是采用了ATI

高清屏Windows 8设备显示设置与优化

  让传统桌面任务栏显示大图标 在Windows传统桌面中,非高清屏在任务栏上显示小图标可以容纳更多内容,但这些小尺寸图标在高清屏上显示面积会过小,所以我们不妨将任务栏上的图标设置为大尺寸,这样既可以充分显示高清屏的显示精度,也可以让用户看得更清楚更轻松. 方法很简单:在任务栏上点击鼠标右键,从菜单中点选"属性",然后在任务栏选项卡中取消"使用小任务栏按钮"前面的勾选,点击"确定". 图示:Win8传统桌面任务栏显示小尺寸图标 图示:让Win8传

Win8大尺寸高清屏设备如何做显示设置优化

  现在大屏幕电脑设备越来越多,1920×1080像素以及更高分辨率的屏幕令画面更加细腻美观,但是分辨率较高的大尺寸屏幕有时候也会产生一些困 扰,虽然单位面积中可以显示更多像素点,但每个像素点面积缩小,显示内容若可能显得过于细小.特别是对于Win8大屏一体机,很多人经常使用无线键鼠远距 离操控,家里的老人和孩子可能会经常使用,过小的屏幕元素都不是很方便.下面我们针对Win8传统桌面及Modern新界面的显示设置分别介绍几种调整 Win8大屏设备显示效果的方法和技巧,供大家参考. 海尔Q7就是一款

Cocos2D iOS之旅:如何写一个敲地鼠游戏(一):高清屏显示和UIKit

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 原文由Ray Wunderlich写成,地址在: http://www.raywenderlich.com/2560/cocos2d-tutorial-for-ios-how

如何在Oracle的SQL*Plus工具中清屏

方法一:同时按SHIFT和DELETE键然后点OK就可以了 . 方法二:如果在window窗口下sqlplus 中清屏命令:host cls 或是clear screen 或只是4位 clea scre. 方法三:如果是在dos的窗口下进入sql/plus就要用clear SCR. 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

python实现清屏的方法

这篇文章主要介绍了python实现清屏的方法,涉及Python调用系统命令的相关技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python实现清屏的方法.分享给大家供大家参考.具体分析如下: 一试: ? 1 2 >>> import os >>> os.system('cls') 会出现: ? 1 2 0 >>> 再试: ? 1 2 >>> import os >>> i = os.system('cl

方法-eclipse 中JAVA如何实现清屏

问题描述 eclipse 中JAVA如何实现清屏 编辑了一段代码,让用户输入账号密码,如果账号密码正确就进入选择界面,在进入选择界面之前,我想把屏幕上面输入的账号密码吗全部清除!该如何实现!不用循环换行java里面的方法行吗? 解决方案 代码清空控制台?手动清空可以,console里有个clear console的小图标 点一下就行了代码清空--连续输出50行,控制台应该干净了 for(int i=0;i<=50;i++){ System.out.println();} 解决方案二: 不理解你的

Java控制台里,怎么清屏啊?

问题描述 Java控制台里,怎么清屏啊? 解决方案 解决方案二:控制台右击然后clear解决方案三:DOS窗口清屏clsEclipse控制台清屏点右console右上角第一个带x的图片就是clearconsole解决方案四:亲,我说的是代码如果实现自动清屏解决方案五:for(inti=o;i<=50;i++){System.out.println();}解决方案六:我是想执行下一步,把前面输出的东西清除掉啊!怎么用代码清除解决方案七:控制台有个按钮,鼠标有提示(clean)解决方案八:我是想自动

c语言结构体清零的实现

问题描述 c语言结构体清零的实现 struct BLACK{char Name[10]; int a;int b; int c;int d;}; void Clear(unsigned char *Ptr int Size ){ while(Size!=0) { *Ptr++ = 0; Size --; }} 引用: void main(){ Clear(( unsigned char *)&Name[0]sizeof(Name)); } 这是我找到的一种方法,请问还可以怎样实现结构体清零呢?