Pruebe su velocidad y precisión de escritura usando Python

Pruebe su velocidad y precisión de escritura usando Python

La velocidad de escritura promedio es de alrededor de 40 palabras por minuto. Si desea ser productivo en su trabajo, debe tratar de escribir al menos de 65 a 70 palabras por minuto. Aumentar su velocidad de escritura mejorará su eficiencia, lo que impulsará tareas como la entrada de datos, la redacción de textos publicitarios, la transcripción y las funciones administrativas.

Para probar sus habilidades de mecanografía, puede crear una aplicación de prueba de mecanografía simple usando Python. Con esto, puede obtener resultados precisos y desarrollar un hábito adictivo para mejorar con el tiempo.

Los módulos Tkinter y Random

Para desarrollar el Typing Test Game, utilizará el módulo tkinter y el módulo aleatorio . Tkinter te permite crear aplicaciones de escritorio. Ofrece una variedad de widgets como botones, etiquetas, cuadros de texto y administradores de diseño que facilitan el desarrollo de aplicaciones sin demasiado esfuerzo.

Aparte de estos, viene con bibliotecas útiles, objetos de lienzo y analizadores HTML/XML/PDF. Para instalar Tkinter en su sistema, abra la terminal y ejecute:

pip install tkinter

El módulo Random tiene una colección de funciones para generar números aleatorios. Puede usar estas rutinas para producir secuencias aleatorias, movimientos de juego y números enteros pseudoaleatorios. Algunos de sus usos comunes incluyen la simulación de tiradas de dados, listas de barajado, un generador de contraseñas aleatorias y en juegos como el cricket manual y las adivinanzas de números.

Cómo construir una aplicación de prueba de escritura usando Python

Siga estos pasos para crear una aplicación de prueba de escritura utilizando el módulo Tkinter y Random de Python.

Comience importando Tkinter y el módulo Random. Inicialice la instancia de Tkinter y muestre la ventana raíz. Establezca las dimensiones en píxeles, el título y el color de fondo de la ventana.

from tkinter import *
import random
from tkinter import messagebox

Mainscreen = Tk()
Mainscreen.geometry('1000x600')
Mainscreen.title('MakeUseOf Typing Game')
Mainscreen.config(bg="aqua")

Descargue la lista de palabras del repositorio de GitHub y colóquela en la misma carpeta que el script de Python para facilitar la referencia. Lea el contenido del archivo de texto y use la función split() para almacenar cada palabra en una lista. Inicialice las variables de puntuación, perdida y cuenta 1 en cero y la variable de tiempo en 60.

file1 = open('words.txt', 'r')
words = file1.read().split()
score = missed = count1 = 0
time = 60

Defina una función llamada Giventime() que haga referencia a las variables globales mencionadas anteriormente. Si el tiempo restante es mayor que cero, disminúyalo en uno y muéstrelo en la etiqueta timercount (declarada en la última mitad del código). Utilice la función after() para devolver la llamada a la función givetime() después de un retraso de 1000 milisegundos (un segundo).

Si se acabó el tiempo, cambie el contenido de la etiqueta de inicio a Fin del juego y, al mismo tiempo, muestre la puntuación en la etiqueta de instrucciones del juego. Pase las variables correspondientes a la función format() para mostrar los aciertos, los errores y la puntuación total.

def giventime():
    global time, score, missed

    if time > 0:
        time -= 1
        timercount.configure(text=time)
        timercount.after(1000, giventime)
    else:
        startlabel.configure(text='Game Over!')
        gameinstruction.configure(text='Hit = {} | Miss = {} | Total Score = {}'.format(score, missed, score - missed))

Pase el título y el mensaje a la función askokcancel() . Si la respuesta recibida en el cuadro de diálogo se evalúa como verdadera, detenga la aplicación utilizando la función exit() .

        rr = messagebox.askokcancel('Game Over!', 'Press Ok to Exit')

        if rr == True:
            exit()

Defina una función llamada game() que tome un evento como argumento de entrada. Haga referencia a las variables globales. Si la variable de tiempo es igual a 60, ejecute la función Giventime() para comenzar la cuenta regresiva. A medida que el juego está en progreso, cambie la etiqueta de inicio a Continuar y la etiqueta de instrucción del juego para presionar enter después de escribir la palabra usando la función configure().

def game(event):
    global score, missed

    if time == 60:
        giventime()


    startlabel.configure(text='Continue..')
    gameinstruction.configure(text='Hit Enter After Typing The Word')

Recupere la palabra escrita en wordentry usando la función get() y verifique si es igual a la palabra que se muestra en la pantalla. En caso afirmativo, incremente la puntuación y refléjela en la etiqueta de puntuación. De lo contrario, incremente la variable perdida en uno.

