def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) hangman = Hangman() maxTries = hangman.getLife() while (maxTries - guess.numTries): display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input("Select a letter:") if len(guessedChar) != 1: print("One character at a time!") continue if guessedChar in guess.guessedChars: print("You already guessed \' %c \' " % (guessedChar)) continue if guess.guess(guessedChar) == True: print("Success!") break if guess.guess(guessedChar) == False: print(hangman.get(0)) print("word [ %s ]" % (guess.secretWord)) print("guess [ %s ]" % (guess.currentStatus)) print('Fail')
class TestGuess(unittest.TestCase): def setUp(self): self.g1 = Guess(self.secretWord) def tearDown(self): pass def wordcorrect(self): #단어의 전체를 다 맞춘 경우 처리 if self.currentStatus == self.secretWord: self.assertEqual(self.g1.finished(), True) else: self.assertEqual(self.g1.finished(), False) def testDisplayCurrent(self): #부분적으로 맞추어진 단어의 상태가 올바르게 유지되는가? i = 0 while i < 7: self.assertEqual(self.g1.displayCurrent(), self.g1.currentStatus) # self.assertEqual(self.g1.displayCurrent(), '_ e _ _ _ _ _ ') # self.g1.guess('a') # self.assertEqual(self.g1.displayCurrent(), '_ e _ a _ _ _ ') # self.g1.guess('t') # self.assertEqual(self.g1.displayCurrent(), '_ e _ a _ _ t ') # self.g1.guess('u') # self.assertEqual(self.g1.displayCurrent(), '_ e _ a u _ t ') def testDisplayGuessed(self): #이용된 글자들의 집합을 나타내는 데이터 유지 경우 처리 i = 0 string = ' e n ' while i < 7: self.assertEqual(self.g1.displayGuessed(), string) self.g1.guess('guessedChar') string += ' ' + 'guessedChar' + ' '
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) hangman = Hangman() UI = TextUI(guess, hangman) while hangman.getLife() > 0: guessedChar = input("Select a letter: ") # 잘못된 입력에 대한 처리 if len(guessedChar) is not 1: UI.errorPrint(""" ================================= =====Input just one character==== =================================""") continue if guessedChar in guess.guessedList: UI.errorPrint(""" ================================= =====Input another character===== =================================""") continue # Guess결과에 따른 처리 result = guess.guess(guessedChar) if result is 1: break if result is 0: hangman.minusLife() UI.display() UI.display() UI.endOfGame(hangman.getLife())
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') finished = guess.guess(guessedChar) if finished: break if finished: print('Success') else: print(hangman.get(0)) print('word [' + guess.word + ']') print("Guess:", end=" ") for i in range(len(guess.current)): print(guess.current[i], end=" ") print() print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') if len(guessedChar) != 1: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue finished = guess.guess(guessedChar) if finished == True: break if finished == True: print('Success') else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentWord + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) # 랜덤하게 단어선택 finished = False hangman = Hangman() maxTries = hangman.getLife() # 목숨의 개수를 초기화 시킴 while guess.numTries < maxTries: # 목숨이 몇개 남았는지 체크해줌 display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') if len(guessedChar) != 1: # 한글자가 아니면 print('One character at a time!') continue if guessedChar in guess.guessedChars: # 이미 사용한 문자라면 print('You already guessed \"' + guessedChar + '\"') continue finished = guess.guess(guessedChar) if finished == True: break if finished == True: print('Success') print('word : ' + guess.secretWord) else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) hangman = Hangman() while hangman.remainingLives > 0: display = hangman.currentShape() print(display) display = guess.displayCurrent() print('Current: ' + display) display = guess.displayGuessed() print('Already Used: ' + display) success = guess.guess(getChar()) if success == 1: continue elif success == 2: continue elif success == False: hangman.decreaseLife() if guess.finished(): break if guess.finished() == True: print('**** ' + guess.displayCurrent() + ' ****') print('Success') else: print(hangman.currentShape()) print('word [' + guess.secretWord + ']') print('guess [' + guess.displayCurrent() + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) hangman = Hangman() while hangman.remainingLives > 0: display = hangman.currentShape() print(display) display = guess.displayCurrent() print('Current: ' + display) display = guess.displayGuessed() print('Already Used: ' + display) guessedChar = input('Select a letter: ') if len(guessedChar) != 1: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue success = guess.guess(guessedChar) if success == False: hangman.decreaseLife() if guess.finished() == True: print('**** ' + guess.displayCurrent() + ' ****') print('Success') break else: print(hangman.currentShape()) print('word [' + guess.secretWord + ']') print('guess [' + guess.displayCurrent() + ']') print('Fail')
def gameMain(): '''게임 구동 과정''' # 파일에 있는 단어 정리 및 갯수 알려주기 word = Word('aabbcc.txt') # 파일안에 있는 단어 랜덤적으로 가져온다. guess = Guess(word.randFromDB()) # 처음에는 단어가 완성이 안돼있으니 False 출력 finished = False # 목숨갯수(maxTries = 6)초기화 hangman = Hangman() maxTries = hangman.getLife() # numTries(현재 남은 목숨갯수)가 6보다 크거나 같을 때가지 실행 while guess.numTries < maxTries: # 시각적으로 행맨을 보여준다 (남은 목숨갯수에 맞게) # 6 -> 0 display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') # 알파벳 한개만 적기 # if len(guessedChar) != 1: print('One character at a time!') continue # guessedChars는 이미적은 알파벳을 모아 놓은 곳 if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue # 입력된 알파벳이 랜덤단어안에 있는지 확인 # 단어가 완성 되었는지 finished = guess.guess(guessedChar) if finished == True: break # 알파벳이 존재한다면 성공 if finished == True: print('Success') # 만약 제안된 기회 안에 단어를 완성하지못했다면 else: # 매달린 남자 보여주기 print(hangman.get(0)) #사용한 알파벳, 기회가용횟수, 실패 print('word was [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): word = Word('words.txt') #guess 는 Guess 클래스에 랜덤으로 단어 하나를 인자로 던진 것 guess = Guess(word.randFromDB()) finished = False hangman = Hangman() #목숨의 개수를 초기화 maxTries = hangman.getLife() #실패한 횟수가 목숨보다 적으면 계속 실행 while guess.numTries < maxTries: #display라는 변수를 통해 만들어서 행맨 모양을 불러옴 display = hangman.get(maxTries - guess.numTries) #행맨 모양 출력 print(display) #Current 와 Tries 출력 guess.display() #입력한 문자를 guessedChar라고 함 guessedChar = input('Select a letter: ') #입력한 문자가 한글자가 아니라면 if len(guessedChar) != 1: print('One character at a time!') continue #입력한 문자가 대문자라면 if 65 <= ord(guessedChar) <= 90: #소문자로 변경 guessedChar = chr(ord(guessedChar) + 32) #입력한 문자가 이미 입력했던 문자라면 if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue #알파벳 이외의 다른 모든 경우의 수를 차단 if ord(guessedChar) <= 64 or 91 <= ord( guessedChar) <= 96 or 123 <= ord(guessedChar): print('Please enter the alphabet!') continue #guess 모듈로 넘어가서 입력한 문자에 대해 처리 finished = guess.guess(guessedChar) #단어가 완성되었을 때 while 탈출 if finished == True: break if finished == True: print('Success') #단어가 완성되어서 탈출한게 아니라 목숨의 개수가 다달아서 False인 상태에서 while문을 빠져나온 경우 else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + ''.join(guess.currentStatus) + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() print(hangman.currentShape()) print(guess.displayGuessed()) while hangman.is_live(): guessedChar = input('Select a letter: ') system('clear') if len(guessedChar) != 1: print(hangman.currentShape()) print(guess.displayCurrent()) print("tried : [" + guess.displayGuessed() + "]") print('One character at a time!') continue if guess.is_usedChar(guessedChar): print(hangman.currentShape()) print(guess.displayCurrent()) print("tried : [" + guess.displayGuessed() + "]") print('You already guessed \"' + guessedChar + '\"') continue correct = guess.guess(guessedChar) if not correct: hangman.decreaseLife() if guess.is_finish(): finished = True break print(hangman.currentShape()) print(guess.displayCurrent()) print("tried : [" + guess.displayGuessed() + "]") if finished: print(hangman.currentShape()) print('Success' + '[' + guess.displayGuessWord() + ']') else: print(hangman.currentShape()) print('word [' + guess.displayGuessWord() + ']') print('guess [' + guess.displayCurrent() + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() while hangman.remainingLives > 0: display = hangman.currentShape() print(display) guess.displayCurrent() print("used letter: ") print() for i in string.ascii_lowercase: if i in guess.guessedChars: print(colored(i, 'red'), end=' ') else: print(colored(i, 'green'), end=' ') print() print() guessedChar = input('Select a letter: ') if len(guessedChar) != 1: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue success = guess.guess(guessedChar) print(success) if not success: hangman.decreaseLife() if guess.finished(): break if guess.finished(): print(guess.displayCurrent()) print('Success') else: print(hangman.currentShape()) print(guess.secretWord) guess.displayCurrent() print('Fail')
def gameMain(): #Word클래스로 만든 오브젝트 word = Word('words.txt') #guess 는 랜덤 단어로 만든 Guess의 오브젝트 guess = Guess(word.randFromDB()) # finished = False #Hangman의 오브젝트 만들어서 남은생명 hangman = Hangman() #남은생명==리스트 아이템 개수 maxTries = hangman.getLife() #아마 numtries는 실행횟수 일듯@@@@@@@@@ #실행횟수 < 남은생명 일때.. loop while guess.numTries < maxTries: #현재 행맨의 모습.. display = hangman.get(maxTries - guess.numTries) print(display) #현재까지의 상황출력 (맞춘글자, 실패횟수) guess.display() #알파벳 제시! guessedChar = input('Select a letter: ') if len(guessedChar) != 1: print('One character at a time!') continue #guseedChars는 내가 이미 제시한 알파벳들의 리스트 일듯. if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue #guess()는 해당 알파벳이 단어안에 있으면 위치를기록. #없으면 실패횟수를 증가시킴 #모든글자를 다 맞추었으면 True 아니면 False. finished = guess.guess(guessedChar) if finished == True: break if finished == True: print('Success') else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) print('%d words in DB' % word.count) finished = False hangman = Hangman() while hangman.remainingLives > 0: display = hangman.currentShape() print(display) display = guess.displayCurrent() print('Current: ' + display) display = guess.displayGuessed() print('Already Used: ' + display) guessedChar = input("Select a Letter: ") if len(guessedChar) == 1: if 65 <= ord(guessedChar) <= 90 or 97 <= ord( guessedChar) <= 122: if 65 <= ord(guessedChar) <= 90: guessedChar = chr(ord(guessedChar) + 32) if guessedChar not in guess.used_set: success = guess.guess(guessedChar) if not success: hangman.decreaseLife() finished = guess.finished() if finished: break if finished: print('Success') print('word [' + guess.word + ']') else: print('word [' + guess.word + ']') print("Guess:", end=" ") for i in range(len(guess.current)): print(guess.current[i], end=" ") print() print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) #랜덤 단어 선택 finished = False hangman = Hangman() maxTries = hangman.getLife() #목숨개수 초기화 while guess.numTries < maxTries: # numTries는 추측 실패 횟수 display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') # 입력받은 문자열이 1개의 문자가 아닐 때 if len(guessedChar) != 1: print('One character at a time!') continue # 입력받은 문자가 이미 이전에 입력받은 것일 떄 if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue # 입력받은 문자가 a~z가 아닐 때 if guessedChar < 'a' or guessedChar > 'z': print('please enter a character between a and z') continue #전체 문자 맞추면 while문 break 하고 Success 프린트 finished = guess.guess(guessedChar) if finished == True: break if finished == True: print() print(guess.secretWord) print('Success!') print('You win by trying', guess.numTries, 'Times') #허용된 횟수 내에 전체 문자 못 맞추면 hangman.text[0] 출력, 즉 목 매다는 그림 출력 else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print() print('Fail') print("The word was", guess.secretWord)
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ').lower() # 대문자가 들어와도 소문자로 취급 # []안의 내용을 컴파일하여 정규식 객체를 반환 r = re.compile('[^ ㄱ-ㅣ가-힣]+') #guessedChar에서 공백을 제외한 문자들을 문자열로 반환 result = r.sub('', guessedChar) if guessedChar.isdigit(): print("알파벳을 입력해 주세요.") continue elif guessedChar in result: print("알파벳을 입력해 주세요.") continue if len(guessedChar) != 1: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue finished = guess.guess(guessedChar) if finished == True: break if finished == True: print('Success') else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') if guessedChar.isalpha(): if len(guessedChar) != 1: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue finished = guess.guess(guessedChar) if finished == True: break else: print('You must input Alphabet!!!') continue if finished == True: print('Success!! The answer is %s!!' %guess.secretWord) else: print(hangman.get(0)) print('It is your guessed spell :', guess.guessedChars) print('Current : ', guess.currentStatus) print('Your Last Chance!! Insert Full Word!!') lastanswer = input('>>>>>>>> ') if lastanswer == guess.secretWord: print('Success!!') else: guess.answer = lastanswer print('word [' + guess.secretWord + ']') print('guess [' + guess.answer + ']') print('Fail')
def gameMain(): numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] word = Word('words.txt') #guess에 랜덤단어 저장 guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') if len(guessedChar) != 1: print('One character at a time!') continue else: if guessedChar in numbers: print("Not numbers!") continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue finished = guess.guess(guessedChar) if finished == True: break if finished == True: print('Success') else: print(hangman.get(0)) print('word [' + guess.word + ']') print('guess [', guess.strcurrent, ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') ## 입력이 영어 인경우만 처리 하기 위해 if guessedChar.isalpha() != 1: print('Enter alphabet') continue if len(guessedChar) != 1: ## 만약 사용자가 문자대신 단어를 입력해서 맞으면 success if guessedChar == guess.secretWord: print('genius godgod smart!') finished = True break else: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue finished = guess.guess(guessedChar) if finished == True: break if finished == True: print('Success') else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): #랜덤으로 단어 선택 word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() #목숨의 갯수를 초기화 maxTries = hangman.getLife() while guess.numTries < maxTries: #max display = hangman.get(maxTries - guess.numTries) print(display) guess.display() #lstrip을 넣어서 공백은 자동으로 제거 guessedChar = input('Select a letter: ') if len(guessedChar.lstrip()) != 1: print('One character at a time!') continue if guessedChar.lstrip() in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue # 입력한 문자가 알파벳 소문자가 아니면 오류 if guessedChar.lstrip() not in alphabet: print('Character must be English small letter!') continue finished = guess.guess(guessedChar) if finished == True: break if finished == True: print('Success') print('The answer is '+guess.secretWord) else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False # bitmediyse false hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: # en yuksek can in degerini kayit display = hangman.get( maxTries - guess.numTries) # burasi neyi baslatip nasil degistiriyor print( display ) # can degerinden yanan candegerini cikarttigimizda kalan can degeri guess.display() guessedChar = raw_input('Select a letter:') print(guessedChar) if len(guessedChar) != 1: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') # tahmin ediline harfin olup olmadigini teyit eder continue finished = guess.guess( guessedChar) # bu method neyi return yapmak icin bulunuyor if finished == True: # guess class aldigi 1 tane harfi kayit break if finished == True: # game in ortasinda bitirip cikmada kull print('Success') else: print(hangman.get(0)) print('word [' + guess.secret + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): word = Word('assn7/words.txt') try: guess = Guess(word.random_word()) except ValueError: print('can\'t find words.txt') exit() is_finished = False hangman = Hangman() max_tries = hangman.get_life() while guess.num_tries < max_tries: display = hangman.get(max_tries - guess.num_tries) print(display) guess.display() guessed_char = input('Select a letter: ') guessed_char = guessed_char.lower() if not guessed_char.isalpha(): print('Input alphabet') continue if len(guessed_char) != 1: print('One character at a time!') continue if guessed_char in guess.guessed_chars: print('You already guessed \"' + guessed_char + '\"') continue is_finished = guess.guess(guessed_char) if is_finished: break if is_finished: print('Success') else: print(hangman.get(0)) print('word [' + guess.secret_word + ']') print('guess [' + guess.current_status + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: # 목숨?? display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') # 알파벳 한개만 적기 if len(guessedChar) != 1: print('One character at a time!') continue # guessedChars는 이미적은 알파벳을 모아 놓은 곳 if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue # 적은 알파벳이 랜덤적으로 고른/전체다 맞췄는지? 단어안에 있는지 확인 finished = guess.guess(guessedChar) if finished == True: break # 알파벳이 존재한다면 성공 if finished == True: print('Success') else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
def gameMain(): word = Word('words.txt') guess = Guess(word.randFromDB()) finished = False hangman = Hangman() maxTries = hangman.getLife() while guess.numTries < maxTries: display = hangman.get(maxTries - guess.numTries) print(display) guess.display() guessedChar = input('Select a letter: ') hangul = re.compile('[^ ㄱ-ㅣ가-힣]+') # 한글과 띄어쓰기를 제외한 모든 글자 if hangul.sub('', guessedChar): print('Only English') continue if len(guessedChar) != 1: print('One character at a time!') continue if guessedChar in guess.guessedChars: print('You already guessed \"' + guessedChar + '\"') continue finished = guess.guess(guessedChar.lower()) if finished == True: break if finished == True: print('Success') else: print(hangman.get(0)) print('word [' + guess.secretWord + ']') print('guess [' + guess.currentStatus + ']') print('Fail')
class TestGuess(unittest.TestCase): def setUp(self): self.g1 = Guess('default') self.g2 = Guess('test') self.g3 = Guess('ttt') def tearDown(self): pass def testDisplayCurrent(self): self.assertEqual(self.g1.displayCurrent(), '_______') self.g1.guess('e') self.assertEqual(self.g1.displayCurrent(), '_e_____') def testDisplayGuessWord(self): self.assertEqual(self.g2.displayGuessed(), '') self.g2.guess('z') self.assertEqual(self.g2.displayGuessed(), 'z') def testIsFinish(self): self.assertEqual(self.g3.is_finish(), False) self.g3.guess('t') self.assertEqual(self.g3.is_finish(), True)
class GuessTest(unittest.TestCase): def setUp(self): self.Guess = Guess() self.Guess._answer = '1234' def test_return_4A0B_when_1234(self): self.assertEqual(self.Guess.guess('1234'), '4A0B') def test_return_3A0B_when_1235(self): self.assertEqual(self.Guess.guess('1235'), '3A0B') def test_return_0A4B_when_4321(self): self.assertEqual(self.Guess.guess('4321'), '0A4B') def test_return_2A4B_when_1243(self): self.assertEqual(self.Guess.guess('1243'), '2A2B') def test_return_0A0B_when_5678(self): self.assertEqual(self.Guess.guess('5678'), '0A0B') def test_return_1A1B_when_1378(self): self.assertEqual(self.Guess.guess('1378'), '1A1B')
class HangmanGame(QWidget): def __init__(self, parent=None): super().__init__(parent) # Initialize word database self.word = Word('words.txt') # Hangman display window self.hangmanWindow = QTextEdit() self.hangmanWindow.setReadOnly(True) self.hangmanWindow.setAlignment(Qt.AlignLeft) font = self.hangmanWindow.font() font.setFamily('Courier New') self.hangmanWindow.setFont(font) # Layout hangmanLayout = QGridLayout() hangmanLayout.addWidget(self.hangmanWindow, 0, 0) # Status Layout creation statusLayout = QGridLayout() # Display widget for current status self.currentWord = QLineEdit() self.currentWord.setReadOnly(True) self.currentWord.setAlignment(Qt.AlignCenter) font = self.currentWord.font() font.setPointSize(font.pointSize() + 8) self.currentWord.setFont(font) statusLayout.addWidget(self.currentWord, 0, 0, 1, 2) # Display widget for already used characters self.guessedChars = QLineEdit() self.guessedChars.setReadOnly(True) self.guessedChars.setAlignment(Qt.AlignLeft) self.guessedChars.setMaxLength(52) statusLayout.addWidget(self.guessedChars, 1, 0, 1, 2) # Display widget for message output self.message = QLineEdit() self.message.setReadOnly(True) self.message.setAlignment(Qt.AlignLeft) self.message.setMaxLength(52) statusLayout.addWidget(self.message, 2, 0, 1, 2) # Input widget for user selected characters self.charInput = QLineEdit() self.charInput.setMaxLength(1) statusLayout.addWidget(self.charInput, 3, 0) # Button for submitting a character self.guessButton = QToolButton() self.guessButton.setText('Guess!') self.guessButton.clicked.connect(self.guessClicked) statusLayout.addWidget(self.guessButton, 3, 1) # Button for a new game self.newGameButton = QToolButton() self.newGameButton.setText('New Game') self.newGameButton.clicked.connect(self.startGame) statusLayout.addWidget(self.newGameButton, 4, 0) # Layout placement mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SetFixedSize) mainLayout.addLayout(hangmanLayout, 0, 0) mainLayout.addLayout(statusLayout, 0, 1) self.setLayout(mainLayout) self.setWindowTitle('Hangman Game') # Start a new game on application launch! self.startGame() def startGame(self): self.hangman = Hangman() self.guess = Guess(self.word.randFromDB()) font = self.currentWord.font() if len(self.guess.secretWord) > 13: #font.setPointSize(font.pointSize() - 8) font.setPointSize(8) else: #font.setPointSize(font.pointSize() + 8) font.setPointSize(12) self.currentWord.setFont(font) self.gameOver = False self.hangmanWindow.setPlaceholderText(self.hangman.currentShape()) self.currentWord.setText(self.guess.displayCurrent()) self.guessedChars.setText(self.guess.displayGuessed()) self.message.clear() def displayCurrentStatus(self): str = '' for i in self.guess.currentStatus: str += i str += ' ' return str def displayGuessedChars(self): str = '' for i in self.guess.guessedChars: str += i str += ' ' return str def guessClicked(self): guessedChar = self.charInput.text() self.charInput.clear() self.message.clear() if self.gameOver == True: # 메시지 출력하고 - message.setText() - 리턴 self.message.setText("Game_Over") return "gameover" # 입력의 길이가 1 인지를 판단하고, 아닌 경우 메시지 출력, 리턴 if len(guessedChar) != 1: self.message.setText("Not a len 1 char") return "lengthError" # 이미 사용한 글자인지를 판단하고, 아닌 경우 메시지 출력, 리턴 if guessedChar in self.guess.guessedChars: self.message.setText("Used char") return "Used char" success = self.guess.guess(guessedChar) if success == False: # 남아 있는 목숨을 1 만큼 감소 self.hangman.decreaseLife() # 메시지 출력 self.message.setText(guessedChar +" not in word") # hangmanWindow 에 현재 hangman 상태 그림을 출력 self.hangmanWindow.setPlaceholderText(self.hangman.currentShape()) # currentWord 에 현재까지 부분적으로 맞추어진 단어 상태를 출력 self.currentWord.setText(self.displayCurrentStatus()) # guessedChars 에 지금까지 이용한 글자들의 집합을 출력 self.guessedChars.setText(self.displayGuessedChars()) if self.guess.finished(): # 메시지 ("Success!") 출력하고, self.gameOver 는 True 로 self.message.setText("Success!") self.gameOver = True elif self.hangman.getRemainingLives() == 0: # 메시지 ("Fail!" + 비밀 단어) 출력하고, self.gameOver 는 True 로 self.message.setText("Fail" + self.word) self.gameOver = True
class TestGuess(unittest.TestCase): def setUp(self): self.g1 = Guess('default') def tearDown(self): pass def testGuess(self): self.assertFalse(self.g1.guess('p')) self.assertTrue(self.g1.guess('d')) def testDisplayCurrent(self): self.assertEqual(self.g1.displayCurrent(), '_ e _ _ _ _ _ ') self.g1.guess('a') self.assertEqual(self.g1.displayCurrent(), '_ e _ a _ _ _ ') self.g1.guess('t') self.assertEqual(self.g1.displayCurrent(), '_ e _ a _ _ t ') self.g1.guess('u') self.assertEqual(self.g1.displayCurrent(), '_ e _ a u _ t ') self.g1.guess('d') self.assertEqual(self.g1.displayCurrent(), 'd e _ a u _ t ') self.g1.guess('f') self.assertEqual(self.g1.displayCurrent(), 'd e f a u _ t ') # 'p' is not in secretWord self.g1.guess('p') self.assertEqual(self.g1.displayCurrent(), 'd e f a u _ t ') self.g1.guess('l') self.assertEqual(self.g1.displayCurrent(), 'd e f a u l t ') def testDisplayGuessed(self): self.assertEqual(self.g1.displayGuessed(), ' e n ') self.g1.guess('a') self.assertEqual(self.g1.displayGuessed(), ' a e n ') self.g1.guess('t') self.assertEqual(self.g1.displayGuessed(), ' a e n t ') self.g1.guess('u') self.assertEqual(self.g1.displayGuessed(), ' a e n t u ') # 'u' is already in guessed set. self.g1.guess('u') self.assertEqual(self.g1.displayGuessed(), ' a e n t u ') def testFinished(self): self.assertFalse()
class HangmanGame(QWidget): def __init__(self, parent=None): super().__init__(parent) # Initialize word database self.word = Word('words.txt') # Hangman display window self.hangmanWindow = QTextEdit() self.hangmanWindow.setReadOnly(True) self.hangmanWindow.setAlignment(Qt.AlignLeft) font = self.hangmanWindow.font() font.setFamily('Courier New') self.hangmanWindow.setFont(font) # Layout hangmanLayout = QGridLayout() hangmanLayout.addWidget(self.hangmanWindow, 0, 0) # Status Layout creation statusLayout = QGridLayout() # Display widget for current status self.currentWord = QLineEdit() self.currentWord.setFixedWidth(350) self.currentWord.setReadOnly(True) self.currentWord.setAlignment(Qt.AlignCenter) font = self.currentWord.font() font.setPointSize(font.pointSize() + 8) self.currentWord.setFont(font) statusLayout.addWidget(self.currentWord, 0, 0, 1, 2) # Display widget for already used characters self.guessedChars = QLineEdit() self.guessedChars.setReadOnly(True) self.guessedChars.setAlignment(Qt.AlignLeft) self.guessedChars.setMaxLength(52) statusLayout.addWidget(self.guessedChars, 1, 0, 1, 2) # Display widget for message output self.message = QLineEdit() self.message.setReadOnly(True) self.message.setAlignment(Qt.AlignLeft) self.message.setMaxLength(52) statusLayout.addWidget(self.message, 2, 0, 1, 2) # Input widget for user selected characters self.charInput = QLineEdit() self.charInput.setMaxLength(1) statusLayout.addWidget(self.charInput, 3, 0) # Button for submitting a character self.guessButton = QToolButton() self.guessButton.setText('Guess!') self.guessButton.clicked.connect(self.guessClicked) statusLayout.addWidget(self.guessButton, 3, 1) # Button for a new game self.newGameButton = QToolButton() self.newGameButton.setText('New Game') self.newGameButton.clicked.connect(self.startGame) statusLayout.addWidget(self.newGameButton, 4, 0) # Layout placement mainLayout = QGridLayout() mainLayout.setSizeConstraint(QLayout.SetFixedSize) mainLayout.addLayout(hangmanLayout, 0, 0) mainLayout.addLayout(statusLayout, 0, 1) self.setLayout(mainLayout) self.setWindowTitle('Hangman Game') # Start a new game on application launch! self.startGame() def startGame(self): self.hangman = Hangman() self.guess = Guess(self.word.randFromDB(20)) self.gameOver = False if len(self.guess.secretWord) >=10: font = self.currentWord.font() font.setPointSize(font.pointSize()) self.currentWord.setFont(font) self.hangmanWindow.setPlaceholderText(self.hangman.currentShape()) self.currentWord.setText(self.guess.displayCurrent()) self.guessedChars.setText(self.guess.displayGuessed()) self.message.clear() def guessClicked(self): guessedChar = self.charInput.text() self.charInput.clear() self.message.clear() if self.gameOver == True: self.message.setText("게임이 끝났습니다.") if len(guessedChar) > 1: self.message.setText("한 글자만 입력하세요.") if guessedChar in self.guess.guessedChars: self.message.setText("이미 입력한 값 입니다.") self.hangman.decreaseLife() success = self.guess.guess(guessedChar) if success == False: if guessedChar == " ": self.message.setText("빈칸을 입력했습니다.") else: self.hangman.decreaseLife() self.hangmanWindow.setPlaceholderText(self.hangman.currentShape()) self.currentWord.setText(self.guess.displayCurrent()) self.guessedChars.setText(self.guess.displayGuessed()) self.message.setText("틀렸습니다 다시 시도하세요.") if success == True: self.hangmanWindow.setPlaceholderText(self.hangman.currentShape()) self.currentWord.setText(self.guess.displayCurrent()) self.guessedChars.setText(self.guess.displayGuessed()) if self.guess.finished(): self.message.setText("Success!") self.gameOver = True elif self.hangman.getRemainingLives() == 0: self.message.setText("Fail : "+ self.guess.secretWord) self.gameOver = True
class TestGuess(unittest.TestCase): def setUp(self): self.g1 = Guess('default') def tearDown(self): pass def testDisplayCurrent(self): self.assertEqual(self.g1.displayCurrent(), '_ e _ _ _ _ _ ') self.g1.guess('a') self.assertEqual(self.g1.displayCurrent(), '_ e _ a _ _ _ ') self.g1.guess('t') self.assertEqual(self.g1.displayCurrent(), '_ e _ a _ _ t ') self.g1.guess('u') self.assertEqual(self.g1.displayCurrent(), '_ e _ a u _ t ') print('display test ended') def testDisplayGuessed(self): self.assertEqual(self.g1.displayGuessed(), ' e n ') self.g1.guess('a') self.assertEqual(self.g1.displayGuessed(), ' a e n ') self.g1.guess('t') self.assertEqual(self.g1.displayGuessed(), ' a e n t ') self.g1.guess('u') self.assertEqual(self.g1.displayGuessed(), ' a e n t u ') print('guessed test ended') def testfinished(self): t1 = Guess('a') self.assertEqual(t1.secretWord, 'a') t2 = Guess('toomuchhomework') self.assertEqual(t2.secretWord, 'toomuchhomework') t3 = Guess('chicken') self.assertEqual(t3.secretWord, 'chicken') print('finished test ended') def testguess(self): self.assertFalse(self.g1.guess('k'), msg='There is no k') self.assertFalse(self.g1.guess('o'), msg='There is no o') self.assertFalse(self.g1.guess('p'), msg='There is no p') self.assertTrue(self.g1.guess('d'), msg='guess method error') self.assertTrue(self.g1.guess('e'), msg='guess method error') print('guess method test ended') def testInputIsAlpha(self): self.assertFalse(self.g1.guess('1'), msg='Please input Alphabet not integer') self.assertFalse(self.g1.guess('ㅂ'), msg='Please input Alphabet not korean') self.assertFalse(self.g1.guess('*'), msg='Please input Alphabet not symbol') print('input test ended')