黑客帝国的代码雨特效曾经惊艳了很多人。其实,这个效果用C语言实现也是非常容易的。即便是一个C语言入门新手,也可以轻松实现,全部代码只有三十行,如果你是一个入门新手,仔细阅读本文,马上可以上手展现自己的成果。
我们先看一下最终实现的效果图片,我们实现了红色的代码雨效果。
红色代码雨
我们将任务分解一下,其实也只有两项。
1.实现随机文字竖排连续显示。
2.实现文字颜色渐隐。
下面我们分别来实现两个需求。
要实现文字竖排连续显示,可以将显示字符列看成一个数组。数组成员初始化为随机值,然后将成员值进行递减。再根据当前值的大小,决定是否显示字符。成员随机值的大小和显示阈值。决定显示画面的稀疏。我们假定显示阈值是16,低于16就显示字符。高于16就显示空格。随机值最高为80。下面是实现文字竖排连续显示的代码。
char *text="abcdefghijklmnopqrstuvwxyz";//显示的字母表
int row[100]={0};//设定显示列为100列,全部初始化为0
int i;
srand(time(NULL));//初始化随机数
while(1)
{
for(i=0;i<100;i )
{
if(--row[i]<0)//不停的递减,小于0就重新初始化
row[i]=rand()?;//成员值为80以下的随机数
if(row[i]<16)//成员值小于16,则显示字符,否则显示空格
printf("%C",text[rand()&]);//显示一个随机字符
else
printf(" ");//显示一个空格
}
printf("\n");//显示完一行,强制换行
Sleep(50);//添加延时,控制速度
}
完成了随机文字竖排显示,我们下面要解决的就是文字颜色渐隐效果了。我们的代码在Windows下编译。运行的环境是MS-DOS平台。DOS只能显示16位颜色,设定文字颜色只能设定0-15的索引值。但MS-DOS给我们提供了修改颜色表的API ,我们要做的就是利用API修改颜色表,将16个索引颜色设定为红色由浅到深的过渡颜色。代码如下:
#include <Windows.h> //调用 Windows API要包含Windows.h头文件
CONSOLE_SCREEN_BUFFER_INFOEX info; //控制台屏幕缓冲信息结构
HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台句柄
info.cbSize=sizeof(info); //这个结构大小必须填写,否则后面API调用会出错
if(GetConsoleScreenBufferInfoEx(hConsole,&info))//获取屏幕缓冲结构信息
{
int i;
for(i=0;i<16;i )//填充16个索引色
info.ColorTable[i]=RGB(17*i,0,0);//将红色进行16等分,每一个梯度变化为17
SetConsoleScreenBufferInfoEx(hConsole,&info);//修改索引色
}
修改完索引色,我们只需要在每次显示字符的时候,使用API修改字符颜色为指定的索引值。
if(row[i]<16)//成员值小于16,显示字符
{
SetConsoleTextAttribute(hConsole,row[i]);//修改字符颜色为索引值
printf("%C",text[rand()&]);//显示随机字符
}
看懂的小伙伴可以将代码组合起来,就可以实现我们需要的效果,修改不同的颜色表,可以生成不同颜色的代码雨。如有不太明白的,可以在评论区讨论。
浅蓝色代码雨
绿色代码雨
黄色代码雨
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved