感悟网 导航

在易语言中写一个那种数字雨的屏保,谁能给点思路 黑客帝国数字雨电脑动态壁纸

作者&投稿:泰俭 (若有异议请与网页底部的电邮联系)
VB制作一个数字雨屏保~

'101个标签,一个按钮,一个图片框,一个时钟,背景图片自己找
V_car(100) as long

Private Sub Command3_Click()
For i = 0 To 100
Label1(i).Top = Picture_BeiJing.Height + 500
Label1(i).AutoSize = True
Label1(i).BackStyle = 0
Next
Timer_Con.Interval =40'每秒25次移动
Timer_Con.Enabled = True
End Sub

Private Sub Timer_Con_Timer()
For i = 0 To 100
If Label1(i).Top < Picture_BeiJing.Height Then
Label1(i).Top = Label1(i).Top + V_car(i)
Else
Label1(i).Top = -200'移到顶部
Randomize
Label1(i).Left = Int((Picture_BeiJing.Width - Label1(i).Width) * Rnd)'水平定位
Randomize
Label1(i).Caption = i 'Int(10 * Rnd)'改变字符,注意这里去除1和引号后才行,这样是测试用的
Randomize
Label1(i).FontSize = 8 + Int(30 * Rnd)'改变字体大小
Randomize
Label1(i).ForeColor = RGB(Int(250 * Rnd), Int(250 * Rnd), Int(250 * Rnd))'改变字体颜色
Randomize
V_car(i) = 10 + Int(100 * Rnd)'重新设置下降速度
End If
Next





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


总结一句话就是:屏幕的随机点写字。

可以先用n个标签,不停改变标签位置。

《在易语言中写一个那种数字雨的屏保,谁能给点思路》
答:准备:一个窗口(_启动窗口),一个画板(画板1),一个时钟(时钟1)_启动窗口 和 画板1 的 可视 都为 假,时钟1 的 时间周期 为 0,_启动窗口 的 总在最前 为 真。到 _启动窗口 对应的 窗口程序集,把下面的代码拷贝过去即可。.版本 2.支持库 OPenGL.支持库 EThread.支持库 spec.支持库...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网