-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgallowspole.py
More file actions
64 lines (53 loc) · 2.53 KB
/
Copy pathgallowspole.py
File metadata and controls
64 lines (53 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Реализация игры "Виселица" на Питоне
# https://github.com/PoorMouse/GallowsPole
from random import randint
# Макет виселицы
gallowsPole = ("|", "|\\", "|\n|\\", "___\n|\n|\\", "___\n| \uc6c3\n|\\")
# Формируем алфавит
abcLowBorder = ord('А')
abcHighBorder = ord('А') + 32
alphabet = [chr(i) for i in range(abcLowBorder, abcHighBorder)]
# Задаем список и выбираем из него слово
words = ["крокодил", "редакция", "семья", "инструмент", "эксплуатация", "производитель", "обстоятельство", "телевидение", "животное", "соглашение"]
chosenWord = words[randint(0, len(words) - 1)]
wordLength = len(chosenWord)
# Прочее (паттерн выбранного слова, перечень использованных букв, счетчики)
pattern = ["_" for i in range(wordLength)]
usedLetters = []
counter = 0
errors = 0
while True:
print(" ".join(alphabet))
print(" ".join(pattern).capitalize())
letter = input("Введите букву: ").lower()
print()
# Прверяем введенную букву на принадлженость русскому алфавиту
if ord(letter.upper()) < abcLowBorder or ord(letter.upper()) > abcHighBorder:
print("Допустимо использовать только буквы русского алфавита.\n")
continue
# Смотрим, использовалась ли буква ранее, чтобы избежать повторного ввода
if letter not in usedLetters:
usedLetters.append(letter)
alphabet.remove(letter.upper())
else:
print("Такая буква уже называлась.\n")
continue
# Считаем количество ошибок и рисуем виселицу
if letter not in chosenWord:
print(gallowsPole[errors])
errors += 1
if errors == len(gallowsPole):
print("Вы проиграли.")
print(f"Загаданное слово: {chosenWord}.")
break
continue
# Ищем позицию угаданной буквы и открываем ее
for i in range(wordLength):
if chosenWord[i] == letter:
pattern[i] = letter
counter += 1
# Победа?
if counter == wordLength:
print(" ".join(pattern).capitalize())
print("Вы выиграли!")
break