C语言实现代码雨效果

作者:辉小歌 时间:2021-11-26 18:11:20 

本文实例为大家分享了C语言实现代码雨效果的具体代码,供大家参考,具体内容如下

一、项目描述和最终的效果展示

项目:   让字符从上到下依次的下落,呈现出代码雨。

最终效果图如下所示:

C语言实现代码雨效果

二、静态的代码雨

代码如下:

#include<graphics.h>
#include<time.h>
#include<conio.h>

#define High 800//游戏画面
#define Width 1000
#define CharSize 25//每个字符显示的大小

int main(void)
{
?? ?int highNum=High/CharSize;
?? ?int widthNum=Width/CharSize;

?? ?//CharRain存储对应字符矩阵中需要输出字符的ASCII码
?? ?int CharRain[Width/CharSize][High/CharSize];
?? ?int CNum[Width/CharSize];//每一列的有效字符个数
?? ?int i,j,x,y;
?? ?srand((unsigned)time(NULL));//设置随机函数种子

?? ?for(i=0;i<widthNum;i++)//初始化字符矩阵
?? ?{
?? ??? ?CNum[i]=(rand()%(highNum*9/10))+highNum/10;//这一列的有效字符个数
?? ??? ?for(j=0;j<CNum[i];j++)
?? ??? ??? ?CharRain[j][i]=(rand()%26)+65;//产生A~Z的随机字符
?? ?}

?? ?initgraph(Width,High);
?? ?BeginBatchDraw();
?? ?setfont(25,10,"Courier");//设置字体
?? ?setcolor(GREEN);

?? ?for(i=0;i<widthNum;i++)//输出整个字符矩阵
?? ?{
?? ??? ?x=i*CharSize;//当前字符的x坐标
?? ??? ?for(j=0;j<CNum[i];j++)
?? ??? ?{
?? ??? ??? ?y=j*CharSize;//当前字符的y坐标
?? ??? ??? ?outtextxy(x,y,CharRain[j][i]);//输出当前字符
?? ??? ?}
?? ?}
?? ?FlushBatchDraw();
?? ?EndBatchDraw();
?? ?getch();
?? ?closegraph();
?? ?return 0;
}

效果图如下:

C语言实现代码雨效果

三、一场动态的代码雨

代码如下:

#include<graphics.h>
#include<time.h>
#include<conio.h>

#define High 800//游戏画面
#define Width 1000
#define CharSize 25//每个字符显示的大小

int main(void)
{
?? ?int highNum=High/CharSize;
?? ?int widthNum=Width/CharSize;

?? ?//CharRain存储对应字符矩阵中需要输出字符的ASCII码
?? ?int CharRain[Width/CharSize][High/CharSize];
?? ?int CNum[Width/CharSize];//每一列的有效字符个数
?? ?int i,j,x,y;
?? ?srand((unsigned)time(NULL));//设置随机函数种子

?? ?for(i=0;i<widthNum;i++)//初始化字符矩阵
?? ?{
?? ??? ?CNum[i]=(rand()%(highNum*9/10))+highNum/10;//这一列的有效字符个数
?? ??? ?for(j=0;j<CNum[i];j++)
?? ??? ??? ?CharRain[j][i]=(rand()%26)+65;//产生A~Z的随机字符
?? ?}

?? ?initgraph(Width,High);
?? ?BeginBatchDraw();
?? ?setfont(25,10,"Courier");//设置字体
?? ?setcolor(RGB(0,255,0));

?? ?while(1)
?? ?{
?? ??? ?for(i=0;i<widthNum;i++)
?? ??? ?{
?? ??? ??? ?if(CNum[i]<highNum-1)//当这一列字符没有填满时
?? ??? ??? ?{
?? ??? ??? ??? ?for(j=CNum[i]-1;j>=0;j--)//每个字符向下移动一格
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?CharRain[j+1][i]=CharRain[j][i];
?? ??? ??? ??? ?}
?? ??? ??? ??? ?CharRain[0][i]=(rand()%26)+65;//最上一格再重新随机的产生一个字符
?? ??? ??? ??? ?CNum[i]=CNum[i]+1;//这一列的字符数加1
?? ??? ??? ?}
?? ??? ?}
?? ??? ?for(i=0;i<widthNum;i++)//输出整个字符矩阵
?? ??? ?{
?? ??? ??? ?x=i*CharSize;//当前字符的x坐标
?? ??? ??? ?for(j=0;j<CNum[i];j++)
?? ??? ??? ?{
?? ??? ??? ??? ?y=j*CharSize;//当前字符的y坐标
?? ??? ??? ??? ?outtextxy(x,y,CharRain[j][i]);//输出当前字符
?? ??? ??? ?}
?? ??? ?}
?? ??? ?FlushBatchDraw();
?? ??? ?Sleep(200);
?? ??? ?clearrectangle(0,0,Width-1,High-1);//清空画面
?? ?}
?? ?
?? ?EndBatchDraw();
?? ?getch();
?? ?closegraph();
?? ?return 0;
}

效果图如下:

C语言实现代码雨效果

四、实现代码雨动画

代码如下:

#include<graphics.h>
#include<time.h>
#include<conio.h>

