프로그래밍
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(0, len(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 |
반응형