在易语言中写一个那种数字雨的屏保,谁能给点思路
准备:一个窗口(_启动窗口),一个画板(画板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_周期事件启动线程?(&数字雨输出,?,?)