#define High 800//游戏画面
#define Width 1000
#define CharSize 25//每个字符显示的大小

int main(void)
{
?? ?int highNum=High/CharSize;
?? ?int widthNum=Width/CharSize;

?? ?//CharRain存储对应字符矩阵中需要输出字符的ASCII码
?? ?int CharRain[Width/CharSize][High/CharSize];
?? ?int CNum[Width/CharSize];//每一列的有效字符个数
?? ?int ColorG[Width/CharSize];//每一列字符的颜色
?? ?int i,j,x,y;
?? ?srand((unsigned)time(NULL));//设置随机函数种子

?? ?for(i=0;i<widthNum;i++)//初始化字符矩阵
?? ?{
?? ??? ?CNum[i]=(rand()%(highNum*9/10))+highNum/10;//这一列的有效字符个数
?? ??? ?ColorG[i]=255;
?? ??? ?for(j=0;j<CNum[i];j++)
?? ??? ??? ?CharRain[j][i]=(rand()%26)+65;//产生A~Z的随机字符
?? ?}

?? ?initgraph(Width,High);
?? ?BeginBatchDraw();
?? ?setfont(25,10,"Courier");//设置字体

?? ?while(1)
?? ?{
?? ??? ?for(i=0;i<widthNum;i++)
?? ??? ?{
?? ??? ??? ?if(CNum[i]<highNum-1)//当这一列字符没有填满时
?? ??? ??? ?{
?? ??? ??? ??? ?for(j=CNum[i]-1;j>=0;j--)//每个字符向下移动一格
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?CharRain[j+1][i]=CharRain[j][i];
?? ??? ??? ??? ?}
?? ??? ??? ??? ?CharRain[0][i]=(rand()%26)+65;//最上一格再重新随机的产生一个字符
?? ??? ??? ??? ?CNum[i]=CNum[i]+1;//这一列的字符数加1
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?if(ColorG[i]>40)
?? ??? ??? ??? ??? ?ColorG[i]=ColorG[i]-20;//让满的这一列逐渐变暗
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?CNum[i]=(rand()%(highNum/3))+highNum/10;//这一列字符的个数
?? ??? ??? ??? ??? ?ColorG[i]=(rand()%75)+180;//这一列字符的颜色
?? ??? ??? ??? ??? ?for(j=0;j<CNum[i];j++)//重新初始化这一列字符
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?CharRain[j][i]=(rand()%26)+65;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ??? ?for(i=0;i<widthNum;i++)//输出整个字符矩阵
?? ??? ?{
?? ??? ??? ?x=i*CharSize;//当前字符的x坐标
?? ??? ??? ?for(j=0;j<CNum[i];j++)
?? ??? ??? ?{
?? ??? ??? ??? ?y=j*CharSize;//当前字符的y坐标
?? ??? ??? ??? ?setcolor(RGB(0,ColorG[i],0));
?? ??? ??? ??? ?outtextxy(x,y,CharRain[j][i]);//输出当前字符
?? ??? ??? ?}
?? ??? ?}
?? ??? ?FlushBatchDraw();
?? ??? ?Sleep(100);
?? ??? ?clearrectangle(0,0,Width-1,High-1);//清空画面
?? ?}
?? ?
?? ?EndBatchDraw();
?? ?getch();
?? ?closegraph();
?? ?return 0;
}

效果图如下:

C语言实现代码雨效果

来源:https://huixiaoge.blog.csdn.net/article/details/107895594

标签:C语言,代码雨
0
投稿

猜你喜欢

  • SpringBoot yaml中的数组类型取值方式

    2022-10-14 20:05:36
  • C++ vector数组用法及解析

    2022-09-20 01:04:25
  • JAVA中的字符串常量池使用操作代码

    2021-11-24 02:00:57
  • Springboot与vue实现文件导入方法具体介绍

    2023-10-31 12:31:37
  • Android系统制作自定义签名的例子

    2023-02-02 05:10:04
  • java split()使用方法解析

    2023-10-18 01:59:23
  • Java 中的字符串常量池详解

    2023-08-15 04:43:45
  • jax-ws handler 的详解及简单实例

    2023-08-13 17:34:05
  • Java日常练习题,每天进步一点点(10)

    2022-08-11 21:55:53
  • Java 重入锁和读写锁的具体使用

    2023-09-10 11:06:54
  • C#控件Picturebox实现鼠标拖拽功能

    2021-10-30 20:52:36
  • java泛型中占位符T和?有什么区别

    2022-07-05 02:53:56
  • 分享Java多线程实现的四种方式

    2022-02-23 06:34:21
  • Java泛型<T> T与T的使用方法详解

    2021-07-12 10:58:42
  • 详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)

    2021-12-24 00:29:29
  • nacos注册中心单节点ap架构源码解析(最新推荐)

    2022-09-02 09:31:43
  • Java利用三目运算符比较三个数字的大小

    2023-04-18 01:20:19
  • C#用链式方法表达循环嵌套

    2023-04-14 06:54:23
  • struts2 validation.xml 验证规则代码解析

    2021-09-14 22:01:27
  • Java Fluent Mybatis 分页查询与sql日志输出详解流程篇

    2023-01-06 05:35:43
  • asp之家 软件编程 m.aspxhome.com