66 lines
1.5 KiB
Python
66 lines
1.5 KiB
Python
bg_alphabet = "абвгдежзийклмнопрстуфхцчшщъьюя"
|
|
|
|
BLANK = '_'
|
|
MOVE_SEP = '.................................'
|
|
|
|
WIN_MESSAGE = "WIN"
|
|
LOSS_MESSAGE = "LOSE"
|
|
|
|
HANG_STAGES = [[],
|
|
["|"],
|
|
["Г"],
|
|
["Го"],
|
|
["Го", " |"],
|
|
["Го", "/|"],
|
|
["Го", "/|\\"],
|
|
["Го", "/|\\", "/"],
|
|
["Го", "/|\\", "/ \\"],
|
|
]
|
|
|
|
|
|
def generate_hint(word, guesses):
|
|
is_win = True
|
|
reveals = []
|
|
for pos, character in enumerate(word):
|
|
if pos == 0 or pos == len(word) - 1:
|
|
reveals += character
|
|
elif character in guesses:
|
|
reveals += character
|
|
else:
|
|
is_win = False
|
|
reveals += BLANK
|
|
return ' '.join(reveals).upper(), is_win
|
|
|
|
|
|
def print_state(state):
|
|
for line in HANG_STAGES[state]:
|
|
print(line)
|
|
|
|
|
|
def main():
|
|
word = input("word >")
|
|
guesses = set()
|
|
state = 0
|
|
while True:
|
|
hint, is_win = generate_hint(word, guesses)
|
|
print(hint)
|
|
print_state(state)
|
|
if is_win:
|
|
print(WIN_MESSAGE)
|
|
break
|
|
while True:
|
|
guess = input("guess >")
|
|
if guess in bg_alphabet:
|
|
break
|
|
if guess not in word and guess not in guesses:
|
|
state += 1
|
|
if state > len(HANG_STAGES):
|
|
print(LOSS_MESSAGE)
|
|
break
|
|
guesses.add(guess)
|
|
print(MOVE_SEP)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|