145.艺术清屏

举报
C语言与CPP编程 发表于 2022/05/11 00:05:49 2022/05/11
【摘要】 #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 y...

  
  1. #include<stdio.h>
  2. #include<dos.h>
  3. #include<conio.h>
  4. void goto_xy(int x,int y);
  5. void dcls(int x1,int x2,int y1,int y2);
  6. void bcls(int x1,int x2,int y1,int y2);
  7. void recls(int x1,int x2,int y1,int y2);
  8. void zcls(int x1,int x2,int y1,int y2);
  9. void puta(void);
  10. /*--------------演示程序---------------------*/
  11. main()
  12. {
  13. puta();
  14. getch();
  15. dcls(0,4,0,79);
  16. getch();
  17. puta();
  18. getch();
  19. bcls(0,25,0,79);
  20. getch();
  21. puta();
  22. getch();
  23. zcls(0,25,0,79);
  24. getch();
  25. }
  26. /*********center clear screen(中心清屏)***********/
  27. void zcls(int x1,int x2,int y1,int y2)
  28. {
  29. int x00,y00,x0,y0,i,d;
  30. if((y2-y1)>(x2-x1)){
  31. d=(x2-x1)/2;
  32. x0=(x1+x2)/2;
  33. y0=y1+d;
  34. y00=y2-d;
  35. for(i=0;i<(d+1);i++)
  36. recls((x0-i),(x00+i),(y0-i),(y00+i));
  37. }
  38. else{
  39. d=(y2-y1)/2;
  40. y0=(y1+y2)/2;
  41. x0=x1+d;
  42. x00=x2-d;
  43. for(i=0;i<d+1;i++)
  44. recls(x0-i,x00+i,y0-i,y00+i);
  45. }
  46. }
  47. /************* clear rectangle side(矩形边清屏)***********************/
  48. void recls(int x1,int x2,int y1,int y2)
  49. {
  50. int i,j;
  51. for(i=y1;i<y2;i++){
  52. goto_xy(x1,i);
  53. putchar(' ');
  54. goto_xy(x2,i);
  55. putchar(' ');
  56. }
  57. for(j=x1;j<x2;j++){
  58. goto_xy(i,y1);
  59. putchar(' ');
  60. goto_xy(j,y2);
  61. putchar(' ');
  62. }
  63. }
  64. /*****************close screen clear*****闭幕式清屏*******************/
  65. void bcls(int x1,int x2,int y1,int y2)
  66. {
  67. int t,s,j;
  68. t=y1;
  69. s=y2;
  70. for(t=y1;t<(y1+y2)/2;t++,s--)
  71. for(j=x1;j<x2;j++){
  72. goto_xy(j,t);
  73. putchar(' ');
  74. goto_xy(j,s);
  75. putchar(' ');
  76. delay(1);
  77. }
  78. }
  79. /******************bottom screen clear(自下清屏)********************/
  80. void dcls(int x1,int x2,int y1,int y2)
  81. {
  82. int t,s,j,i;
  83. t=s=(y1+y2)/2;
  84. for(j=x2;j>x1;j--)
  85. for(i=y1;i<y2;i++){
  86. goto_xy(j,i);
  87. putchar(' ');
  88. delay(1);
  89. }
  90. }
  91. /******************设置光标子函数******************/
  92. void goto_xy(int x,int y)
  93. {
  94. union REGS r;
  95. r.h.ah=2;
  96. r.h.dl=y;
  97. r.h.dh=x;
  98. r.h.bh=0;
  99. int86(0x10,&r,&r);
  100. }
  101. /**********************在屏幕上打出一连串的@字母用于演示程序******************/
  102. void puta(void)
  103. {
  104. int i,j;
  105. for(i=0;i<24;i++){
  106. for(j=0;j<79;j++){
  107. goto_xy(i,j);
  108. printf("@");
  109. }
  110. }
  111. }

文章来源: blog.csdn.net,作者:程序员编程指南,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_41055260/article/details/124665755

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。