59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			59 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | from hangmantui import hangman, clear | ||
|  | from userInput import ask_word_in_dictionary, ask_letter | ||
|  | 
 | ||
|  | 
 | ||
|  | def hangman_start(score: int): | ||
|  |     """start the hangman """ | ||
|  |     life = 10 | ||
|  |     choosed_word = ask_word_in_dictionary() | ||
|  |     found_letters = '*' * len(choosed_word) | ||
|  |     not_in_word = '' | ||
|  |     while life > 0: | ||
|  |         draw(life, found_letters) | ||
|  |         in_letter = ask_letter(not_in_word) | ||
|  |         if in_letter in choosed_word: | ||
|  |             found_letters = unhide_letters(choosed_word, in_letter, found_letters) | ||
|  |         else: | ||
|  |             not_in_word += in_letter | ||
|  |             life -= 1 | ||
|  | 
 | ||
|  |         if found_letters == choosed_word: | ||
|  |             clear() | ||
|  |             print('CONGRATS!! the word was: ', choosed_word) | ||
|  |             score += len(list(dict.fromkeys(choosed_word[:]))) + life - len(not_in_word) | ||
|  |             break | ||
|  | 
 | ||
|  |     return score | ||
|  | 
 | ||
|  | 
 | ||
|  | def unhide_letters(choosed_word, letter, found_letters): | ||
|  |     """take a letter and unhide it in the found letters
 | ||
|  |     :choosed_word: the original word | ||
|  |     :letter: the letter to unhide | ||
|  |     :found_letters: the current found letter | ||
|  |     :returns: found letter with unhiden letters | ||
|  |     """
 | ||
|  |     ret = '' | ||
|  |     for i in range(len(choosed_word)): | ||
|  |         if letter in choosed_word[i]: | ||
|  |             ret += letter | ||
|  |         else: | ||
|  |             ret += found_letters[i] | ||
|  |     return ret | ||
|  | 
 | ||
|  | 
 | ||
|  | def draw(life, word): | ||
|  |     """draw the main screen with hangman, life remaining and word with * on unknown letters
 | ||
|  |     :life: int of life remaining | ||
|  |     :word: current word with * on unknown letters and other letters on found | ||
|  |     """
 | ||
|  |     clear() | ||
|  |     print(life) | ||
|  |     hangman(life) | ||
|  |     print(word) | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == "__main__": | ||
|  |     print("your score is", hangman_start(0)) | ||
|  | 
 |