#include <time.h>
#include <Windows.h>typedef struct        //记录雨滴的结构体{
int x, y;
char ch;
}RAINDROP;
const int BUFFER_SIZE = 100;
int WIDTH = 80;
int HEIGHT = 30;
const int RAIN_LENGTH = 18;
RAINDROP raindropLine[BUFFER_SIZE];
HANDLE HOUT = GetStdHandle(STD_OUTPUT_HANDLE);//获得标准输出的句柄
void gotoxy(int x, int y)
{COORD pos; //定义表示一个字符在控制台屏幕上的坐标的对象pos.X = x;  pos.Y = y; SetConsoleCursorPosition(HOUT, pos);    //设置控制台标准输出光标位置}void show_cursor(BOOL hide){    CONSOLE_CURSOR_INFO cciCursor;  if (GetConsoleCursorInfo(HOUT, &cciCursor)) //获得光标信息{       cciCursor.bVisible = hide;             //隐藏光标      SetConsoleCursorInfo(HOUT, &cciCursor); //重新设置光标    }}void set_color(int color){SetConsoleTextAttribute(HOUT, color);       //设置输出颜色} int main(){   CONSOLE_SCREEN_BUFFER_INFO info;    GetConsoleScreenBufferInfo(HOUT, &info);    //获得控制台窗体信息HEIGHT = info.srWindow.Bottom;              //根据控制台的宽高设置显示的宽高WIDTH = info.srWindow.Right;
show_cursor(FALSE);
srand((unsigned int)time(NULL));for (int i=0; i<BUFFER_SIZE; i++)         //随机设置雨滴下落的位置   {   raindropLine[i].x = rand()%WIDTH;      raindropLine[i].y = rand()%HEIGHT;     raindropLine[i].ch = rand() %2 + 48;              //设置雨滴内容0或1 }   while(true)             {   GetConsoleScreenBufferInfo(HOUT, &info);    //当窗体大小变化时,重新设置宽高信息  HEIGHT = info.srWindow.Bottom; WIDTH = info.srWindow.Right;   for (int i=0; i<BUFFER_SIZE; ++i)     {           if (raindropLine[i].y <= HEIGHT)            {               gotoxy(raindropLine[i].x, raindropLine[i].y);               set_color(FOREGROUND_GREEN);        //设置雨滴颜色            putchar(raindropLine[i].ch);        }           gotoxy(raindropLine[i].x, raindropLine[i].y - RAIN_LENGTH); //擦除过长的雨滴           putchar(' ');     raindropLine[i].y++;          raindropLine[i].ch = rand() % 2 + 48;         if (raindropLine[i].y > HEIGHT + RAIN_LENGTH)                   {           raindropLine[i].x = rand() % WIDTH;                raindropLine[i].y = rand() % HEIGHT;       }       if ( raindropLine[i].y <= HEIGHT)   {           gotoxy(raindropLine[i].x, raindropLine[i].y);               set_color(FOREGROUND_GREEN|FOREGROUND_INTENSITY);   //高亮最下方的雨滴              putchar(raindropLine[i].ch);        }   }   Sleep(50);} getchar();  return 0;}

用代码写个数字满屏幕---数字雨相关推荐

  1. 编程笔试(解析及代码实现):求不重复数字之和​​​​​​​给定一组整型数字,里面有且仅有两个数字值出现了一次,其他的数字都出现了两次。请写出程序求出这两个只出现了一次的数字之和

    编程笔试(解析及代码实现):求不重复数字之和给定一组整型数字,里面有且仅有两个数字值出现了一次,其他的数字都出现了两次.请写出程序求出这两个只出现了一次的数字之和 目录 题目描述 代码实现 题目描述 ...

  2. 菜鸟扣代码第二天:leetcode13--罗马数字转整数

    题目描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ...

  3. 自己写的程序密码功能 ------数字功能

    自己写的程序密码功能  ------数字功能 class LockedViewController: UIViewController { var dataBase:FMDatabase? var i ...

  4. wpf 切换搜狗输入法英文_搜狗输入法全新升级手写功能,中英数字自由写,告别切换丨本周新闻...

    搜狗AI合成主播雅妮 为您带来搜狗本周新闻播报 新 闻 原 文 .01. 2019搜狗全年营收超80亿人民币,创历史新高 近期,搜狗公布了2019年第四季度及全年未经审计的财务报告.财报显示,2019 ...

  5. php 数字加逗号,php数字满三位添加一逗号

    //数字满三位添加一逗号: $s_money1 = 1000000; $s_money2 = number_format($s_money1); echo $s_money1; //1000000 e ...

  6. 利用js写一个函数,实现翻转任意数组。 写一个函数,实现对数字数组的排序。

    1.写一个函数,实现翻转任意数组 function reverse(arr) {var newArr = [];for (var i = arr.length - 1; i >= 0; i--) ...

  7. 写论文的时候,数字什么时候用大写,什么时候用罗马数字。有严格要求吗?

    写论文的时候,数字什么时候用大写,什么时候用罗马数字.有严格要求吗? 参考:https://www.lxws.net/new.php?id=696 1.在文章开头的时候,是不允许使用非拼写形式的数字: ...

  8. python拼图游戏代码的理解_Python编写的数字拼图游戏(含爬山算法人机对战功能)...

    数字拼图游戏与拼图游戏原理一致,把打乱了的数字或图片经移动,拼成给定的目标数字或图片,其中总有一个空的地方,让相邻(上下左右)的方块移动,直至达到目标. 游戏代码由浙江温州永嘉县教师发展中心应根球老师 ...

  9. 写一个函数实现对数字数组的排序

    写一个函数实现对数字数组的排序 function getSum(arr){// 外层for循环控制行数for(var i = 0; i <=arr.length - 1; i++){// 内层f ...

最新文章

  1. 5分钟教程,手把手带你安装使用抓包神器:Whistle ,内含精选爬虫资料
  2. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现
  3. web.xml 配置中classpath: 与classpath*:的区别
  4. hdu 1556 Color the ball
  5. 萌新的Python练习菜鸟100例(十五)利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
  6. 用c语言实现相机坐标的过滤,华为2014年机试题【字符串过滤】-【C语言/C++】
  7. ps练习实例_拥有一份史上最全面的50集ps抠图学习教程是什么一种体验?
  8. 语言叮叮消息接口_五分钟学后端技术:如何学习Java工程师必知必会的消息队列...
  9. 会计从业人员管理系统_湖南省会计从业人员网上服务大厅
  10. centos 搭建 SVN
  11. CDR制作印章的流程
  12. 计算机基础知识论文统一格式,大一计算机基础知识论文.docx
  13. 【微信小程序开发】缓存Storage的存入与获取
  14. 知识点滴 - 项目阶段的定义
  15. 第十七章 加密XML文档
  16. 深度解析FPS游戏外挂+解决方案
  17. Java——计算用户输入的日期离1900年1月1日相距多少天
  18. 京东2017校园招聘笔试题 幸运数
  19. Java之格林威治时间,字符串格式时间
  20. 百度无人车阿波龙量产背后,还有这些秘密

热门文章

  1. 90%公链项目将死?那些号称超越以太坊的“颠覆者”咋样了?
  2. interrupt request level - IRQL (驱动开发中关于IRQL级别说明)
  3. 二维数组根据每个数组的元素排序(奥运奖牌排序)的几种方法
  4. 华为eNSP配置远程ssh
  5. SpringBoot2.x系列教程38--整合JAX-RS之利用Jersey框架实现RESTful
  6. This application failed to start because it could not find or load the Qt platform plugin
  7. Linux系统下,绑定USB串口设备号,解决上电USBID随机情况
  8. 【CSDN官方】C技能树深度测评
  9. 知识付费还是原来的知识付费吗?
  10. Debian中文字体美化