200.1 Python实现一笔画完辅助

1.1构思

源:微信小程序
转:腾讯手游助手

  1. 使程序识别方块(黑色方块、白色方块、起点方块)
  2. 进行计算出路(利用递归穷举法)

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

猜你喜欢

转载自blog.csdn.net/weixin_41784801/article/details/82975433