易语言大漠多线程模块制作及游戏实战方法3-单线程类模块多线程调用实战

单线程类模块多线程调用实战 核心源码

.版本 2
.支持库 spec

.程序集 窗口程序集_启动窗口
.程序集变量 遇见, 类_单线程, , "0", 数组的维数上限初始化为0,为大漠多线程调用准备
.程序集变量 游戏窗口数量, 整数型
.程序集变量 hwnd, 整数型, , "0", 游戏窗口句柄
.程序集变量 线程ID, 整数型, , "0", 线程ID
.程序集变量 许可证, 线程许可证

.子程序 _按钮1_被单击, , , 启动多线程

' 为了防止重复绑定
按钮1.禁止 = 真
多线程绑定 ()

.子程序 多线程绑定, , , 多线程绑定游戏窗口,绑定成功后开始多线程
.局部变量 进程ID数组, 整数型, , "0", 进程ID数组
.局部变量 i, 整数型

进程_取ID数组 (“gamefree.exe”, 进程ID数组, )
游戏窗口数量 = 取数组成员数 (进程ID数组)

重定义数组 (遇见, 假, 游戏窗口数量)
重定义数组 (hwnd, 假, 游戏窗口数量)
重定义数组 (线程ID, 假, 游戏窗口数量)
.计次循环首 (游戏窗口数量, i)
' 开始初始化大漠插件,目的就是释放大漠插件和创建大漠对象
遇见 [i].插件初始化 ()
' 获取游戏窗口句柄
hwnd [i] = 进程_ID取窗口句柄 (进程ID数组 [i], , , )
' 开始绑定游戏窗口
.如果 (遇见 [i].BindWindow (hwnd [i], “dx”, “dx2”, “windows”, 0) = 1)
' 开始多线程
hwnd [i] = 线程_启动 (&多线程, i, 线程ID [i])

.否则
信息框 (“窗口” + 到文本 (i) + “绑定失败”, 0, , )
.如果结束

.计次循环尾 ()

.子程序 多线程
.参数 多线程索引, 整数型, , 调用大漠插件的时候需要这个参数,来区分大漠的线程
.局部变量 线程参数

许可证 = 线程_创建许可证 ()
线程_进入许可证 (许可证)
线程_初始化com ()

打怪 (多线程索引)
' 跑路 (线程参数)

遇见 [线程参数].UnBindWindow ()
遇见 [线程参数].销毁 ()

线程_取消com ()
线程_退出许可证 (许可证)
线程_删除许可证 (许可证)

.子程序 打怪
.参数 多线程索引, 整数型, , 调用大漠插件的时候需要这个参数,来区分大漠的线程
.局部变量 n, 整数型

.计次循环首 (100, n)
' 这个参数必须是 多线程索引
遇见 [多线程索引].KeyPress (115)
延迟 (1000)
.计次循环尾 ()

.子程序 跑路
.参数 多线程索引, 整数型

' 写游戏角色的游戏任务

.子程序 _按钮2_被单击, , , 销毁多线程
.局部变量 i, 整数型

.计次循环首 (游戏窗口数量, i)
线程_销毁 (hwnd [i])
.计次循环尾 ()
按钮1.禁止 = 假

.子程序 _按钮3_被单击, , , 多线程-1-挂起

线程_挂起 (hwnd [1])

.子程序 _按钮4_被单击, , , 多线程-1-恢复

线程_恢复 (hwnd [1])


发布日期:

所属分类: 易语言 标签: