한 걸음씩 기록하며
#. 타이핑 게임 본문
#타이핑 게임 제작
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