Python을 사용하여 타이핑 속도와 정확성 테스트

Python을 사용하여 타이핑 속도와 정확성 테스트

평균 타이핑 속도는 분당 약 40단어입니다. 작업에서 생산성을 발휘하려면 분당 최소 65~70단어를 입력하는 것을 목표로 해야 합니다. 타이핑 속도를 높이면 효율성이 향상되어 데이터 입력, 카피라이팅, 필사 및 관리 역할과 같은 작업이 향상됩니다.

타이핑 기술을 테스트하기 위해 Python을 사용하여 간단한 타이핑 테스트 애플리케이션을 빌드할 수 있습니다. 이것을 사용하면 정확한 결과를 얻고 시간이 지남에 따라 개선되는 중독성 습관을 개발할 수 있습니다.

Tkinter 및 임의 모듈

타이핑 테스트 게임을 개발하려면 tkinter 모듈과 random 모듈을 사용합니다 . Tkinter를 사용하면 데스크톱 응용 프로그램을 만들 수 있습니다. 버튼, 레이블, 텍스트 상자, 레이아웃 관리자와 같은 다양한 위젯을 제공하여 많은 노력을 기울이지 않고도 애플리케이션을 쉽게 개발할 수 있습니다.

이 외에도 유용한 라이브러리, 캔버스 개체 및 HTML/XML/PDF 파서가 함께 제공됩니다. 시스템에 Tkinter를 설치하려면 터미널을 열고 다음을 실행하십시오.

pip install tkinter

Random 모듈에는 난수를 생성하는 함수 모음이 있습니다. 이러한 루틴을 사용하여 뒤섞인 시퀀스, 게임 이동 및 의사 난수 정수를 생성할 수 있습니다. 일반적인 용도로는 주사위 굴리기 시뮬레이션, 목록 섞기, 무작위 암호 생성기, 핸드 크리켓 및 숫자 추측과 같은 게임이 있습니다.

Python을 사용하여 타이핑 테스트 앱을 빌드하는 방법

Python의 Tkinter 및 Random 모듈을 사용하여 타이핑 테스트 애플리케이션을 빌드하려면 다음 단계를 따르세요.

Tkinter 및 Random 모듈을 가져오는 것으로 시작하십시오. Tkinter 인스턴스를 초기화하고 루트 창을 표시합니다. 창의 크기, 제목 및 배경색을 픽셀 단위로 설정합니다.

from tkinter import *
import random
from tkinter import messagebox

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

GitHub 리포지토리에서 단어 목록을 다운로드하고 쉽게 참조할 수 있도록 Python 스크립트와 동일한 폴더에 배치합니다. 텍스트 파일의 내용을 읽고 split() 함수를 사용하여 각 단어를 목록에 저장합니다. score, missing 및 count1 변수를 0으로 초기화하고 시간 변수를 60으로 초기화합니다.

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

위에서 언급한 전역 변수를 참조하는 giventime() 이라는 함수를 정의합니다 . 남은 시간이 0보다 크면 1씩 감소시키고 timercount 레이블(코드 후반부에 선언됨)에 표시합니다. after() 함수를 사용하여 1,000밀리초(1초) 지연 후 giventime() 함수를 다시 호출합니다.

시간이 끝나면 start 레이블의 내용을 Game Over로 변경하고 동시에 게임 지침 레이블에 점수를 표시합니다. 해당 변수를 format() 함수에 전달하여 Hit, Miss 및 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))

제목과 메시지를 askokcancel() 함수에 전달합니다. 대화 상자에서 받은 응답이 true로 평가되면 exit() 함수를 사용하여 응용 프로그램을 중지합니다.

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

        if rr == True:
            exit()

이벤트를 입력 인수로 사용하는 game() 이라는 함수를 정의합니다 . 전역 변수를 참조하십시오. 시간 변수가 60이면 giventime() 함수를 실행하여 카운트다운을 시작합니다. 게임이 진행되는 동안 configure() 함수를 사용하여 단어를 입력한 후 start 레이블을 Continue로 변경하고 gameinstruction 레이블을 Enter 키로 변경합니다.

def game(event):
    global score, missed

    if time == 60:
        giventime()


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

get() 함수를 사용하여 wordentry에 입력된 단어를 검색 하고 화면에 표시된 단어와 같은지 확인합니다. 그렇다면 점수를 높이고 점수 레이블에 반영하십시오. 그렇지 않으면 누락된 변수를 1씩 증가시킵니다.

단어 목록의 항목을 재정렬하고 첫 번째 요소를 표시합니다. wordentry 위젯의 0부터 마지막 ​​인덱스까지 delete() 함수를 사용하여 내용을 지웁니다.

    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)

Label 위젯을 사용하여 startlabel, labelforward, scorelabel, scorelabelcount, labelfortimer, timercount, gameinstruction을 설정합니다. 레이블 위젯은 레이블의 배경색과 함께 표시할 텍스트, 글꼴 유형, 크기, 색상 및 스타일을 배치하려는 부모 창을 가져옵니다.

X 및 Y 좌표를 place() 메서드에 전달하여 특정 위치에서 레이블을 구성합니다.

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)

입력한 단어를 허용하는 항목 위젯을 정의합니다. 배치할 상위 창, 글꼴 유형, 크기, 테두리 크기 및 justify 속성과 함께 스타일을 설정합니다. place() 메서드를 사용하여 입력 위젯을 배치하고 focus_set() 메서드를 사용하여 입력을 위한 입력 상자를 활성화합니다.

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

중요한 단계는 Enter 키를 Tkinter 창의 이벤트와 바인딩하는 것입니다. 이렇게 하면 플레이어가 Enter 키를 누를 때 특정 기능이 실행됩니다. 이렇게 하려면 <Return> 문자열과 game() 함수를 bind() 함수에 매개 변수로 전달합니다. mainloop () 함수는 Python에게 Tkinter 이벤트 루프를 실행하고 창을 닫을 때까지 이벤트(예: 버튼 누름)를 수신하도록 지시합니다.

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

모든 코드를 조합하고 코드를 실행하여 손끝에서 타이핑 테스트 게임을 플레이하세요.

Python 타이핑 테스트 앱의 출력

위의 프로그램을 실행하면 가로 1,000픽셀, 세로 600픽셀의 창이 나타나고 청록색 배경색, 점수판, 카운트다운 타이머 및 게임 시작 안내가 표시됩니다.

타이핑 게임 Python 시작 화면

Enter 키를 누르면 게임이 시작되고 정답이 나올 때마다 프로그램이 점수를 1씩 증가시킵니다.

타이핑 게임 Python 진행 중 화면

시간이 끝나면 프로그램은 게임을 종료하라는 대화 상자와 함께 최종 점수를 표시합니다.

타이핑 게임 Python Game Over Screen

초보자를 위한 Tkinter GUI 아이디어

Tkinter는 매력적이고 강력한 완전한 기능의 응용 프로그램을 간단하게 구축하는 데 사용할 수 있는 매우 강력한 도구입니다. 초보자도 Tkinter를 사용할 수 있습니다. 빌드할 수 있는 몇 가지 샘플 프로젝트는 퀴즈 게임, 주소록, 할 일 목록 또는 이미지 뷰어입니다.

Tkinter를 넘어서고 싶다면 인기 있는 대안으로는 Qt 디자이너, Kivy, Toga 및 BeeWare가 있습니다. 이러한 모든 프레임워크는 다목적이며 크로스 플랫폼 개발을 지원하므로 모든 환경에서 번거로움 없이 애플리케이션을 실행할 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다