· 6 years ago · Dec 14, 2019, 02:56 AM
1# Section13-2
2# 업그레이드 타이핑 게임 제작
3# 사운드 적용 및 DB 연동
4
5import random
6import time
7# 사운드 출력 필요 모듈
8import winsound
9import sqlite3
10import datetime
11
12# DB생성 & Autocommit
13# 본인 DB 파일 경로
14conn = sqlite3.connect('./records.db', isolation_level=None)
15
16# Cursor연결
17cursor = conn.cursor()
18
19# 테이블 생성(Datatype : TEXT NUMERIC INTEGER REAL BLOB)
20cursor.execute(
21 "CREATE TABLE IF NOT EXISTS records(시행횟수INTEGER PRIMARY KEY AUTOINCREMENT, 정답갯수 INTEGER, 실행시간 text, 기록시간 text)"
22)
23
24words = [] # 영어 단어 리스트(1000개 로드)
25
26n = 1 # 게임 시도 횟수
27cor_cnt = 0 # 정답 개수
28
29with open('./resource/word.txt', 'r') as f: # 문제 txt 파일 로드
30 for c in f:
31 words.append(c.strip())
32
33print(words) # 단어 리스트 확인
34
35input("Ready? Press Enter Key!") # Enter Game Start!
36
37start = time.time() # Start Time
38
39while n <= 5: # 5회 반복
40 random.shuffle(words) # List shuffle!
41 q = random.choice(words) # List -> words random extract!
42
43
44 print("*Question # {}".format(n))
45 print(q) # 문제 출력
46
47 x = input() # 타이핑 입력
48
49
50 if str(q).strip() == str(x).strip(): # 입력 확인(공백제거)
51 winsound.PlaySound( # 정답 소리 재생
52 './sound/good.wav',
53 winsound.SND_FILENAME
54 )
55 print("Pass!")
56 cor_cnt += 1 # 정답 개수 카운트
57
58 else:
59 winsound.PlaySound( # 오답 소리 재생
60 './sound/bad.wav',
61 winsound.SND_FILENAME
62 )
63
64 print("Wrong!")
65
66 n += 1 # 다음 문제 전환
67
68end = time.time() # End Time
69et = end - start # 총 게임 시간
70
71et = format(et, ".3f") # 소수 셋째 자리 출력(시간)
72
73print()
74print('--------------')
75
76
77if cor_cnt >= 5: # 3개 이상 합격
78 print("결과 : 합격")
79else:
80 print("불합격")
81
82# 기록 DB 삽입
83cursor.execute(
84 "INSERT INTO records('cor_cnt', 'record', 'regdate') VALUES (?, ?, ?)",
85 (
86 cor_cnt, et, datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
87 )
88)
89
90# 접속 해제
91conn.close()
92
93# 수행 시간 출력
94print("게임 시간 :", et, "초", "정답 개수 : {}".format(cor_cnt))