Teste sua velocidade e precisão de digitação usando Python

Teste sua velocidade e precisão de digitação usando Python

A velocidade média de digitação é de cerca de 40 palavras por minuto. Se você deseja ser produtivo em seu trabalho, deve digitar pelo menos 65 a 70 palavras por minuto. Aumentar sua velocidade de digitação melhorará sua eficiência, o que aumentará tarefas como entrada de dados, direitos autorais, transcrição e funções administrativas.

Para testar suas habilidades de digitação, você pode criar um aplicativo de teste de digitação simples usando Python. Usando isso, você pode obter resultados precisos e desenvolver um hábito viciante para melhorar com o tempo.

Os Módulos Tkinter e Random

Para desenvolver o Typing Test Game, você utilizará o módulo tkinter e o módulo random . Tkinter permite que você crie aplicativos de desktop. Ele oferece uma variedade de widgets como botões, rótulos, caixas de texto e gerenciadores de layout que facilitam o desenvolvimento de aplicativos sem muito esforço.

Além disso, ele vem com bibliotecas úteis, objetos de tela e analisadores de HTML/XML/PDF. Para instalar o Tkinter em seu sistema, abra o terminal e execute:

pip install tkinter

O módulo Random possui uma coleção de funções para gerar números aleatórios. Você pode usar essas rotinas para produzir sequências embaralhadas, movimentos de jogo e números inteiros pseudo-aleatórios. Alguns de seus usos comuns incluem a simulação de jogadas de dados, listas de embaralhamento, um gerador de senha aleatório e em jogos como críquete de mão e adivinhação de números.

Como construir um aplicativo de teste de digitação usando Python

Siga estas etapas para criar um aplicativo de teste de digitação usando o módulo Tkinter e Random do Python.

Comece importando o Tkinter e o módulo Random. Inicialize a instância do Tkinter e exiba a janela raiz. Defina as dimensões em pixels, o título e a cor de fundo da janela.

from tkinter import *
import random
from tkinter import messagebox

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

Baixe a lista de palavras do repositório GitHub e coloque-a na mesma pasta que o script Python para facilitar a referência. Leia o conteúdo do arquivo de texto e use a função split() para armazenar cada palavra em uma lista. Inicialize as variáveis ​​score, miss e count1 como zero e a variável time como 60.

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

Defina uma função chamada Giventime() que faça referência às variáveis ​​globais mencionadas acima. Se o tempo restante for maior que zero, diminua-o em um e exiba-o no rótulo timercount (declarado na última metade do código). Use a função after() para chamar de volta a função Giventime() após um atraso de 1.000 milissegundos (um segundo).

Se o tempo acabar, altere o conteúdo do rótulo de início para Game Over e exiba simultaneamente a pontuação no rótulo de instrução do jogo. Passe as variáveis ​​correspondentes para a função format() para exibir o Hit, Miss e o Total Score.

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))

Passe o título e a mensagem para a função askokcancel() . Se a resposta recebida na caixa de diálogo for verdadeira, interrompa o aplicativo usando a função exit() .

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

        if rr == True:
            exit()

Defina uma função chamada game() que recebe o evento como um argumento de entrada. Faça referência às variáveis ​​globais. Se a variável time for igual a 60, execute a função Giventime() para iniciar a contagem regressiva. À medida que o jogo está em andamento, altere o rótulo de início para Continuar e o rótulo de instrução do jogo para pressionar Enter após digitar a palavra usando a função 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 a palavra digitada em wordentry usando a função get() e verifique se é igual à palavra exibida na tela. Se sim, incremente a pontuação e reflita na etiqueta de pontuação. Caso contrário, incremente a variável perdida em um.

Reordene os itens na lista de palavras e exiba o primeiro elemento. Use a função delete() do zero ao último índice no widget de entrada de palavras para limpar o conteúdo.

    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)

Defina startlabel, labelforward, scorelabel, scorelabelcount, labelfortimer, timercount e gameinstruction usando o widget Label. O widget de rótulo pega na janela pai na qual você deseja colocá-lo, o texto que deve ser exibido, o tipo de fonte, tamanho, cor e estilo junto com a cor de fundo do rótulo.

Passe as coordenadas X e Y para o método place() para organizar os rótulos em uma posição 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 um widget de entrada que aceite a palavra digitada. Defina a janela pai na qual deseja colocá-la, o tipo de fonte, tamanho, estilo junto com o tamanho da borda e a propriedade justificar. Use o método place() para posicionar o widget de entrada e o método focus_set() para ativar a caixa de entrada para entrada.

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

Uma etapa importante é vincular a tecla Enter a um evento na janela do Tkinter. Isso garante que, quando o jogador pressionar Enter, uma função específica seja executada. Para conseguir isso, você passa a string <Return> e a função game() como parâmetros para a função bind() . A função mainloop() diz ao Python para executar o loop de eventos Tkinter e escutar eventos (como pressionamentos de botão) até você fechar a janela.

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

Junte todo o código e execute-o para jogar o jogo de teste de digitação ao seu alcance.

Saída do aplicativo de teste de digitação do Python

Ao executar o programa acima, aparece uma janela com 1.000 pixels de largura e 600 pixels de altura, com fundo aqua, placar, contagem regressiva e uma instrução para iniciar o jogo.

Tela inicial do Python do jogo de digitação

Ao apertar Enter, o jogo começa e a cada resposta correta o programa incrementa a pontuação em um.

Tela de digitação do jogo Python em andamento

Quando o tempo acabar, o programa exibe a pontuação final junto com uma caixa de diálogo para sair do jogo.

Digitando Game Python Game Over Screen

Idéias da GUI do Tkinter para iniciantes

O Tkinter é uma ferramenta muito poderosa que você pode usar para criar aplicativos simples a totalmente funcionais, atraentes e robustos. Mesmo um novato pode usar o Tkinter. Alguns exemplos de projetos que você pode criar são um jogo de perguntas e respostas, um catálogo de endereços, uma lista de tarefas ou um visualizador de imagens.

Se você quiser ir além do Tkinter, algumas das alternativas populares incluem Qt designer, Kivy, Toga e BeeWare. Todas essas estruturas são versáteis e oferecem suporte ao desenvolvimento de plataforma cruzada, para que você possa executar seus aplicativos sem problemas em qualquer ambiente.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *