志在指尖
用双手敲打未来

跳一跳 python(微信跳一跳python代码)

跳一跳python

过程
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,以及控制台窗口运转成果。

未经允许不得转载:IT技术网站 » 跳一跳 python(微信跳一跳python代码)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载