89 lines
4.5 KiB
Python
89 lines
4.5 KiB
Python
|
|
# Основная функция.
|
|||
|
|
# для возврата значений ошибок текста и самого вывода баллов
|
|||
|
|
# буду использовать get_coords для создания возврата значений в кортеж
|
|||
|
|
def scrabble(text):
|
|||
|
|
|
|||
|
|
#=====
|
|||
|
|
# Обьявление переменных
|
|||
|
|
#=====
|
|||
|
|
|
|||
|
|
# Словарь, слово: балл
|
|||
|
|
alphabet = {
|
|||
|
|
# English alphabet
|
|||
|
|
'a': 1, 'e': 1, 'i': 1, 'o': 1, 'l': 1, 'n': 1, 's': 1, 't': 1, 'r': 1,
|
|||
|
|
'd': 2, 'g': 2,
|
|||
|
|
'b': 3, 'c': 3, 'm': 3, 'p': 3,
|
|||
|
|
'f': 4, 'h': 4, 'w': 4, 'y': 4,
|
|||
|
|
'k': 5,
|
|||
|
|
'j': 8, 'x': 8,
|
|||
|
|
'q': 10, 'z': 10,
|
|||
|
|
|
|||
|
|
# Russian alphabet
|
|||
|
|
'а': 1, 'в': 1, 'е': 1, 'и': 1, 'н': 1, 'о': 1, 'с': 1, 'т': 1,
|
|||
|
|
'д': 2, 'к': 2, 'л': 2, 'м': 2, 'п': 2, 'у': 2, 'р': 2, # "р" не было, на рандом добавил в 2 баллы.
|
|||
|
|
'б': 3, 'г': 3, 'ё': 3, 'ь': 3, 'я': 3,
|
|||
|
|
'й': 4, 'ы': 4,
|
|||
|
|
'ж': 5, 'з': 5, 'ч': 5, 'ц': 5,
|
|||
|
|
'ш': 8, 'э': 8, 'ю': 9,
|
|||
|
|
'ф': 10, 'щ': 10, 'ъ': 10}
|
|||
|
|
|
|||
|
|
text = text.replace(' ', '') # убираю пробелы
|
|||
|
|
text = text.lower() # делаю все символы низкими
|
|||
|
|
score = 0 # нулевой счетчик баллов
|
|||
|
|
symb_err = [] # инициализация списка для символов не в алфавите
|
|||
|
|
|
|||
|
|
# =====
|
|||
|
|
# Главная логика
|
|||
|
|
# =====
|
|||
|
|
|
|||
|
|
for symbol in text:
|
|||
|
|
if symbol in alphabet:
|
|||
|
|
score += alphabet[symbol]
|
|||
|
|
else:
|
|||
|
|
symb_err.append(symbol)
|
|||
|
|
return score
|
|||
|
|
|
|||
|
|
# Функция мультиплеера
|
|||
|
|
# Внутри встроена одиночная игра
|
|||
|
|
# и интерактив ввиде выхода, выбора игры и ввода игроков
|
|||
|
|
def parral_game(players):
|
|||
|
|
players = players.split() # преобразование в список.
|
|||
|
|
print(len(players))
|
|||
|
|
if len(players) == 1: # Если игрок один то вопрос переходить ли на одиночный режим
|
|||
|
|
print("- У вас один игрок\n- Выбираете режим одиночной?")
|
|||
|
|
print("Yes(1), No(0)")
|
|||
|
|
subm = int(input(":: "))
|
|||
|
|
if subm == 1: # Если да то начинается одиночная игра
|
|||
|
|
onepl_game = input("Введите текст: ")
|
|||
|
|
resopl = scrabble(onepl_game)
|
|||
|
|
print(f"Введенное слово: {onepl_game}, счет: {resopl}")
|
|||
|
|
exit()
|
|||
|
|
if subm == 0: # Если нет то опрашивается имя игроков
|
|||
|
|
subm_name = input("Введите снова имена игроков: ")
|
|||
|
|
subm_name = subm_name.split() # преобразую в список
|
|||
|
|
subm_name = players # называю его как основной входящий аргумент функции
|
|||
|
|
if len(players) > 1: # Мультиплеер
|
|||
|
|
score_list = [] # инициализация игрового списка, индекс игрока == индекс статистики
|
|||
|
|
for rond in range(1,10+1): # создание цикла на раунд
|
|||
|
|
print(f"{rond} round")
|
|||
|
|
for player_index in range(len(players)): # создания цикла на кол-во игроков
|
|||
|
|
print(f"Ход {players[player_index]}")
|
|||
|
|
input_text = input(":: ")
|
|||
|
|
res = scrabble(input_text)
|
|||
|
|
score_list.append(res)
|
|||
|
|
if score_list[player_index] > 0:
|
|||
|
|
score_list[player_index] += res
|
|||
|
|
print(f"Очки :: {score_list[player_index]}")
|
|||
|
|
print("--след--")
|
|||
|
|
score_top = max(score_list) # определение победителя
|
|||
|
|
score_top_index = score_list.index(score_top) # определение имени победителя
|
|||
|
|
print(f"Выйграл {players[score_top_index]}, результат {score_top}")
|
|||
|
|
print(f"Список игроков:")
|
|||
|
|
for num_player in range(len(players)): # создания цикла на вывод списка играющих, не по сортировке
|
|||
|
|
print(f"- {num_player}: {players[num_player]}, {score_list[num_player]}")
|
|||
|
|
else: # Выход из игры
|
|||
|
|
print("!Не веденны игроки, выход.")
|
|||
|
|
exit()
|
|||
|
|
|
|||
|
|
parral_game(input("- Для выхода из программы нажмите энтер без текста\n- Введите кол-во игроков: "))
|