Всем привет! Сегодня мы сделаем программу для раздачи ролей в карточной игре Мафия.
Объясняю:
Допустим играют 7 человек. 2 из них мафия, 1 доктор, 1 шериф и остальные мирные. Наша задача сделать, чтобы роли раздавались случайно.
Может участвовать минимум 3 человека.
Начнем!
Сначала следует подключить библиотеку random.
import random
Далее объявим нужные нам переменные.
num_of_players = int(input("Введите кол-во игроков : "))
num_of_mafia = int(input("Введите кол-во мафии : "))
roles = []
Немного пояснений.
Мы задаем две переменные с кол-вом игроков и мафий среди них.
Далее мы создаем массив со всеми ролями.
Добавляем к ролям шерифа и доктора:
roles.append("Доктор")
roles.append("Шериф")
Далее надо будет добавить мирных игроков:
for i in range(num_of_players-2-num_of_mafia):
*здесь табуляция*roles.append("Мирный Житель")
Чтобы вычислить кол-во мирных игроков, нам надо и общего кол-ва вычесть кол-во мафии и доктора с шерифом. Полученным числом мы с помощью цикла заполняем массив.
Добавляем мафию:
for i in range(num_of_mafia):
*здесь табуляция* roles.append("Мафия")
Перемешиваем весь массив для получения случайности:
random.shuffle(roles)
И выводим всех игроков с помощью цикла:
for i in range(len(roles)):
*здесь табуляция*print("Игрок " + str(i+1) + " - ", roles[i])
Весь код:
import random
num_of_players = int(input("Введите кол-во игроков : "))
num_of_mafia = int(input("Введите кол-во мафии : "))
roles = []
roles.append("Доктор")
roles.append("Шериф")
for i in range(num_of_players-2-num_of_mafia):
roles.append("Мирный Житель")
for i in range(num_of_mafia):
roles.append("Мафия")
random.shuffle(roles)
for i in range(len(roles)):
print("Игрок " + str(i+1) + " - ", roles[i])
Тесты.
5 игроков, среди них есть 1 мафия, доктор, шериф и мирные жители.
Все как надо!
Те же условия. Результат другой! Рандом хорошо работает!