Если вы обнаружите, что меняете вещи, просто чтобы увидеть, происходит ли что-то другое, это часто указывает на то, что у вашего подхода есть какая-то проблема, и может помочь резервное копирование для более широкого обзора.
В этом случаевы отслеживаете несколько различных значений для владельца, когда вам, вероятно, будет лучше с одним объектом, который может обрабатывать свое собственное имя и т. д., если вам понадобятся эти вещи.
Я думаю, что вы 'Я немного запутался в том, как работают операторы сравнения.Ваш первый оператор if
проверяет существование из MeditaranianAve.ownername
и затем равен ли 1009 * "Player2".Если вы хотите проверить, равны ли они оба этому значению:
if MeditaranianAve.ownername == BalticAve.ownername == "Player2":
# ...
Тем не менее, вы можете многое исправить, отслеживая большую часть своего состояния с помощью объектов, которые могут иметь свои собственные методы.Таким образом, вы можете поместить логику, относящуюся к определенному типу, на свое место.
Это может быть место для начала.Он добавляет некоторую реляционную логику, которая может быть незнакомой, но, пройдя по ней, вы увидите общий подход к связанным моделям данных и разделение проблем для типов данных в Python.
class PropertyGroup(object):
def __init__(self, name):
self.name = name
self.properties = []
def fully_owned_by(self, player):
for property in self.properties:
if property.owner != player:
return False
return True
class Property(object):
def __init__(self, name, group):
self.name = name
# This assumes all properties are part of a group; otherwise,
# default to None and check whether this exists before trying
# to access it.
self.group = group
group.properties.append(self)
self.owner = None
self.house_count = 0
def houses_available(self):
return self.house_count < 5
def purchase_house(self):
# This is where you'd check to make sure the owner exists and
# can purchase a house, then implement that logic.
pass
class Player(object):
def __init__(self, name):
self.name = name
player = Player('Maddie')
group = PropertyGroup('B&M')
baltic = Property('Baltic Avenue', group)
mediterranean = Property('Mediterranean Avenue', group)
baltic.owner = player
# Since Baltic but not Mediterranean is owned by the player, this
# check will be False.
if baltic.group.fully_owned_by(player) and baltic.houses_available():
print('Prompt for house purchase')
else:
print('No dice.')
mediterranean.owner = player
# Now that both are player-owned, this is True. Note that baltic.group,
# mediterranean.group, and our local variable group all reference the
# same group object, so you could call that method on any of them here.
if mediterranean.group.fully_owned_by(player) and mediterranean.houses_available():
print('Prompt for house purchase')
else:
print('No dice.')