抖音爆火的 黑客帝国,代码雨

人气:348 ℃/2023-08-12 09:42:00

操作方法

在桌面新建一个文件夹,命名为黑客帝国代码雨。

在文件夹内新建一个文本文档。

将新建文本文档命名为代码雨。

将以下代码复制到文本中:

<canvas id="canvas" style="background:black" width="620" height="340"></canvas>

<audio style="display:none; height: 0" id="bg-music" preload="auto" src="music/黑客帝国.mp3"></audio>

<style type="text/css">

body{margin: 0; padding: 0; overflow: hidden;}

</style>

<script type="text/javascript">

window.onload = function(){

//获取图形对象

var canvas = document.getElementById("canvas");

//获取图形的上下文

var context = canvas.getContext("2d");

//获取浏览器屏幕的宽度和高度

var W = window.innerWidth;

var H = window.innerHeight;

//设置canvas的宽度和高度

canvas.width = W;

canvas.height = H;

//每个文字的字体大小

var fontSize = 15;

//计算列

var colunms = Math.floor(W /fontSize);

//记录每列文字的y轴坐标

var drops = [];

//给每一个文字初始化一个起始点的位置

for(var i=0;i<colunms;i++){

drops.push(0);

}

//运动的文字

var str ="01abcdefghijklmnopqurstuvwxyz";

//4:fillText(str,x,y);原理就是去更改y的坐标位置

//绘画的函数

function draw(){

//让背景逐渐由透明到不透明

context.fillStyle = "rgba(0,0,0,0.05)";

context.fillRect(0,0,W,H);

//给字体设置样式

//context.font = "700 "+fontSize+"px 微软雅黑";

context.font = fontSize + 'px arial';

//给字体添加颜色

context.fillStyle ="green";//随意更改字体颜色

//写入图形中

for(var i=0;i<colunms;i++){

var index = Math.floor(Math.random() * str.length);

var x = i*fontSize;

var y = drops[i] *fontSize;

context.fillText(str[index],x,y);

//如果要改变时间,肯定就是改变每次他的起点

if(y >= canvas.height && Math.random() > 0.92){

drops[i] = 0;

}

drops[i]++;

}

};

function randColor(){

var r = Math.floor(Math.random() * 256);

var g = Math.floor(Math.random() * 256);

var b = Math.floor(Math.random() * 256);

return "rgb("+r+","+g+","+b+")";

}

draw();

setInterval(draw,33);

};

</script>

直接复制代码,后缀名改为:.html ,直接运行就可以看到效果啦!

黑客帝国的代码特效怎么弄

VBA如何制作黑客帝国代码效果,学会这个技巧,可以炫耀了

黑客帝国里的经典一幕,形象地把代码流展示到屏幕上,让你感觉到数据变化有多么神奇。

严格来说,任何编程语文都可以实现这个场景,本节介绍一下,通过VBA代码实现的基本思路。

实现效果如下图所示,没有展示动态图片,感觉还有点不尽人意。

由于,动画不是十分连贯,总是少了一些感动。

如果哪位实现了更加平滑的效果,欢迎留言。

本示例通过Application对象的一些方法来实现,动态效果。

显示内容为26个英文大写字母,当然也可以换成任意喜欢的字符,0或1也是可以的。

如:

下面参考一下具体代码:

Public zArr(25)'定义存放字母数组Public isTrue As BooleanPublic r As RangePublic Sub setValue()If isTrue Then Exit Sub Dim zi As Integer, ri As Integer, ci As Integer, xi As Integer, rxi As Integer zi = VBA.Int((25 - 0 1) * VBA.Rnd) 0 ci = VBA.Int((25 - 1 1) * VBA.Rnd) 1 xi = VBA.Int((20 - 1 1) * VBA.Rnd) 1 For ri = 1 To xi For rxi = 1 To xi - ri zi = VBA.Int((25 - 0 1) * VBA.Rnd) 0 ActiveSheet.Cells(ri, ci).Item(rxi).Value = zArr(zi) Next rxi If ri > 1 Then ActiveSheet.Cells(ri, ci).Offset(-1, 0).ClearContents Application.Wait (Now TimeValue("00:00:01")) DoEvents Next ri DoEvents Application.OnTime Now() TimeValue("00:00:01"), "setValue"End Sub

上述代码为实现动态效果的过程,存放在模块中。

这里需要做些的变量设置,本示例为26个大写字母,设置方法如下代码:

Dim zChr As Integer, zi As IntegerzColor = 9For zChr = 65 To 90 zArr(zChr - 65) = VBA.Chr(zChr)Next zChr

其中,zArr就是存放字母的数组变量。

按钮完整代码

Private Sub CommandButton1_Click()isTrue = False'设置终止程序条件变量Application.DisplayAlerts = FalseDim zColor As IntegerDim zChr As Integer, zi As IntegerzColor = 9For zChr = 65 To 90 zArr(zChr - 65) = VBA.Chr(zChr)Next zChrSet r = ActiveSheet.Range("A1").Resize(20, 26)With r .Interior.Color = 1 .Font.Color = RGB(12, 255, 12)End WithIf Not isTrue Then setValueApplication.DisplayAlerts = TrueEnd Sub

代码中还有一个关键变量isTrue,是跳出循环的一个布尔变量,没有这个变量,程序会变成一个无限循环,结果就是一直循环出不来。

isTrue定义成全局变量,存放位置在模块中,Public isTrue as Boolean

整合完成就可以调试效果了。

总的来说,并不如其它代码实现效果好,如果用JS就十分可观了。

但是,主要是对整个过程的思路进行一下探索,并没有太高尚的意义。

欢迎关注、收藏

---END---

推荐

首页/电脑版/网名
© 2025 NiBaKu.Com All Rights Reserved.