用易语言打造黑客帝国屏保
╔-------------------------------------------------╗
┆ 瑞冠天下(www.rg98.com) ┆
┆ 论坛地址:bbs.rg98.com ┆
┆ 网站宗旨:学习娱乐的平台,电脑高手的摇篮. ┆
╚-------------------------------------------------╝
=======================================================
今天要做的这个教程是易精经中的一个实例,我只是把它做成动画而以。代码我基本上写在下面了,下面我们开始做教程,首先打开易语言。
1> 新建一个易程序。在上面加一个画板,改名为"画板缓冲",设置画板的背景色为黑色、文本颜色为绿色,选择一个长型的字体,比如"Impact",字号为四号,注意,还要将其"可视"属性设为"假","自动重画"设为"真"。这个画板我们将作为在后台绘制的一个缓冲画板,用户是看不见的。再加一个画板,改名为"画板可视",其他的保持默认值。
2> 往窗体上添加一个时钟控件,将其"时钟周期"改为50,我们需要每秒钟刷新20张画面。
3> 点选菜单〔插入>数据类型〕,添加一个下所示的数据类型
数据类型名
下落字符
成员名 类型 传址 数组 备注
字符, 文本型, 字符。注意字符每下落一次,都要发生变化。
x, 整数型, 字符的横坐标。
y, 整数型, 字符的纵坐标。
速度, 整数型, 字符下落的速度。
4> 双击"_启动窗口",添加如下几个程序集变量
程序集
窗口程序集1
程序集变量名 类型 数组 备注
集下落字符们 下落字符 "0" 下落的字符们
集字符个数 整数型 字符的个数
5> 在"__启动窗口_创建完毕"中添加下所示代码
子程序 __启动窗口_创建完毕
局部变量
i 整数型
_启动窗口.边框 = 0 ' 无边框
_启动窗口.移动 (0, 0, 取屏幕宽度 (), 取屏幕高度 ()) ' 将窗口铺满全屏
画板缓冲.移动 (0, 0, 取屏幕宽度 (), 取屏幕高度 ()) ' 将画板铺满窗口
画板可视.移动 (0, 0, 取屏幕宽度 (), 取屏幕高度 ()) ' 将另一个画板设置成等大
_启动窗口.总在最前 = 真
集字符个数 = 700
重定义数组 (集下落字符们, 假, 集字符个数) ' 重新分配数组的空间以容纳字符
' 初始化下落字符数组
计次循环首 (集字符个数, i)
集下落字符们 [i].字符 = 字符 (取随机数 (33, 126)) ' 这一句用来随机取一个ASCII范围在33到126之间字符。
集下落字符们 [i].x = 取整 (取随机数 (0, _启动窗口.宽度) ÷ 20) × 20 '这段代码先从0到窗口宽度中随机取出一个值,然后把该值除以20并去掉小数部分,然后再乘以20,就得到了一个能被20整除的随机数。这样设置以后,所有的字符都会在竖直方向形成列,每列个占用20个像素的宽度。
集下落字符们 [i].y = -取随机数 (, _启动窗口.高度) '这句用来将字符的纵坐标设置为屏幕上方的某一个随机值,这样字符就会从屏幕外落到屏幕内
集下落字符们 [i].速度 = 取随机数 (2, 30) '这句很简单啦。用来设置每个字符下落的速度范围
计次循环尾 ()
6> 双击窗体上的计时器,添加以下代码。
子程序 _时钟1_周期事件
局部变量 i, 整数型
画板缓冲.清除 (, , , )
计次循环首 (集字符个数, i)
集下落字符们 [i].字符 = 字符 (取随机数 (33, 126))
集下落字符们 [i].y = 集下落字符们 [i].y + 集下落字符们 [i].速度
画板缓冲.定位写出 (集下落字符们 [i].x, 集下落字符们 [i].y, 集下落字符们 [i].字符)
如果真 (集下落字符们 [i].y > _启动窗口.高度)
集下落字符们 [i].y = -取随机数 (, _启动窗口.高度)
集下落字符们 [i].x = 取整 (取随机数 (0, _启动窗口.宽度) ÷ 20) × 20
如果真结束
计次循环尾 ()
画板缓冲.复制 (0, 0, , , 画板可视, , , )
在这段代码中,程序将后台画板清空,重新设定每个字符(这样字符边下落边翻转。如果只需要0到9之间的数字,可以象前面说明的那样改),将每个字符下落一次,把它们绘制到缓冲画板;如果字符落到了屏幕下边,则再次把它移到屏幕的上边。全部绘制到缓冲画板后,再一起复制到前台的可视画板。为什么要使用两个画板呢?因为如果只使用一个画板,清除后立即重绘会导致画面闪动,在慢速的机器上甚至可以看到字符一个个被绘制出来,效果很差。而采用两画板,绘制完毕后一起复制到前台,用户看不到绘制的过程,所以就不会出现闪屏的情况--这就是游戏编程中常使用的"双缓冲"技术。
我们先来测试一下,看,是不是可以了。下面我们把他变成屏保吧
7> 把它变成屏保吧。这个小程序做成屏幕保护最合适不过了,这里我们使用最简单的一种方法来把它变成屏保。首先,屏保在用户移动鼠标、点按鼠标或敲击键盘时要退出,所以我们按以下步骤添加代码:
① 加一个程序集变量"集鼠标上次横坐标",类型为整数型,用来进行用户移动鼠标距离的判断,如果鼠标移动的距离很小(比如桌面被震动),则不退出屏保。
② 添加鼠标移动事件、单击事件和按键事件的代码
子程序 _画板可视_鼠标左键被放开 逻辑型
结束 ()
子程序 _画板可视_鼠标位置被移动 逻辑型
.如果 (集鼠标上次横坐标 = 0)
集鼠标上次横坐标 = 横向位置
.否则
.如果真 (取绝对值 (横向位置 - 集鼠标上次横坐标) > 20)
结束 ()
.如果真结束
.如果结束
集鼠标上次横坐标 = 横向位置
子程序 __启动窗口_放开某键 逻辑型
结束 ()
程序都做完了!我们测试一下看
看是不是可以了,鼠标移动时就自动退出了!我们生成EXE文件吧,可以了!可以把他改下扩展名后放到C:\WINDOWS\system32下面,把扩展名改成.scr.好了,教程就做到这里!我是黑妖蛇。QQ:26043009!欢迎光临瑞冠天下与我交流!网址:http://www.rg98.com.论坛:http://bbs.rg98.com!88!