def test_no_wordlist(self) -> None: """Ensure error when no words loaded""" # Empty wordlist with self.assertRaises(ValueError): Hangman() with self.assertRaises(ValueError): Hangman(wordlist=[])
def test_load_and_save_public_and_private_words(): h1 = Hangman() h1.new_game('cheerful') h1.save() h2 = Hangman() assert h2.private_word == 'cheerful' assert h2.public_word == list('________') print('test_load_and_save_public_and_private_words passed!')
def main(): word_generator1 = Word_generator(word_list) hangman = Hangman(word_generator1.get_word()) hangman.start_game() while input("Play again ? (Y/N) ").upper() == "Y": word_generator2 = Word_generator(word_list) hangman2 = Hangman(word_generator2.get_word()) hangman2.start_game()
def test_inactive(self) -> None: """Is properly set to inactive""" with self.assertRaises(HangmanOver): Hangman(wordlist=['one']).guess_letter('o') with self.assertRaises(HangmanOver): Hangman(allow_empty=True).start().guess_letter('o') self.assertTrue(Hangman(allow_empty=True).inactive)
def test_does_not_count_failures_when_letter_is_correctly_guessed(self): game = Hangman('a') last_incorrect_guesses = game.get_guesses() game.guess_letter('a') self.assertEqual(game.get_guesses(), last_incorrect_guesses)
def test_return_a_if_a_is_correctly_guessed(self): game = Hangman('a') game.guess_letter('a') hint = game.render_hint() self.assertEqual(hint, 'a')
def test_show_game_board_image(self): # testing the game board image game = Hangman() image = Hangman.hangman_board_image guess = game.show_game_board_image(image, 'abd') # showing the image after 3 wrong guesses, and the incorrect letters self.assertTrue('abc', guess)
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')
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: ') 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 test_ignored_wordlist(self) -> None: """Empty wordlist is allowable""" game = Hangman(allow_empty=True) self.assertEqual(game.word, '') game.start() self.assertEqual(game.word, '') self.assertFalse(game.used_words)
def test_check_letter_success_testword(): hangman = Hangman() hangman.secret_word = 'Abracadabra' hangman.gamer_word = [ '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_', ] hangman.check_letter('a') assert hangman.gamer_word == [ 'a', '_', '_', 'a', '_', 'a', '_', 'a', '_', '_', 'a', ] assert 'a' in hangman.used_letters assert hangman.user_mistakes == 0
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 test_check_letter_success(): hangman = Hangman() hangman.check_letter(hangman.secret_word[0].capitalize()) letter_lower = hangman.secret_word[0].lower() assert letter_lower in hangman.used_letters assert hangman.gamer_word[0] == letter_lower assert hangman.user_mistakes == 0
def test_end_game_loose_not_win(): hangman = Hangman() hangman.user_mistakes = ATTEMPTS hangman.gamer_word = list(hangman.secret_word) assert hangman.end_game() assert not hangman.is_won assert hangman.is_lost
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 test_game_is_NOT_lost_when_guessed_incorrectly_for_10_times(self): game = Hangman('a') for _ in range(10): game.guess_letter('b') self.assertEqual(game.get_status(), 'Running')
def test_getting_all_the_letters_right_makes_for_a_win(self): game = Hangman("hello") game.guess("b") self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), "_____") game.guess("e") self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), "_e___") game.guess("l") self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), "_ell_") game.guess("o") self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), "_ello") game.guess("h") self.assertEqual(game.get_status(), hangman.STATUS_WIN) self.assertEqual(game.get_masked_word(), "hello") with self.assertRaisesWithMessage(ValueError): game.guess("x")
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 start_game(): """Main function""" try: hangman = Hangman(window, HEIGHT, words) except Exception: messagebox.showinfo("Победа", "Все слова отгаданы") window.quit() def key_press(arg): """ the function reads data from the keyboard, processes it, and outputs the result. Contains functions: check_letter(),status() """ letter = arg.char.lower() print(hangman.secret_word) # Check input letter, processes the result of the check hangman.check_letter(letter, canvas) # Monitores the gameplay hangman.status(canvas) # write used_word to file hangman.write_to_file() # binds keyboard events to key_press агтс window.bind("<KeyPress>", key_press)
def test_game_lost(self) -> None: """Game is stopped when the user is out of lives""" game = Hangman(lives=1, wordlist=['abc']).start() self.assertEqual(game.guess_letter('A'), 1) self.assertEqual(game.lives, 1) self.assertEqual(game.guess_letter('z'), 0) self.assertTrue(game.lost)
def test_getting_all_the_letters_right_makes_for_a_win(self): game = Hangman('hello') game.guess('b') self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), '_____') game.guess('e') self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), '_e___') game.guess('l') self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), '_ell_') game.guess('o') self.assertEqual(game.get_status(), hangman.STATUS_ONGOING) self.assertEqual(game.remaining_guesses, 8) self.assertEqual(game.get_masked_word(), '_ello') game.guess('h') self.assertEqual(game.get_status(), hangman.STATUS_WIN) self.assertEqual(game.get_masked_word(), 'hello') with self.assertRaisesWithMessage(ValueError): game.guess('x')
def test_stop(self, _: unittest.mock.MagicMock) -> None: """Game can be stopped""" game = Hangman(wordlist=['one']).start() self.assertTrue(game.active) game.stop() self.assertTrue(game.inactive) self.assertEqual(game.rounds, [GameState(0.0, 0.0, GameStatus.ACTIVE, 'ONE', [], 6)])
def __init__(self, wordfile: str, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) self.wordfile = wordfile self.title('Hangman') self.game = Hangman( lives=6, wordlocation=wordfile if os.path.exists(wordfile) else None, allow_empty=True) GameDisplay(self, game=self.game).pack(fill=tkinter.BOTH, expand=True) # Generate menus menu = tkinter.Menu(self) word_menu = tkinter.Menu(tearoff=0) word_menu.add_command(label='View', command=self.view_words) add_word_menu = tkinter.Menu(tearoff=0) add_word_menu.add_command(label='Word', command=self.add_word) add_word_menu.add_command(label='Wordlist', command=self.add_word_list) word_menu.add_cascade(label='Add', menu=add_word_menu) remove_word_menu = tkinter.Menu(tearoff=0) remove_word_menu.add_command(label='All', command=self.remove_all) remove_word_menu.add_command(label='Word', command=self.remove_word) remove_word_menu.add_command(label='Wordlist', command=self.remove_word_list) word_menu.add_cascade(label='Remove', menu=remove_word_menu) menu.add_cascade(label='Words', menu=word_menu) self.config(menu=menu) self.bind('<Return>', self._button_keyhandlers)
def test_multiple_same_guesses(): h = Hangman() h.new_game('defenestrate') h.guess('e') h.guess('e') assert h.guesses == ['e'] print('test_multiple_same_guesses passed!')
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 show_game(): hangman = Hangman() has_guessed = hangman.has_guessed_word() return render_template('game.html', word=hangman.public_word, guesses=hangman.guesses, has_guessed=has_guessed)
def wordPlay(self): lev4 = Hangman(self._lives) playerChoice = input( "Ertu tilbúin í lokaþraut þína í Hogwarts? (já/nei): \n") if playerChoice == "já": print( "Þú byrjar 3 með \"líf\" eða eins og Dumbledore kallar það \"tækifæri\". Good luck...\n" ) puzzle = lev4.wordPuzzle() while puzzle == "still alive": self.readyInput() puzzle = lev4.wordPuzzle() if puzzle == "loss": self.readyInput() self.looseLevel() print( "\nThe end! Takk fyrir að spila leikinn Haraldur Pottur og félagar í háska, vertu velkominn aftur!" ) sys.exit() elif playerChoice == "nei": print( "Hér í Hogwarts er ekki liðinn aumingjaskapur svo þú ert hér með gerð/ur brottrækur!" ) time.sleep(3) self.looseLevel() else: sentence = self.inputWrong(0) print(sentence) self.wordPlay()
def test_board_gen(self): test_game = Hangman() test_game.word = 'LOGAN\n' test_game.delimiter = '*' d = test_game.delimiter expected = d + ' ' + d + ' ' + d + ' ' + d + ' ' + d self.assertEqual(test_game.board_gen(), expected)
def initialise(self): self.hangman = Hangman(self) self.my_word = StringVar() self.my_word.set( "Word: " + self.hangman.word_of_underlines(len(self.hangman.word_to_guess))) self.tried_so_far = StringVar() self.tried_so_far.set('Letters tried so far: ') self.guesses_left = StringVar() self.update_no_of_guesses() self.geometry('{}x{}'.format(545, 400)) self.grid() word = Label(self, textvariable=self.my_word) word.grid(column=1, row=7, sticky=W) tried = Label(self, textvariable=self.tried_so_far) tried.grid(column=1, row=8, sticky=W) no_guesses = Label(self, textvariable=self.guesses_left) no_guesses.grid(column=1, row=9, sticky=W) turtle_canvas = Canvas(self, width=300, height=450) self.th = TurtleHangman(turtle_canvas) turtle_canvas.grid(column=1, row=10, rowspan=8, columnspan=3) infotext = 'Hangman v1.0 by AML' info = Label(self, text=infotext) info.grid(column=4, row=12, columnspan=2)