1.1构思
源:微信小程序
转:腾讯手游助手
- 使程序识别方块(黑色方块、白色方块、起点方块)
- 进行计算出路(利用递归穷举法)
1.2 识别算法
利用:图片.getpixel((x,y))
获取目标界面的颜色分布:颜色字典
利用黑色方块、白色方块、起点方块的特性
来识别并输出到地图
1.3 计算出路算法
算法:穷举法
递归条件:达到满足黑色方块数的步数即可回归
2 Python具体实现
python代码网站:https://github.com/eternal2056/YiBiHuaWan/tree/master
按键精灵代码网站:https://github.com/eternal2056/YiBiHuaWan/blob/master/mouse.Q
2.1 包
2.1.1 win32类的包
技术文档:http://timgolden.me.uk/pywin32-docs/contents.html
作用:句柄
2.1.2 PIL
技术文档:https://pillow.readthedocs.io/en/5.3.x/
作用:图像处理
2.13 time
技术文档:https://docs.python.org/3/library/time.html
作用:时间控制
2.14 numpy
技术文档:http://cs231n.github.io/python-numpy-tutorial/
作用:制作地图
2.2 内容
2.2.1 global
全局变量
关键字
在函数外 global 变量名:
声明此变量是全局的
在函数内 global 变量名:
声明此变量的使用的是外部的全局变量
使用的时候还要声明一次,很烦!
2.2.2 句柄
利用Spy++
,Ctrl + F(Find Window) 获取Class与Caption
win32gui.FindWindow(ClassName, CaptionName)
if not hwnd:
#如果hwnd没有值,print!
print("Window not find!")
2.2.3 弹出最上面
win32gui.ShowWindow(句柄, win32con.SW_RESTORE)
win32gui.SetForegroundWindow(hwnd)
time.sleep(1)
#暂停一秒,使截图更有保障!
SW_RESTORE的选择:https://blog.csdn.net/csx66406602/article/details/54313913
2.2.4 截图
#获取对角X,Y
game_rect = win32gui.GetWindowRect(句柄)
#截图
截到的图(返回值) = ImageGrab.grab((game_rect[0]+xx, game_rect[1]+xx, game_rect[2]+xx, game_rect[3]+xx))
返回值 game_rect 是左上角X,左上角Y,右下角X,右下角Y
2.2.5 地图制作
ditu(地图变量名) = zeros((Y,X) , dtype = "str")
Y == len(ditu)
X == len(ditu[0])
dtype:ditu[Y][X]的填充物类型
#int、str、float等
2.2.6 列表添加新元素
_list = []
_list.append([x,y])
_list.append(元素)
_list[-1] #最后一个元素
2.3 函数
def 函数名():
print("牛逼")
return
#在循环中不能这么用,尽量使用不同
hanshu = hanshu()
== 等于
!= 不等于
= 赋值
2.3.1 字典
#创建新的字典
zidian = {}
#添加新的值
zidian[变量的名] = 变量的值
#获取变量名对应的值
值 = zidian.get(变量名)
2.3.2 range
range(549) #0~548
range(0,100) #0~99
range(1,100,2) #1,3,5,...,99
2.3.3 颜色获取
src_image.getpixel((x,y))
#返回值为(R, G, B)
2.3.4 类型转换
list(变量)
#转化为list类型
例子:list(src_image.getpixel((x,y)))
#tuple → list
2.3.5 循环
#从一次循环跳脱出来
break
#进入下一次循环(不跳,还在原来的循环)
continue
2.3.6 算术
// : 10 // 11 == 1
% : 8 % 5 == 3
() : 最优先!
2.3.7 长度
list = [1,2,3,4,5]
len(list) == 5
2.3.8 文件
菜鸟教程:http://www.runoob.com/python3/python3-file-methods.html
路径用:
D:/sss/sss/sss 表示
#w+
#读写模式中的:里面就算有东西也要清空重新写
#适用于不需要之前的数据的记录
#还有很多不同的模式,可以从教程看到
wenjian = open("D:/sss/xxx.txt", "w+")
wenjian.write(写入的内容)
wenjian.close
2.4 递归
递归:
def digui(i):
if i == 0:
return i
else:
return digui(i-1)
这种函数里还有函数的叫递归
其实我也不太懂,哈哈
领悟:
递归函数中每一个 判断
与 代码块
中都要有return
3 按键精灵实现
3.1 赋值
windows = 1
3.2 函数
Function 函数名
//
//
End Function
3.3 定义
Dim 变量名
3.4文件
//设置fso为文件
Set fso = CreateObject("Scripting.FileSystemObject")
//句柄赋值给f
Set f = fso.OpenTextFile("D:\......\xianzhuang.txt", 1)
//读取全部内容
ReadAllTextFile = f.ReadAll
3.5 字符串与数组
//以分隔符分隔字符串,返回数组
数组(返回值) = Split(字符串, "分隔符")
//获取数组元素个数
数字(返回值) = UBoud(数组, 1)
3.6 循环
3.6.1 For循环
For i = 1 To x
//
//
Next
3.6.2 While循环
While 条件(成立即可循环)
//
//
Wend