73 lines
2.2 KiB
Python
73 lines
2.2 KiB
Python
# hangman.py
|
|
|
|
import random
|
|
|
|
def get_secret_word(word_file="/usr/share/dict/words"):
|
|
with open(word_file) as f:
|
|
good_words = []
|
|
for i in f:
|
|
i = i.strip()
|
|
if len(i) <= 6:
|
|
continue
|
|
if not i.isalpha():
|
|
continue
|
|
if i[0].isupper():
|
|
continue
|
|
good_words.append(i)
|
|
return random.choice(good_words)
|
|
|
|
def get_masked_word(word_file):
|
|
mask_word="*" * len(word_file)
|
|
return mask_word
|
|
|
|
def type_guess_word(word_file, guess_word, guessed_line):
|
|
if guess_word in word_file:
|
|
x = 0
|
|
for i in word_file:
|
|
if i == guess_word:
|
|
guessed_line = guessed_line [0:x] + guess_word + guessed_line[x+1:]
|
|
x = x+1
|
|
else:
|
|
print("\n\033[1;31;40m Pudlo\n\033[1")
|
|
return guessed_line
|
|
|
|
def user_input(input=input):
|
|
letter = input(" Podaje litere:\n\033[1")
|
|
return letter
|
|
|
|
|
|
def n_main():
|
|
print ("Welcome.")
|
|
s_word =(get_secret_word())
|
|
guessed_line=(get_masked_word(s_word))
|
|
print(get_masked_word(s_word))
|
|
a =True
|
|
tries=10
|
|
guess_word_list = []
|
|
while a:
|
|
if guessed_line == s_word:
|
|
print("\n\033[1;33;40m Gratulacje. Wygrales!\033[1")
|
|
break
|
|
print("\n\033[1;31;40m Pozostalo prob: {}\033[1".format(tries))
|
|
guess_word = user_input()
|
|
if guess_word in guess_word_list:
|
|
print("\n\033[1;31;40m Podano wczesniej.\033[1")
|
|
continue
|
|
if guess_word.isdigit():
|
|
print("\n\033[1;31;40m Cyfry sa niedozwolone!\033[1")
|
|
continue
|
|
if len(guess_word) != 1:
|
|
print("\n\033[1;31;40m Dopusczalne tylko pojedyncze znaki.\n\033[1")
|
|
continue
|
|
guess_word_list.append(guess_word)
|
|
guessed_line = type_guess_word(s_word, guess_word,guessed_line)
|
|
print (guessed_line)
|
|
print("\n\033[1;32;40m Podane litery: {}\033[1".format(guess_word_list))
|
|
tries = tries-1
|
|
if (tries < 1):
|
|
a= False
|
|
print("\n\033[1;30;47m Nieodgadniete slowo: {} \n\n\033[1".format(s_word))
|
|
|
|
if __name__ == "__main__":
|
|
n_main()
|