본문 바로가기

[Python]/[Python 프로젝트]

[Python 프로젝트] 꼬들 프로젝트 (Kordle)

728x90

프로젝트 설명

이번에 만든 프로젝트는 요즘 유행하는 웹게임인 꼬들(Kordle)Python으로 만들어보는 것입니다.

실제 꼬들 게임처럼 UI까지 구현하지는 않았고, 백엔드적인 부분만 Python으로 구현해보았습니다. 
실제 꼬들과 다른 점은 문제를 직접 추가해서 플레이 한다는 점과 입력 단어의 제한이 없다는 점입니다.

 

코드상세 설명

기본 CODE

1
2
3
4
5
6
7
import random
import time
 
print("이 게임의 플레이 방법에 대해서 알려드리겠습니다.\n이 게임은 컴퓨터가 랜덤으로 선택한 단어를 6번안에 맞추는 게임입니다.\n단어를 입력할때는 자음과 모음을 분리해서 입력해야하고 구분은 띄워쓰기로 합니다.\n\n")
 
words = [["ㅅ","ㅏ","ㅇ","ㅣ","ㄷ","ㅏ"], ["ㅋ","ㅣ","ㅂ","ㅗ","ㄷ","ㅡ"], ["ㅅ","ㅓ","ㄴ","ㅁ","ㅜ","ㄹ"], ["ㅅ","ㅡ","ㅍ","ㅣ","ㅋ","ㅓ"]]
temp = []
cs

게임 실행에 필요한 모듈을 가져오고, 규칙과 문제를 추가하는 코드입니다.

 

start 함수

1
2
3
4
5
6
7
def start():
    current_word = random.choice(words)
    cnt = 0
    print("단어를 고르는 중입니다.")
    time.sleep(2)
    print("단어가 선택되었습니다.\n")
    game(cnt, current_word)
cs

게임을 시작하기 위해 준비하는 함수입니다. 문제 리스트에서 랜덤으로 한 단어를 뽑아

이번 문제의 정답으로 설정합니다.

 

game 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def game(cnt, current_word):
    temp = []
    while True:
        bool_ = False
        ans = input("단어를 입력해주세요(자음과 모음은 띄워쓰기로 구분합니다.) : ").split(" ")
        if len(ans) == 6:
            for i in range(6):
                if len(ans[i]) != 1:
                    bool_ = True
                    print("제대로 된 단어를 입력해주세요.\n")
                    break
            if bool_ == True:
                continue
            elif bool_ == False:
                print(ans)
                cnt += 1
                break
        else:
            print("제대로 된 단어를 입력해주세요.\n")
 
    for i in range(len(ans)):
        if ans[i] == current_word[i]:
            temp.append("O ")
        elif ans[i] in current_word:
            temp.append("? ")
        else:
            temp.append("X ")
 
    print(temp)
    print("\n남은 횟수 : " + str(6 - cnt))
 
    if temp.count('O '== 6:
        print("정답을 맞추셨습니다.\n")
        print("정답 : " + "".join(current_word) + "\n횟수 : " + str(cnt) + " / 6\n")
        re()
 
    if cnt == 6:
        print("정답을 못 맞추셨습니다.\n")
        print("정답 : " + "".join(current_word))
        re()
    game(cnt, current_word)
cs

전체적인 게임을 진행하는 게임 함수입니다. 

단어를 입력받고, 게임의 성공과 실패를 결정하는 등 게임의 전반적인 부분을 담당하는 함수입니다.

 

re 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def re():
    while True:
        re = input("다시 하시겠습니까?(y/n) : ")
        if re == 'y' or re == 'Y':
            start()
        elif re == 'n' or re == 'N':
            print("게임을 종료합니다.")
            time.sleep(0.8)
            print("게임을 종료합니다..")
            time.sleep(0.8)
            print("게임을 종료합니다...")
            exit(0)
        else:
            print("제대로 된 값을 입력해주세요.")
cs

게임을 다시 시작할것인지 물어보는 함수입니다.

다시 시작한다고 할 경우, start 함수로 이동하여 변수들을 초기화 한후 게임을 다시 시작합니다.

다시 시작하지 않는다고 할 경우, 게임을 바로 종료합니다.

 

후기

만드는 동안 정말 재미있었고, 꼬들 제작자 덕분에 이러한 프로젝트를 해보게 되어서 너무 좋았습니다.

평소에 생각날 때마다 저도 꼬들을 플레이 중인데 여러분들도 한번씩 해보세요!

 

다음에는 크롤링을 이용하여 꼬들처럼 단어 입력의 제한을 만들어보고 싶습니다. 

실제 꼬들에서는 국립국어원에 입력된 어휘들로만 정답 입력이 가능하고 문제의 정답도 

국립국어원에서 가져온다고 하네요.(확실한지는 모름. 꼬들 사이트에 나와있었음)


728x90