zoukankan      html  css  js  c++  java
  • Python跳一跳小游戏

    一:准备工具

    PyCharm:专门用于Python开发的IDE工具

    实现原理

    • 获取手机的实时的截图
    • 点击起始位置和落地位置
    • 计算两个点的距离
    • 计算按压时间
    • 发送按压指令
    • 重新刷新手机截图

      1.安装此次程序所用到的模块(根据自己安装的Windows版本和python版本进行下载)。

      numpy-1.14.0rc1-cp36-none-win_amd64.whl

      Pillow-5.0.0-cp36-cp36m-win_amd64.whl

      matplotlib-2.1.1-cp36-cp36m-win_amd64.whl

      下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/

      使用cmd进入下载好的文件的目录,安装指令:(opencv是最后安装的)

      pip3.6 install C:python36Scripts umpy-1.14.0rc1-cp36-none-win_amd64.whl

      pip3.6 install C:python36ScriptsPillow-5.0.0-cp36-cp36m-win_amd64.whl

      pip3.6 install C:python36Scriptsmatplotlib-2.1.1-cp36-cp36m-win_amd64.whl

    • 2.结果
    • 3.代码部分

       
      # !/usr/bin/env python
      # -*- coding:utf-8 -*-
      __author__ = 'wechat'
      import os
      import PIL,numpy
      import matplotlib.pyplot as plt
      from matplotlib.animation import FuncAnimation
      import time
      
      need_update = True
      
      def get_screen_image():
          os.system('adb shell screencap -p /sdcard/screen.png')#获取当前界面的手机截图
          os.system('adb pull /sdcard/screen.png')#下载当前这个截图到当前电脑当前文件夹下
          return numpy.array(PIL.Image.open('screen.png'))
      
      def jump_to_next(point1, point2):#计算炫的长度
          x1, y1 = point1; x2, y2 = point2
          distance = ((x2-x1)**2 + (y2-y1)**2)**0.5
          os.system('adb shell input swipe 320 410 320 410 {}'.format(int(distance*1.35)))
      
      def on_calck(event, coor=[]):#绑定的鼠标单击事件
          global need_update
          coor.append((event.xdata, event.ydata))
          if len(coor) == 2:
              jump_to_next(coor.pop(), coor.pop())
          need_update = True
      
      def update_screen(frame):#更新图片 /从画图片
          global need_update
          if need_update:
              time.sleep(1)
              axes_image.set_array(get_screen_image())
              need_update = False
          return axes_image,
      
      figure = plt.figure()#创建一个空白的图片对象/创建一张图片
      axes_image = plt.imshow(get_screen_image(), animated=True)#把获取的图片话在坐标轴上面
      figure.canvas.mpl_connect('button_press_event', on_calck)
      ani = FuncAnimation(figure, update_screen, interval=50, blit=True)
      plt.show()
      View Code
  • 相关阅读:
    Kubernetes 集成研发笔记
    Rust 1.44.0 发布
    Rust 1.43.0 发布
    PAT 甲级 1108 Finding Average (20分)
    PAT 甲级 1107 Social Clusters (30分)(并查集)
    PAT 甲级 1106 Lowest Price in Supply Chain (25分) (bfs)
    PAT 甲级 1105 Spiral Matrix (25分)(螺旋矩阵,简单模拟)
    PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)
    java 多线程 26 : 线程池
    OpenCV_Python —— (4)形态学操作
  • 原文地址:https://www.cnblogs.com/study007/p/13196659.html
Copyright © 2011-2022 走看看