过程
1.windows上装置python2.7,装备好环境变量和pip
2.到这个网站下载对应版本的pyHook和pywin32
http://www.lfd.uci.edu/~gohlke/pythonlibs
2.打开cmd,装置下载好的whl文件和其他库
pipinstallpywin32-221-cp27-cp27m-win_amd64.whl
pipinstallpyHook-1.5.1-cp27-cp27m-win_amd64.whl
pipinstallpyuserinput
3.桌面新建jump.py文件,复制以下内容
importpymouse,time,pyHook,pythoncom,math,random
m=pymouse.PyMouse()
globalstart_pos,end_pos
start_pos=None
end_pos=None
defonKeyboardEvent(event):
globalstart_pos,end_pos
ifevent.Key==’Q’:
start_pos=m.position()
print(start_pos)
ifevent.Key==’W’:
end_pos=m.position()
print(end_pos)
ifevent.Key==’Space’:
ifstart_posandend_pos:
dis=int(math.sqrt(math.pow(start_pos[0]-end_pos[0],2)+math.pow(start_pos[1]-end_pos[1],2)))
times=round((dis/0.3)/1000,3)
ifdis<500:
print’>>’,dis,times
x=random.randint(50,400)
y=random.randint(400,700)
m.press(x,y)
time.sleep(times)
m.release(x,y)
start_pos=None
end_pos=None
returnTrue
defmain():
hm=pyHook.HookManager()
hm.KeyDown=onKeyboardEvent
try:
hm.HookKeyboard()
exceptExceptionase:
pass
pythoncom.PumpMessages()
if__name__==”__main__”:
main()
4.运行jump.py
pythondesktop\jump.py
5.使用说明
a.模拟器打开微信并进入跳一跳游戏界面
b.把模拟器放到桌面最左端
c.把鼠标放到紫色小人最下端中心点,按下Q键
d.把鼠标放到目标图形中心点,按下W键
e.按下空格键会主动跳到目标点
f.反复Q、W、空格键
微信跳一跳python代码
defscreenshot():
cmd=’adbshellscreencap-p/sdcard/1.png’
os.system(cmd)
cmd=’adbpull/sdcard/1.png’
os.system(cmd)
查找棋子的方位,经过颜色来识别棋子,经过将棋子底盘所在行的所有点的x轴坐标相加,然后取平均值获得X轴坐标,将Y轴坐标取最低点减去棋子底盘高度的一半。详细代码完成如下:
#开始查找棋子的坐标,从start_y开始据目测棋子不会坐落屏幕底部1/3处
foriinrange(start_y,int(height*2/3)):
forjinrange(border_x,width-border_x):#删去周围空白部分,加速程序运转速度
next_point=im[j,i]
#根据棋子的颜色判断,求所有点的和然后求平均值
if(50<next_point[0]<60)and(53
x1_temp+=j#点求和
x1_num+=1#点的个数
y1_max=max(i,y1_max)
ifnotall((x1_temp,x1_num)):
return0,0,0,0
x1=x1_temp/x1_num
y1=y1_max-piece_height/2#棋子Y轴坐标上移到底盘高度的一半
查找下一个棋盘的方位,一般可以经过两种方法完成。第一种是经过鼠标点击下一个棋盘的方位,详细参阅编程美丽写的博客。
第二种是本文运用的,从上往下一行一行扫描,找到块中点的X轴坐标,然后经过截图中两个详细的棋盘获取的固定的视点,即正切值来推出中点的Y坐标。详细代码如下:
#查找下一个棋盘的方位
foriinrange(start_y,height*2/3):
start_point=im[0,i]
ifx2ory2:
break
x2_temp=0
x2_num=0
forjinrange(width):
next_point=im[j,i]
ifabs(j-x1)<body_width:
continue
#棋盘为圆
ifabs(next_point[0]-start_point[0])+abs(next_point[1]-start_point[1])+abs(next_point[2]-start_point[2])>10:
x2_temp+=j
x2_num+=1
ifx2_temp:
x2=x2_temp/x2_num
#按实践的视点经过tan值来算计算下一个棋盘的中心点的Y轴坐标
y2=y1-abs(x2-x1)*abs(sample_y1-sample_y2)/abs(sample_x1-sample_x2)
ifnotall((x2,y2)):
return0,0,0,0
根据棋子的方位跟下一个棋盘的方位求得两点的详细,推算出长按时刻。详细代码如下:
#跳到下一个棋盘
defjump(distance):
press_time=distance*press
press_time=max(press_time,200)#设置最小的按压时刻位200ms
press_time=int(press_time)
cmd=’adbshellinputswipe{}{}{}{}{}’.format(swipe_x1,swipe_y1,swipe_x2,swipe_y2,press_time)
print(cmd)
os.system(cmd)
成果展现
经过运转脚本,可以轻松上分到400+,由于时刻原因并没有继续测验,下图为测验时截的动态gif,以及控制台窗口运转成果。
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com