Найти в Дзене
Vlad Г.

Делаем программу на Python для раздачи ролей в карточной игре Мафия. Сложность кода 3/10

Оглавление

Всем привет! Сегодня мы сделаем программу для раздачи ролей в карточной игре Мафия.

Объясняю:

Допустим играют 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])

Тесты.

-2

5 игроков, среди них есть 1 мафия, доктор, шериф и мирные жители.

Все как надо!

-3

Те же условия. Результат другой! Рандом хорошо работает!

Спасибо за внимание, пока!

Наука
7 млн интересуются