한 걸음씩 기록하며

#. 타이핑 게임 본문

Python

#. 타이핑 게임

Haksae 2021. 12. 22. 15:30
#타이핑 게임 제작

import random
import time

#사운드 출력 필요 모듈
from playsound import playsound
import sqlite3
import datetime

#DB 생성 & Auto Commit
#본인 DB 경로
conn = sqlite3.connect("./resource/records.db", isolation_level=None)

#Cursor 연결
cursor = conn.cursor()

#테이블 생성
cursor.execute("CREATE TABLE IF NOT EXISTS records(id INTEGER PRIMARY KEY AUTOINCREMENT, cor_cnt INTEGER, record text, regdate text)")

#AUTOINCREMENT : 삽입할 때 자동으로 인서트를 해주지 않아도 자동으로 1씩 증가

words  = []       #영어 단어 리스트 (1000개 로드)
n = 1           #게임 시도 횟수
cor_cnt = 0     #정답 개수

with open('./resource/word.txt', 'r') as f :
    for c in f : 
        words.append(c.strip()) #양쪽에 공백을 제거해주는 strip 함수

# print(words) #단어 리스트 확인

#문제 준비 완료

input("Ready? Press Enter Key!") #Enter Game Start!

start = time.time() #스타트 시작 시간 기록

while n <= 5 :                  #게임 시도 횟수 5회까지
    random.shuffle(words)       #shuffle 함수 알아서 섞어줌
    q = random.choice(words)    #choice 랜덤으로 하나 뽑아오는 것
        
    print() #줄바꿈

    print("*Question # {}".format(n)) #문제 번호, format 함수를 써서 1씩 증가되게 만듦
    print(q) #드디어 단어 문제 출력

    x = input() #타이핑 입력

    print() #줄바꿈

    #정답 체크 골격
    if str(q).strip() == str(x).strip() :  #공백을 제거하고, 형 변환한 값이 q와 x가 같으면
        print("Pass!")
        #정답 소리 재생
        playsound('./sound/good.mp3')
        cor_cnt += 1 #정답 카운트를 1 증가
    else :
        #오답 소리 재생
        playsound('./sound/bad.mp3')
        print("Wrong!")

    n += 1 #5회 제한하기 위해 1씩 추가

print('---------------result of test-----------------')

end = time.time() #End time 기록
et = end - start #총 게임 시간 / 시작 시간부터 끝나는 시간을 빼면 나온다.
et = format(et, ".3f") #시간 출력 포맷 설정 / 소수 자리 지정 (",f") 셋째자리

#합불 여부 함수
if cor_cnt >= 3:
    print("합격")
else :
    print("불합격")

#기록
cursor.execute("INSERT INTO records('cor_cnt', 'record', 'regdate') VALUES(?, ?, ?)", (cor_cnt, et, datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))

#수행 시간 출력
print("게임 시간 : ", et, "초", "정답 개수 : {}".format(cor_cnt))

#시작 지점 / 안 넣어도 시작 되지만, 넣어주는게 좋음
if  __name__ == '__main__' : #메인인 경우만 실행해줘라
    pass

'Python' 카테고리의 다른 글

#.13 Error & Exceptions (예외처리)  (0) 2021.12.22
#.12 Module, Package  (0) 2021.12.22
#.11 Class  (0) 2021.12.22
#.10 Object(객체)에 대하여  (0) 2021.12.22
#.9 객체지향 프로그래밍 (OOP)  (0) 2021.12.22
Comments