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

其中主函数调用只是个演示程序,具体应用时稍加修改即可

posted on 2006-02-28 20:49 Aween's Blog 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/aween/archive/2006/02/28/339897.html

用c语言实现艺术清屏相关推荐

  1. C语言中的清屏函数(自己编写)

    在csdn论坛里看到这样一个问题:如何在c语言命令提示下清除屏幕? 感兴趣,随查之. 有解: #include<stdio.h> #include<dos.h> void ma ...

  2. c语言菜单怎么清空,你好,请教个C语言菜单实现清屏功能。就是用switch里面输入一个数子,就实现部分清屏或者全清屏...

    在标准的C语言中,没有所谓的清屏函数的,特别是部分清屏 C语言它只是一个标准,只有标准的输入/输出函数 而你要的菜单/清屏功能,必须调用系统的函数才能实现(不同系统用户界面设计方式是不同的) 如在wi ...

  3. 命令行执行C语言程序时清屏命令

    先导入表头文件 #include <stdlib.h> 然后调用system()函数 括号内的指令执行效果和直接在命令行执行的指令是一致的,所以命令行可以执行的命令,在这里都可以执行 Wi ...

  4. c语言重画清屏函数,写了个小程序,一直会闪屏,用的gotoxy函数,求大神教

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #include // 全局变量 int position_x,position_y; // 飞机位 ...

  5. c语言printf清屏,C语言入门 — printf 使用方法

    本章节讲如何使用printf打印不同形式的内容,printf是c语言里常用的打印接口,也是c标准函数库,使用时需要#include ,下面讲讲如何使用printf: 一.printf 的基础知识: 1 ...

  6. 编写C语言跨平台函数(以清屏和休眠函数为例)

    支持C语言的平台有许多,常见的编译器如VC.gcc.Clang等.不同的编译器共同点是都支持标准C(ANSI C),但是各自却又有自己独立的.平台相关的功能以及函数接口.这通常为程序的移植性带来很多问 ...

  7. Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)

    文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...

  8. c语言一些如暂停、清屏等功能(持续更新ing...)

    不完全代码: #include<stdlib.h>#include <windows.h>system("cls");//清屏system("pa ...

  9. c语言休眠函数 vs,编纂C语言跨平台函数(以清屏和休眠函数为例)

    编写C语言跨平台函数(以清屏和休眠函数为例) 支持C语言的平台有许多,常见的编译器如VC.gcc.Clang等.不同的编译器共同点是都支持标准C(ANSI C),但是各自却又有自己独立的.平台相关的功 ...

最新文章

  1. 奥比中光Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题
  2. 高斯拟合原理_解读 | 得见的高斯过程
  3. redis安装,redis项目以来,redis和spring整合,redis的service,redis的service实现类
  4. iOS之仿QQ点赞按钮粒子效果的实现
  5. SharePoint 2010 master page 控件介绍(5):其他
  6. 为什么要学习Java EE?需要掌握哪些技能?
  7. centos升级glibc(升级到 2.17版)
  8. WebSphere中连接池的配置
  9. 3DShader之法线贴图(normal mapping)
  10. 动手学深度学习Pytorch Task08
  11. Scala之flatMap操作
  12. cleverhans库——FGSM代码实战
  13. 地理入门-经纬度时区速成总结篇(转)
  14. IE浏览器无法连接网络的解决办法
  15. 网站性能常用指标与优化方法
  16. 阿里p9就三分钟。。。。。
  17. 离散型均匀分布 连续型均匀分布
  18. 微信自定义分享功能二次封装
  19. 新手第一次用云渲染如何快速上手
  20. Cesium 热力图(可直接使用)

热门文章

  1. 【原创】ASP.NET C# 对SQL/ACCESS 数据库的备份和还原函数
  2. 关闭tomcat报错Cannot allocate memory
  3. oracle goldengate实施简明介绍
  4. 嵌入式Linux之旅——环境搭建篇之烧写整个系统
  5. 任务二十九:表单(一)单个表单项的检验
  6. T450的Fn lock
  7. C#——await与async实现多线程异步编程
  8. Tomcat6.0配置集合
  9. 用winformz时间格式不正确_巨峰葡萄不能膨大?错!在正确的时间,用对方法,收获优质果穗型...
  10. Win10将引入HomeHub功能 和Google Home和Amazon Echo竞争