Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2021 00:00:08

FLiN
Зарегистрирован: 2021-11-26
Сообщения: 3
Репутация: +  -1  -
Профиль   Отправить e-mail  

ООП классы в питоне для игры "Мафия"

Доброе время суток!
Пишу игровое приложения “Мафия” и столкнулся с проблемой ООП.
Не могу понять, как сделать в функции “def is_dead” удалить объект\игрока
И где я должен прописать речи игроков, ночь, отстрелы и проверки.

Просьба объяснить логику написания ооп
Спасибо за помощь


 class Player():
    def __init__(self, user_name, user_box, user_rol):
        self.user_name = user_name # Имя игрока
        self.user_box = user_box # Место за игровым столом
        self.user_rol = user_rol # Роль игрока
        self.user_life = 0 # Переменная для проверки жив игрок за столом или нет
        def is_dead(self): # Функция смерти
            self.user_life = 1
class Game_Mafia():
    def __init__(self):
        self.rols = rols # Дублирую роли из списка
        random.shuffle(self.rols) # Шафлю роли
    def create_player_and_take_rols(self): 
        for i in range(len(lobby)):
            self.player = [Player(lobby[i], i, self.rols[i])] # Создание каждого игрока

Офлайн

#2 Ноя. 27, 2021 00:32:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

ООП классы в питоне для игры "Мафия"

Наличия классов недостаточно для ООП.

FLiN
Просьба объяснить логику написания ооп
У тебя ООП даже близко не наблюдается. Если ты думаешь, что для ООП надо слово class написать, то ты глубоко заблуждаешься.

Как ребёнок считает себя космонавтом, надев отцовскую каску мотоциклиста, или строителем, построив у себя в комнате из подушек сложный, но уютный домик, так же и ты считаешь свой код ООПшным, написав просто два класса и, может быть даже, впоследствии инстанциируя их. Никакого отношения это к ООП не имеет.

ООП появляется там, где присутствует как абстрагирование, так и полиморфизм. Эти вещи и дают профит как раз. ООП не просто так используется ради моды типа, как многие несведущие считают. Пока у тебя полиморфизма нет (для которого необходимо наследование, которое берётся из иерархии наследования классов), программирование с использованием классов и объектов этих классов является просто программированием с абстрактными типами данных (АТД-программирование), которое ничего особого из себя не представляет.

А ООП - это сложная тема, и она не для новичков. А те, кто косят под ООПшных программистов, выглядят, как дети-космонавты в мотоциклетных касках. То есть это только для других детей они крутые. Для настоящих космонавтов или просто взрослых даже они смешны и вызывают лишь милую улыбку.



Отредактировано py.user.next (Ноя. 27, 2021 00:37:31)

Офлайн

#3 Ноя. 27, 2021 17:47:51

FLiN
Зарегистрирован: 2021-11-26
Сообщения: 3
Репутация: +  -1  -
Профиль   Отправить e-mail  

ООП классы в питоне для игры "Мафия"

Up, может кто поможет?

Офлайн

#4 Ноя. 29, 2021 10:54:04

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

ООП классы в питоне для игры "Мафия"

FLiN
Давайте начнем с объявления типов. Вам нужно для начала вообще без всякого наполнения кодом определить какими сущностями будет оперировать программа. Вот например у вас есть некая переменная user_rol, что это такое, какого оно типа? Наверное это некий алгебраический тип, то есть сумма всех возможных ролей? Тогда создайте соответствующий класс-перечисление. И так для всех используемых понятий. Потом вы должны будете определиться с ответственностью ваших типов, то есть наделить каждый из них набором присущих сугубо этому типу действий, таким образом, чтобы ответственности не пересекались и в то же время классы не были слишком универсальными. Это называется принцип единой ответственности. Потом наполняйте свои классы зависимостями. Это означает, что какие-то классы будут использовать другие классы в своей внутренней структуре. Зависимости должны быть как можно менее связными, то есть если класс А входит как зависимость в класс Б, то изменения в классе А не должны приводить к необходимости изменять код класса Б и наоборот.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version