准备:一个窗口(_启动窗口),一个画板(画板1),一个时钟(时钟1)
_启动窗口 和 画板1 的 可视 都为 假,时钟1 的 时间周期 为 0,_启动窗口 的 总在最前 为 真。
到 _启动窗口 对应的 窗口程序集,把下面的代码拷贝过去即可。
.版本 2.支持库 OPenGL
.支持库 EThread
.支持库 spec
.支持库 iext
.支持库 eAPI .程序集 窗口程序集1, , , 高仿黑客帝国
.程序集变量 t, 整数型
.程序集变量 x, 整数型
.程序集变量 y, 整数型
.程序集变量 z, 整数型
.程序集变量 屏幕高度, 整数型, , , 屏幕高度
.程序集变量 屏幕宽度, 整数型, , , 屏幕宽度 .子程序 __启动窗口_创建完毕 屏幕高度 = 取屏幕高度 ()
屏幕宽度 = 取屏幕宽度 ()
画板1.画板背景色 = #黑色
_启动窗口.移动 (0, 0, 屏幕宽度, 屏幕高度)
画板1.移动 (0, 0, 屏幕宽度, 屏幕高度)
t = 0
z = 屏幕高度 ÷ 20
显示光标 (假)
_启动窗口.可视 = 真
画板1.可视 = 真
_启动窗口.调整层次 (1)
定义 ()
画板1.获取焦点 ()
时钟1.时钟周期 = 400 ' 每列产生间隔(ms)
启动线程 (&数字雨输出, , )
延迟 (400)
启动线程 (&数字雨输出, , )
延迟 (300)
启动线程 (&数字雨输出, , )
延迟 (200)
启动线程 (&数字雨输出, , )
延迟 (200)
启动线程 (&数字雨输出, , )
延迟 (200)
启动线程 (&数字雨输出, , )
延迟 (200)
时钟2.时钟周期 = 1000
_时钟2_周期事件 ()
.子程序 _画板1_鼠标位置被移动, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型 .如果真 (取绝对值 (横向位置 - x) > 50 或 取绝对值 (纵向位置 - y) > 50)
定义 ()
t = t + 1
.如果真 (t > 3) ' 事不过三
结束 ()
.如果真结束 .如果真结束
.子程序 _画板1_按下某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型 结束 ()
.子程序 定义 x = 取鼠标水平位置 ()
y = 取鼠标垂直位置 ()
.子程序 数字雨输出, , , 数字雨输出
.局部变量 E, 整数型, , , 垂直位置
.局部变量 F, 整数型, , , 水平位置,起点
.局部变量 G, 整数型, , , 显示长度,单位=位
.局部变量 H, 整数型, , , 下降速度
.局部变量 I, 整数型, , , 移动次数
.局部变量 J, 整数型, , , 绿与白
.局部变量 CHR, 文本型, , "1000" 置随机数种子 ()
J = 取随机数 (1, 5)
.如果 (J = 1 或 J = 3 或 J = 5)
置随机数种子 ()
E = 取随机数 (0, 屏幕宽度)
置随机数种子 ()
F = 取随机数 (0, 到整数 (屏幕高度 × 0.75))
置随机数种子 ()
G = 取随机数 (z × 0.2, z × 0.65)
置随机数种子 ()
H = 取随机数 (10, 600)
.判断循环首 (真)
' 画板1.字体.字体名称 = “黑体”
' 画板1.字体.字体大小 = 16
CHR [I + 1] = 获取字符 ()
画板1.文本颜色 = #绿色
画板1.定位写出 (E, F + I × 20, CHR [I + 1])
.如果真 (I ≠ 0)
画板1.文本颜色 = #墨绿
画板1.定位写出 (E, F + (I - 1) × 20, CHR [I])
.如果真结束
.如果真 (I > G + 1)
画板1.文本颜色 = 取颜色值 (0, 40, 0)
画板1.定位写出 (E, F + (I - G - 1) × 20, CHR [I - G])
画板1.文本颜色 = #黑色
画板1.定位写出 (E, F + (I - G - 2) × 20, CHR [I - G - 1])
.如果真结束
I = I + 1
.如果真 (F + I × 20 > 屏幕高度)
跳出循环 ()
.如果真结束
延迟 (H) ' 避免CPU过高
.如果真 (I > 1000)
结束 ()
.如果真结束 .判断循环尾 ()
.判断循环首 (真)
.如果真 (I > G + 1)
画板1.文本颜色 = 取颜色值 (0, 40, 0)
画板1.定位写出 (E, F + (I - G - 1) × 20, CHR [I - G])
画板1.文本颜色 = #黑色
画板1.定位写出 (E, F + (I - G - 2) × 20, CHR [I - G - 1])
.如果真结束
I = I + 1
.如果真 (F + I × 20 - (G + 2) × 20 > 屏幕高度)
跳出循环 ()
.如果真结束
延迟 (H) ' 避免CPU过高
.如果真 (I > 1000)
结束 ()
.如果真结束 .判断循环尾 ()
.否则 置随机数种子 ()
E = 取随机数 (0, 屏幕宽度)
置随机数种子 ()
F = 取随机数 (0, 到整数 (屏幕高度 × 0.75))
置随机数种子 ()
G = 取随机数 (z × 0.2, z × 0.65)
置随机数种子 ()
H = 取随机数 (10, 600)
.判断循环首 (真)
' 画板1.字体.字体名称 = “黑体”
' 画板1.字体.字体大小 = 16
CHR [I + 1] = 获取字符 ()
画板1.文本颜色 = #白色
画板1.定位写出 (E, F + I × 20, CHR [I + 1])
.如果真 (I ≠ 0)
画板1.文本颜色 = #浅灰
画板1.定位写出 (E, F + (I - 1) × 20, CHR [I])
.如果真结束
.如果真 (I > G + 1)
画板1.文本颜色 = #灰色
画板1.定位写出 (E, F + (I - G - 1) × 20, CHR [I - G])
画板1.文本颜色 = #黑色
画板1.定位写出 (E, F + (I - G - 2) × 20, CHR [I - G - 1])
.如果真结束
I = I + 1
.如果真 (F + I × 20 > 屏幕高度)
跳出循环 ()
.如果真结束
延迟 (H) ' 避免CPU过高
.如果真 (I > 1000)
结束 ()
.如果真结束 .判断循环尾 ()
.判断循环首 (真)
.如果真 (I > G + 1)
画板1.文本颜色 = #灰色
画板1.定位写出 (E, F + (I - G - 1) × 20, CHR [I - G])
画板1.文本颜色 = #黑色
画板1.定位写出 (E, F + (I - G - 2) × 20, CHR [I - G - 1])
.如果真结束
I = I + 1
.如果真 (F + I × 20 - (G + 2) × 20 > 屏幕高度)
跳出循环 ()
.如果真结束
延迟 (H) ' 避免CPU过高
.如果真 (I > 1000)
结束 ()
.如果真结束 .判断循环尾 () .如果结束
.子程序 获取字符, 文本型
.局部变量 A, 文本型 置随机数种子 ()
A = 字符 (取随机数 (27, 127))
.判断循环首 (A = “” 或 A = “ ” 或 A = “ ”)
置随机数种子 ()
A = 字符 (取随机数 (27, 127))
.判断循环尾 ()
A = 到全角 (A)
返回 (A)
.子程序 _时钟1_周期事件 启动线程 (&数字雨输出, , )
在C:\WINDOWS\system32文件夹里,后缀名为scr的文件就是屏幕保护程序,选择你需要拷贝的屏幕保护程序,然后复制到你电脑的C:\WINDOWS\system32下即可。或者在各大黑客论坛下载 以前我下载过 还用过 还是不错的 现在换WIN7系统了 没怎么搞
哦。就是黑客帝国的那个。很有意思。我知道有人写过,而且还是3D的。可以旋转的。python的3D编程应该有不少的界面。我个人觉着可以先从2D开始容易些。
准备一系列字的图片。可以在程序起动时,绘制在一个PNG图上。再准备这些字的发光的图。同样缓制好放在内存里。
设置,好一些充填的路径。就是那种下雨感觉的路径。先事先计算好。别临时去排版去计算。
建立一系列的类似微线程的任务。游戏开发里似乎有专门的名称,我忘记叫什么名子了。意思就是在一次时钟频率里,一次性刷新所有的动画。
将各个任务(也就是刷新路线的任务),对应的图取出来,分别依次对应原图闪光以及不闪光的三个图。
刷新频率可以按每少5-10帧计算。
每次刷新都是绘制在后台d-buffer里,然后再绘制到前面。
这是一个复杂的算法。
当然也有更简单的算法。
找一个下雨的屏保,然后你再找一个抓屏软件,每0.2秒抓一次屏幕,连续抓10秒。然后把抓的结果图片,用python顺序显示出来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)