Reordene los elementos de la lista de palabras y muestre el primer elemento. Use la función eliminar () desde el cero hasta el último índice en el widget de entrada de palabras para borrar el contenido.

    if wordentry.get() == labelforward['text']:
        score += 1
        scorelabelcount.configure(text=score)
    else:
        missed += 1

    random.shuffle(words)
    labelforward.configure(text=words[0])
    wordentry.delete(0, END)

Establezca la etiqueta de inicio, la etiqueta hacia adelante, la etiqueta de puntaje, el conteo de etiquetas de puntaje, la etiqueta para el temporizador, el conteo del temporizador y la instrucción del juego usando el widget Etiqueta. El widget de etiqueta toma la ventana principal en la que desea colocarlo, el texto que debe mostrar, el tipo de fuente, el tamaño, el color y el estilo junto con el color de fondo de la etiqueta.

Pase las coordenadas X e Y al método place() para organizar las etiquetas en una posición específica.

startlabel = Label(Mainscreen,text='Typing Game',font=('arial',30,'italic bold'),bg='black',fg='white')
startlabel.place(x=375, y=50)

labelforward = Label(Mainscreen,text=' ',font=('arial',45,'italic bold'),fg='green')
labelforward.place(x=350, y=240)

scorelabel = Label(Mainscreen,text='Your Score:',font=('arial',25,'italic bold'),fg='maroon')
scorelabel.place(x=110, y=100)

scorelabelcount = Label(Mainscreen,text=score,font=('arial',25,'italic bold'),fg='purple')
scorelabelcount.place(x=250, y=180)

labelfortimer = Label(Mainscreen,text='Time Left:',font=('arial',25,'italic bold'),fg='maroon')
labelfortimer.place(x=700, y=100)

timercount = Label(Mainscreen,text=time,font=('arial',25,'italic bold'),fg='purple')
timercount.place(x=700, y=180)

gameinstruction = Label(Mainscreen,text='Hit Enter After Typing The Word',font=('arial',25,'italic bold'),fg='grey')
gameinstruction.place(x=250, y=500)

Defina un widget de entrada que acepte la palabra que escriba. Establezca la ventana principal en la que desea colocarlo, el tipo de fuente, el tamaño, el estilo junto con el tamaño del borde y la propiedad de justificación. Utilice el método place() para colocar el widget de entrada y el método focus_set() para activar el cuadro de entrada para la entrada.

wordentry = Entry(Mainscreen, font=('arial',25,'italic bold'), bd=10, justify='center')
wordentry.place(x=350, y=330)
wordentry.focus_set()

Un paso importante es vincular la tecla Intro con un evento en la ventana de Tkinter. Si lo hace, se asegurará de que cuando el jugador presione Entrar, se ejecutará una función en particular. Para lograr esto, pasa la cadena <Return> y la función game() como parámetros a la función bind() . La función mainloop() le dice a Python que ejecute el ciclo de eventos de Tkinter y escuche los eventos (como presionar un botón) hasta que cierre la ventana.

Mainscreen.bind('<Return>', game)
mainloop()

Reúna todo el código y ejecútelo para jugar el juego de prueba de mecanografía al alcance de su mano.

Salida de la aplicación de prueba de escritura de Python

Al ejecutar el programa anterior, aparece una ventana de 1000 píxeles de ancho y 600 píxeles de alto, con un fondo de color aguamarina, un marcador, un temporizador de cuenta regresiva y una instrucción para comenzar el juego.

Juego de escritura Python Pantalla de inicio

Al presionar Enter, el juego comienza y en cada respuesta correcta el programa incrementa la puntuación en uno.

Juego de escritura Python Pantalla en progreso

Cuando se acaba el tiempo, el programa muestra la puntuación final junto con un cuadro de diálogo para salir del juego.

Juego de mecanografía Python Game Over Screen

Ideas de interfaz gráfica de usuario de Tkinter para principiantes

Tkinter es una herramienta muy poderosa que puede usar para crear aplicaciones simples o completamente funcionales que sean atractivas y robustas. Incluso un novato puede usar Tkinter. Algunos proyectos de muestra que puede crear son un juego de preguntas, una libreta de direcciones, una lista de tareas pendientes o un visor de imágenes.

Si desea ir más allá de Tkinter, algunas de las alternativas populares incluyen Qt designer, Kivy, Toga y BeeWare. Todos estos marcos son versátiles y admiten el desarrollo multiplataforma, por lo que puede ejecutar sus aplicaciones sin problemas en cualquier entorno.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *