프로그래밍

Python_hangman

Dilrong 2015. 7. 1. 22:00
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
 
import random
HANGMANPICS = ['''
    +---+
    |    |
        |
        |
        |
        |
===========''''''
    +---+
    |    |
    O    |
        |
        |
        |
===========''''''
    +---+
    |    |
    O    |
    |    |
        |
        |
===========''''''
    +---+
    |    |
    O    |
   /|    |
        |
        |
===========' ''' ''
    +---+
    |    |
    O    |
   /|\    |
        |
        |
===========''''''
    +---+
    |    |
    O    |
   /|\    |
   /    |
        |
===========''''''
    +---+
    |    |
    O    |
   /|\    |
   / \    |
        |
===========''']
words = 'ant baboon badger bat bear beaver camel cat clam cobra cougar coy-ote crow deer dog donkey duck eagle ferret fox frog goat goose hawk lionlizard llama mole monkey moose mouse mule newt otter owl panda parrot pi-geon python rabbit ram rat raven rhino salmon seal shark sheep skunk sloth snake spider stork swan tiger toad trout turkey turtle weasel whale wolf wombat zebra'.split()
        
def getRandomWord(wordList) :
    # 이 함수는 문자열 리스트에서 임의의 문자열을 선택해서 반환한다.
    wordIndex = random.randint(0len(wordList) -1)
    return wordList[wordIndex]
    
def displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord) :
    print(HANGMANPICS[len(missedLetters)])
    print()
    
    print('Missed letters :', end=' ')
    for letter in missedLetters :
        print(letter, end=' ')
    print()
    
    blanks = '_' * len(secretWord)
    
    for i in range(len(secretWord)): #맞게 추측한 단어로 빈칸을 채우기
        if secretWord[i] in correctLetters :
            blanks = blanks[:i] + secretWord[i] + blanks[i+1:]
            
    for letter in blanks : #문자와 빈칸으로 비밀 단어 보여주기
        print(letter, end=' ')
    print()
    
def getGuess(alreadyGuessed) :
    #플레이어가 입력한 글자를 입력한다. 여기에서는 플레이어가 글자 하나를 입력했는지 확인한다.
    while True :
        print('Guess a letter.')
        guess = input()
        guess = guess.lower()
        if len(guess) != 1:
            print('Please enter a single letter.')
        elif guess in alreadyGuessed :
            print('You have already guessed that letter. Choose again.')
        elif guess not in 'abcdefghijklmnopqrstuvwxyz' :
            print('Please enter a LETTER.')
        else :
            return guess
            
def playAgain() :
    #플레이어가 또 게임을 한다고 하면 True를 반환하고 아니면 False를 반환한다.
    print('Do you want to play again? (yes or no)')
    return input().lower().startswith('y')
    
print('H A N G M A N')
missedLetters = ' '
correctLetters = ' '
secretWord = getRandomWord(words)
gameIsDone = False
 
while True:
    displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord)
    
    #플레이어가 문자를 입력하도록 한다.
    guess = getGuess(missedLetters + correctLetters)
    
    if guess in secretWord:
        correctLetters = correctLetters + guess
        
        #플레이어가 이겼는지 검사한다.
        foundAllLetters = True
        
        for i in range(len(secretWord)) :
            if secretWord[i] not in correctLetters:
                foundAllLetters = False
                break
        if foundAllLetters:
            print('Yes! The secret word is "' + secretWord + '"! You have won!')
            
            gameIsDone = True
    else :
        missedLetters = missedLetters + guess
            
        #플레이어가 제한 횟수를 넘겨서 졌는지 확인한다.
        if len(missedLetters) == len(HANGMANPICS) - 1:
            displayBoard(HANGMANPICS, missedLetters, correctLetters, secretWord)
            print('You have run out of guesses!\nAfter ' + str(len(missedLetters)) + ' missed guesses and ' + 
            str(len(correctLetters)) + ' correct guesses, the word was "' + secretWord + '"')                
            gameIsDone = True                
        #게임 마지막에서 플레이를 또 할 것인지 물어본다.
        if gameIsDone:
            if playAgain() :
                missedLetters = ' '
                correctLetters = ' '
                gameIsDone = False
                secretWord = getRandomWord(words)
            else :
                break
        
 
cs


반응형