¿Introducción a la implementación de hardware iOS+Win del uso de Python para jugar "Jump"?
Dirección original del proyecto: wangshub/wechat_jump_game
Te enseñaré a usar Python para jugar Wechat Jump
Código fuente de este proyecto: yangyiLTS/wechat_jump_game_iOS
La asistencia de salto a salto de iOS existente requiere WebDriverAgentRunner en el entorno macOS. WebDriverAgentRunner en el entorno, mientras que el método introducido ahora se implementa físicamente en el entorno Windows y no requiere macOS ni jailbreak.
Primero observe el efecto
Entorno de ejecución y herramientas
Python 3.6 en Windows
Biblioteca Python Pillow
Entorno LAN
iTools Airplayer
Raspberry Pi o arduino (este artículo es Raspberry Pi)
Servidor SG90
Cable DuPont, cartón
p>Una esponja pequeña
Naranja u otra fruta jugosa (opcional)
Idea básica Utiliza el servicio Airplay que viene con iOS para transmitir la pantalla del juego a tu computadora. Utilice la biblioteca de Pillow para capturar la pantalla de su computadora y obtener imágenes del juego. Analiza la imagen, calcula la distancia del salto y multiplícala por el factor de tiempo para obtener el tiempo de prensa. Envíe el tiempo de prensa a la Raspberry Pi, y la Raspberry Pi controla el servidor para hacer clic en la pantalla del teléfono. Principio y pasos
Parte del servidor y controlador
Raspberry Pi (sistema operativo: Raspbian Jessie) se conecta a la LAN y descarga servo_control.py a la Raspberry Pi. Coge un trozo de cable DuPont y pégalo en el brazo oscilante del servo, y fija el servo al cartón, como se muestra en la imagen:
Coge un pequeño trozo de esponja, de unos 10 mm*10 mm* 5 mm, no es necesario. Demasiado preciso. Haz un pequeño agujero en el centro de la esponja. Acerca de esto:
Moja una esponja con una gota de agua y colócala en la pantalla de tu teléfono donde dice "Hazlo de nuevo". Conecte el otro extremo del cable Dupont al punto naranja. (Para activar la pantalla capacitiva es necesario que se forme un campo eléctrico en la pantalla. Intenté conectar el polo negativo de la batería seca, pero el efecto no fue el ideal. Al final, tuve que quitarle una naranja a mi compañero de cuarto). Por supuesto, también funcionará pellizcar o sujetar el cable por completo).
El servo está conectado a la Raspberry Pi usando 5v para alimentación (pin #04, pin #06) y el cable de control del servo está conectado a GPIO18 (pin #12).
La posición de altura del servo debe ajustarse de acuerdo con la posición de instalación real (rango: 2,5 ~ 12,5)
servo_down = 3,8 servo_up = 5
Resultado final
p>
Sección de Windows
Descarga Airplayer (no requiere instalación, no hay paquete disponible todavía)
Configura Airplayer y aumenta todas las configuraciones, incluida la imagen calidad. Inicie Airplay en el iPhone y luego podrá ver la pantalla del iPhone en la computadora. El juego requiere que Airplayer se ejecute en pantalla completa.
Instale la biblioteca Pillow. Este artículo utiliza la biblioteca Pillow ImageGrab para tomar capturas de pantalla. El código de captura de pantalla:
im = ImageGrab.grab((654, 0, 1264, 1080). )) im.save('a .png', 'png')
Descargar wechat_ jump_auto_iOS_Win.py. La resolución de mi monitor es 1920*1080 y mi teléfono es iPhone 7. Si utiliza un dispositivo diferente, deberá cambiar parámetros como el factor de tiempo.
Dado que Airplay comprime la imagen durante la transmisión, la imagen del juego obtenida tendrá una desviación de color. Modifiqué algunos parámetros del algoritmo original para mejorar la tolerancia al color y logré una mayor precisión en la prueba.
wechat_jump_auto_iOS_Win.py calculará la distancia de salto y luego llamará a la biblioteca de sockets para enviar el tiempo de salto a la Raspberry Pi. Aquí debe cambiar la dirección IP a la dirección IP real de la Raspberry Pi.
ip_addr = 'rasp_ip'
Ejecute para abrir la pantalla del juego, muestre la ventana de Airplayer en pantalla completa en la Raspberry Pi, ejecute servo_control.py, py "One More Time" en la esponja. La posición "One More Time" en la esponja py se puede reiniciar automáticamente y luego continuará actualizando automáticamente los puntos. Problemas y otros
Debido a que es un clic físico en la pantalla, habrá ciertas operaciones. errores. El error de operación es causado por factores como el error de constante de tiempo, el tiempo de movimiento del servo, la profundidad de inserción del contacto de la línea Dupont en la esponja, etc. En un caso, el algoritmo utilizado actualmente sufrirá el problema de la superposición de errores.
Proceso de acumulación de errores de trayectoria en forma de Z
El ángulo de giro del mecanismo de dirección y el coeficiente de tiempo no tienen valores absolutos y deben probarse lentamente. El coeficiente de tiempo utilizado actualmente es 2,43.
Puede utilizar la combinación de arduino+pyfirmata para controlar el servo, que es relativamente económico y no requiere transmisión de red de los resultados del cálculo. No he usado la solución arduino todavía porque se lo regalé a una amiga el otro día.
Después de saltar más de 200 veces en este juego, los bloques se volverán muy pequeños (como se muestra en la imagen del título), lo que ya no es posible para la gente común. Después de estudiar este complemento, me di cuenta de lo difícil que es lograr puntajes altos manualmente, por lo que no todos deberían intentar obtener puntajes altos, de lo contrario perderán amigos.