J'ai essayé de jouer à un jeu de frappe avec Python

Aperçu

J'ai joué à un jeu de saisie de mots anglais utilisant la reconnaissance optique des caractères par pytesseract et la saisie automatique au clavier par PyAutoGUI.

Typing Test English : https://10fastfingers.com/typing-test/english

environnement

OS:Windows10 64bit Python version : 3.5.3

Aperçu du jeu

capture2.jpg

Les mots anglais sont affichés dans la zone entourée d'un cadre rouge, vous pouvez donc simplement les taper dans le formulaire de saisie et rivaliser pour le nombre de mots que vous pouvez saisir en une minute.

Principales bibliothèques utilisées

selenium, PyAutoGUI, pytesseract, Pillow

Comportement du programme

main.py


# -*- coding: utf-8 -*-

from PIL import Image
from PIL import ImageGrab
import pytesseract
import numpy as np
import matplotlib.pyplot as plt
import pyautogui as pyag
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import cv2

os.chdir(os.path.dirname(os.path.abspath(__file__)))
pytesseract.pytesseract.tesseract_cmd = 'C:/Program Files (x86)/Tesseract-OCR/tesseract'

fig, ax = plt.subplots()
mngr = plt.get_current_fig_manager()
mngr.window.setGeometry(10,800,1300,250)
plt.pause(0.001)

url = "https://10fastfingers.com/typing-test/english"
chrome_driver_path = "chromedriver.exe"
chrome_options = Options()
chrome_options.add_argument("--window-position=0,0");
chrome_options.add_argument("--window-size=1000,600");
browser = webdriver.Chrome(chrome_driver_path, chrome_options=chrome_options)

print("Loading...")
browser.get(url)
time.sleep(3)

while(True):
    print("-----------------------------------------")
    print("Extracted words")
    print("-----------------------------------------")
    
    img = ImageGrab.grab(bbox=(120,308,1213,430))
    
    ax.imshow(img)
    plt.pause(0.001)

    img =  np.array(img)
    img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    img = cv2.threshold(img, 220, 255, cv2.THRESH_BINARY)[1]
    img = Image.fromarray(img)
    
    words  = pytesseract.image_to_string(img).split(" ")
            
    for word1 in words:
        if ("\n\n" in word1):
            word1 = word1.split("\n\n")
        elif ("\n" in word1):            
            word1 = word1.split("\n")
        else:
            word1 = [word1]
        
        for word2 in word1:
            print(word2)
            pyag.typewrite(word2.replace(" ", "") + " ")
            time.sleep(0.2)
            
    if len(words) < 10:
        print("Done!")
        break
    
time.sleep(3)

browser.quit()


  1. Accédez à Test de saisie en anglais sur Selenium
  2. Capturez la zone à l'intérieur du cadre rouge avec Oreiller
  3. Extraire les mots anglais des images capturées par pytesseract
  4. Entrez automatiquement les mots anglais extraits par PyAutoGUI

↓ ça marche comme ça video.gif

Conclusion

En combinant la reconnaissance optique des caractères par pytesseract et la saisie automatique au clavier par PyAutoGUI, la gamme d'automatisation du navigateur est considérablement élargie.

Recommended Posts

J'ai essayé de jouer à un jeu de frappe avec Python
J'ai essayé d'implémenter le jeu de cartes de Trump en Python
J'ai fait un jeu de frappe simple avec tkinter de Python
J'ai essayé de jouer au jeu ○ ✕ en utilisant TensorFlow
J'ai créé une classe en Python et essayé de taper du canard
J'ai essayé de mettre en œuvre un jeu de dilemme de prisonnier mal compris en Python
J'ai essayé d'ajouter un module Python 3 en C
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé la notification de ligne en Python
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai essayé "Comment obtenir une méthode décorée en Python"
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python
J'ai essayé d'implémenter le blackjack du jeu Trump en Python
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
J'ai fait un programme de gestion de la paie en Python!
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'utiliser l'optimisation bayésienne de Python
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé un langage fonctionnel avec Python
J'ai essayé d'implémenter PPO en Python
J'ai créé un outil de mot de passe en Python.
J'ai fait un jeu rogue-like avec Python
J'ai écrit un doctest dans "J'ai essayé de simuler la probabilité d'un jeu de bingo avec Python"
Un mémo que j'ai écrit un tri rapide en Python
Je veux créer une fenêtre avec Python
J'ai essayé Python> autopep8
J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
Je veux faire un jeu avec Python
J'ai écrit une classe en Python3 et Java
Créez un jeu Janken en une seule ligne (python)
J'ai essayé d'implémenter TOPIC MODEL en Python
J'ai essayé de lire un fichier CSV en utilisant Python
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
J'ai essayé le comportement d'E / S Eventlet non bloquant en Python
J'ai essayé d'exécuter alembic, un outil de migration pour Python
J'ai essayé d'implémenter le tri sélectif en python
J'ai essayé Python> décorateur
J'ai créé un programme cryptographique César en Python.
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai fait un jeu de cueillette avec Python
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
J'ai essayé d'implémenter ce qui semble être un outil de snipper Windows avec Python
Dessine un graphique avec Julia ... j'ai essayé une petite analyse
J'ai essayé de représenter graphiquement les packages installés en Python
Je souhaite intégrer une variable dans une chaîne Python
J'ai fait un jeu d'éclairage de sapin de Noël avec Python
J'ai essayé d'utiliser TradeWave (commerce du système BitCoin en Python)
Jouer avec l'API d'intelligence artificielle locale de l'utilisateur en Python
Je veux écrire en Python! (2) Écrivons un test
J'ai essayé d'exécuter python à partir d'un fichier chauve-souris
Je veux échantillonner au hasard un fichier avec Python
J'ai essayé d'implémenter le poker de Drakue en Python
Je veux travailler avec un robot en python.