본문 바로가기
Algorithm/자료구조, 알고리즘

[코딩 + 알고리즘 완주반] 10일차. 타이핑 게임 프로젝트

by newnu 2021. 3. 25.
반응형

# 타이핑 게임 제작,효과음 적용, DB 연동

# 업그레이드 타이핑 게임 제작
# 타이핑 게임 제작 및 기본 완성

import random
import time
# 사운드 
import pygame
import sqlite3
import datetime

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

words=[] # 영어 단어 리스트(1000개 로드)

n=1
cor_cnt = 0 # 정답 개수

with open('./resource/word.txt','r') as f:
    for c in f:
        words.append(c.strip())

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

input("Ready? Press Enter Key!") # Enter Game Start!
#print(a) # 무조건 string으로 
start = time.time()

while n<=5:
    random.shuffle(words) # 단어를 섞어줌
    q = random.choice(words) # 랜덤으로 하나 뽑기

    print()

    print("Question # {}".format(n))
    print(q)  # 문제 출력

    x = input() # 타이핑 입력

    print()

    if str(q).strip()==str(x).strip(): # 입력 확인(공백 제거)
        print("Pass!")
        # 정답 소리 재생
        pygame.init()
        pygame.mixer.music.load('./sound/good.wav')
        pygame.mixer.music.play()


        cor_cnt +=1
    else:
        
        # 오답 소리 재생
        pygame.mixer.music.load('./sound/bad.wav')
        pygame.mixer.music.play()
        print("Wrong!")

    n+=1

end = time.time() # END TIME
et = end-start # 총 게임시간
et = format(et,".3f") # 소수 셋째 자리 출력(시간)

if cor_cnt >=3:
    print("합격")
else:
    print("불합격")

# 기록 DB 삽입
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

예제에서는 winsound를 사용했지만 mac에서는 사용할 수 없어서 pygame 사용

 

import pygame

pygame.init()

pygame.mixer.music.load(filename)

pygame.mixer.music.play()

반응형