Beispiel #1
0
	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!')
Beispiel #3
0
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()
Beispiel #4
0
	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)
Beispiel #5
0
    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)
Beispiel #6
0
    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')
Beispiel #7
0
 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)
Beispiel #8
0
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')
Beispiel #9
0
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')
Beispiel #10
0
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')
Beispiel #11
0
	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)
Beispiel #12
0
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
Beispiel #13
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')
Beispiel #14
0
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
Beispiel #15
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
Beispiel #16
0
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())
Beispiel #17
0
    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')
Beispiel #18
0
    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")
Beispiel #19
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)

        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')
Beispiel #20
0
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)
Beispiel #21
0
	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)
Beispiel #22
0
    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')
Beispiel #23
0
	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)])
Beispiel #24
0
    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!')
Beispiel #26
0
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')
Beispiel #27
0
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)
Beispiel #28
0
    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)
Beispiel #30
0
    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)