def pay_tax(self, game_id, user_id): player = PlayerProvider().get_player(game_id=game_id, user_id=user_id) if self.__player_exists(player): card = CardProvider().get_card_with_position(player.position) if card != None: if PropertyProvider().check_if_exist(game_id, card.id): property = PropertyProvider().get_property_with_card( game_id, card.id) if property.player.user_id != user_id: charge = ChargeProvider().get_charge(card.charge_id) player2 = PlayerProvider().get_player( game_id=game_id, user_id=property.player.user_id) tax_to_pay = charge.get_charge_for_amount_of_buildings( property.buildings) print('1p old balance: ' + str(player.balance)) player.update_balance(-tax_to_pay) print('1p new balance: ' + str(player.balance)) print('2p old balance: ' + str(player2.balance)) player2.update_balance(tax_to_pay) print('2p new balance: ' + str(player2.balance)) self.status = 1000 return [player, player2], self.status else: self.status = 2000 return None, self.status else: self.status = 2007 return None, self.status else: self.status = 2004 return None, self.status else: self.status = 2000 return None, self.status
def __building_cost(self, user_property): cost = 0 card = CardProvider().get_card(user_property.card_id) if user_property.buildings == 4: cost = card.hotel_cost else: cost = card.apartment_cost return cost
def __buy_building(self, property): owner = PlayerProvider().get_owner(property.id) property.buildings += 1 card = CardProvider().get_card(property.card_id) if property.buildings == 5: owner.balance -= card.hotel_cost elif property.buildings < 5 and property.buildings > 0: owner.balance -= card.apartment_cost
def __sell_building(self, property): owner = PlayerProvider().get_owner(property.id) card = CardProvider().get_card(property.card_id) if property.buildings == 5: property.buildings -= 1 owner.balance += card.hotel_cost elif property.buildings >= 0: property.buildings -= 1 owner.balance += card.apartment_cost
def test_card_provider_returns_no_card(): # GIVEN Proxy() card = CardFactory() Proxy().load(full=True) # WHEN provided_card = CardProvider().get_card_with_position(0) # THEN assert provided_card == None
def get_available_card_to_buy(self, game_id, user_id): player = PlayerProvider().get_player(game_id, user_id) card = CardProvider().get_card_with_position(player.position) if card: if not PropertyProvider().check_if_exist(game_id, card.id): return card, self.status else: self.status = 2006 return None, self.status self.status = 2005 return None, self.status
def test_card_provider_returns_valid_card_when_there_are_more_cards(): # GIVEN Proxy() card = CardFactory() card2 = CardFactory(position=2) card4 = CardFactory(position=4) Proxy().load(full=True) # WHEN provided_card = CardProvider().get_card_with_position(2) # THEN assert provided_card == card2
def buy_property(self, game_id, user_id): player = PlayerProvider().get_player(game_id=game_id, user_id=user_id) if self.__player_exists(player): card = CardProvider().get_card_with_position(player.position) if card != None: if not PropertyProvider().is_property_taken(game_id, card.id): self.status = 1000 property = Property(player_id=player.id, game_id=player.game_id, card_id=card.id) Proxy().propertys_dict[property.id] = property player.update_balance(-card.cost) return player, self.status else: self.status = 2006 else: self.status = 2005 else: self.status = 2002 return None, self.status
def __repurchase(self, property): owner = PlayerProvider().get_owner(property.id) card = CardProvider().get_card(property.card_id) if property.deposited: property.deposited = False owner.balance -= card.deposit_value
def __deposit(self, property): owner = PlayerProvider().get_owner(property.id) card = CardProvider().get_card(property.card_id) if not property.deposited: property.deposited = True owner.balance += card.deposit_value