Created
October 3, 2023 20:22
-
-
Save scarolan/bae64152e9be3b45e2119686abaccdf6 to your computer and use it in GitHub Desktop.
ChatGPT Hangman with snarky replies and emoji
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import random | |
WORD_LIST = ['APPLE', 'BANANA', 'CHERRY', 'DONKEY', 'ELEPHANT', | |
'FLAMINGO', 'GORILLA', 'HIPPO', 'IGUANA', 'JAGUAR', | |
'KANGAROO', 'LEMUR', 'MONKEY', 'NYALA', 'OSTRICH', | |
'PENGUIN', 'QUOKKA', 'RABBIT', 'SQUIRREL', 'TURTLE', | |
'UGUISU', 'VULTURE', 'WALRUS', 'XERUS', 'YAK', 'ZEBRA'] | |
HANGMAN_PICS = [ | |
''' | |
+---+ | |
| | |
| | |
| | |
=== | |
''', | |
''' | |
+---+ | |
O | | |
| | |
| | |
=== | |
''', | |
''' | |
+---+ | |
O | | |
| | | |
| | |
=== | |
''', | |
''' | |
+---+ | |
O | | |
/| | | |
| | |
=== | |
''', | |
''' | |
+---+ | |
O | | |
/|\ | | |
| | |
=== | |
''', | |
''' | |
+---+ | |
O | | |
/|\ | | |
/ | | |
=== | |
''', | |
''' | |
+---+ | |
O | | |
/|\ | | |
/ \ | | |
=== | |
''' | |
] | |
TAUNTS = [ | |
"Wrong guess... looks like you got a little a-head of yourself. π", | |
"Another wrong letter, added a body there! You seem to be falling apart! πͺ", | |
"Oh no, an arm appeared! You're really going out on a limb here. πͺ΅", | |
"A second arm, huh? Talk about being up in arms! π€·π»ββοΈ", | |
"And there's a leg! Guess you don't have a leg to stand on now. π¦΅", | |
"My, my, looks like you're on your last leg. Better step it up! π" | |
] | |
def get_random_word(word_list): | |
word_index = random.randint(0, len(word_list) - 1) | |
return word_list[word_index] | |
def display_board(hangman_pics, missed_letters, correct_letters, secret_word): | |
print(hangman_pics[len(missed_letters)]) | |
print() | |
print('Missed letters:', end=' ') | |
for letter in missed_letters: | |
print(letter, end=' ') | |
print() | |
blanks = '_' * len(secret_word) | |
for i in range(len(secret_word)): | |
if secret_word[i] in correct_letters: | |
blanks = blanks[:i] + secret_word[i] + blanks[i+1:] | |
for letter in blanks: | |
print(letter, end=' ') | |
print() | |
def get_guess(already_guessed): | |
while True: | |
print('Guess a letter.') | |
guess = input() | |
guess = guess.upper() | |
if len(guess) != 1: | |
print('Please enter a single letter.') | |
elif guess in already_guessed: | |
print('You have already guessed that letter. Choose again.') | |
elif not guess.isalpha(): | |
print('Please enter a LETTER.') | |
else: | |
return guess | |
def play_again(): | |
print('Do you want to play again? (yes or no)') | |
return input().lower().startswith('y') | |
print('H A N G M A N') | |
missed_letters = '' | |
correct_letters = '' | |
secret_word = get_random_word(WORD_LIST) | |
game_is_done = False | |
while True: | |
display_board(HANGMAN_PICS, missed_letters, correct_letters, secret_word) | |
guess = get_guess(missed_letters + correct_letters) | |
if guess in secret_word: | |
correct_letters = correct_letters + guess | |
found_all_letters = True | |
for i in range(len(secret_word)): | |
if secret_word[i] not in correct_letters: | |
found_all_letters = False | |
break | |
if found_all_letters: | |
print('Yes! The secret word is "' + secret_word + '"! You have won!') | |
game_is_done = True | |
else: | |
missed_letters = missed_letters + guess | |
print(TAUNTS[len(missed_letters) - 1]) # Taunt the user | |
if len(missed_letters) == len(HANGMAN_PICS) - 1: | |
display_board(HANGMAN_PICS, missed_letters, correct_letters, secret_word) | |
print('You have run out of guesses! After ' + str(len(missed_letters)) + ' missed guesses and ' + str(len(correct_letters)) + ' correct guesses, the word was "' + secret_word + '"') | |
game_is_done = True | |
if game_is_done: | |
if play_again(): | |
missed_letters = '' | |
correct_letters = '' | |
game_is_done = False | |
secret_word = get_random_word(WORD_LIST) | |
else: | |
break |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment