Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import string
- import re
- HANGMAN_PHOTOS = {1: "x-------x", 2: """x-------x
- |
- |
- |
- |
- |
- """, 3: """x-------x
- | |
- | 0
- |
- |
- |""", 4: """x-------x
- | |
- | 0
- | |
- |
- |""", 5: """x-------x
- | |
- | 0
- | /|\\
- |
- |""", 6: 'x-------x\n'
- '| |\n'
- '| 0\n'
- '| /|\\\n'
- '| /\n'
- '|', 7: 'x-------x\n'
- '| |\n'
- '| 0\n'
- '| /|\\\n'
- '| / \\\n'
- '|'}
- MAX_TRIES = 7
- def print_start():
- print("""\
- _ _
- | | | |
- | |__| | __ _ _ __ __ _ _ __ ___ __ _ _ __
- | __ |/ _` | '_ \ / _` | '_ ` _ \ / _` | '_ \
- | | | | (_| | | | | (_| | | | | | | (_| | | | |
- |_| |_|\__,_|_| |_|\__, |_| |_| |_|\__,_|_| |_|
- __/ |
- |___/
- """)
- def choose_word(file_path, index):
- x = open(file_path, 'r')
- file = x.read()
- file_lines = file.split(" ")
- new_words = list(dict.fromkeys(file_lines))
- while index > len(file_lines):
- index = index-len(file_lines)
- return file_lines[index-1]
- def check_valid_input(letter_guessed, old_letters_guessed):
- y = len(letter_guessed)
- if(y >= 2):
- return False
- elif not re.search("^[a-zA-Z]+$", letter_guessed):
- return False
- elif letter_guessed.lower() in old_letters_guessed:
- return False
- elif letter_guessed.upper() in old_letters_guessed:
- return False
- else:
- return True
- def try_update_letter_guessed(letter_guessed, old_letters_guessed):
- y=len(letter_guessed)
- if(y >= 2):
- print('X')
- print(' -> '.join(sorted(old_letters_guessed)))
- return False
- elif not re.search("^[a-zA-Z]+$", letter_guessed):
- print('X')
- print(' -> '.join(sorted(old_letters_guessed)))
- return False
- elif letter_guessed.lower() in old_letters_guessed:
- print('X')
- print(' -> '.join(sorted(old_letters_guessed)))
- return False
- elif letter_guessed.upper() in old_letters_guessed:
- print('X')
- print(' -> '.join(sorted(old_letters_guessed)))
- return False
- else:
- old_letters_guessed.append(letter_guessed)
- return True
- def show_hidden_word(secret_word, old_letters_guessed):
- my_str = secret_word
- my_str =" ".join(my_str)
- for x in secret_word:
- if not x in old_letters_guessed:
- my_str = my_str.replace(x, "_")
- print(my_str)
- def print_hangman(num_of_tries):
- print(HANGMAN_PHOTOS[num_of_tries])
- def check_win(secret_word, old_letters_guessed):
- y = len(secret_word)
- count = 0
- for i in secret_word:
- for j in old_letters_guessed:
- if i == j:
- count = count + 1
- if count == y:
- return True
- else:
- return False
- def is_letter_in_word(letter_guessed, secret_word):
- res = False
- if letter_guessed in secret_word:
- res = True
- return res
- def main():
- print_start()
- file_path = input("enter file path: ")
- start = input("enter index: ")
- index = int(start)
- file = open(file_path, 'r')
- secret_word = choose_word(file_path, index)
- old_letter_guessed = []
- num_of_tries = 1
- print("lets start!\n")
- print_hangman(num_of_tries)
- show_hidden_word(secret_word, old_letter_guessed)
- while num_of_tries != MAX_TRIES:
- letter_guessed = input("guess a letter: ")
- x = try_update_letter_guessed(letter_guessed, old_letter_guessed)
- if x:
- if not is_letter_in_word(letter_guessed, secret_word):
- print(":(")
- print_hangman(num_of_tries)
- show_hidden_word(secret_word, old_letter_guessed)
- if num_of_tries == 6:
- print("LOSE")
- break
- else:
- if check_win(secret_word, old_letter_guessed):
- show_hidden_word(secret_word, old_letter_guessed)
- print("WIN")
- break
- else:
- show_hidden_word(secret_word, old_letter_guessed)
- else:
- continue
- num_of_tries += 1
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement