在易语言中写一个那种数字雨的屏保,谁能给点思路

准备:一个窗口(_启动窗口),一个画板(画板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_周期事件启动线程?(&数字雨输出,?,?)