def manual(self): """ Сколько чего продать/купить """ debet = data.money credit = 0 act.erase_line() say.line(" (+) Покупайте / Продавайте (-):") say.word("Золото (кг), земля (га), зерно (т), рабочие, солдаты (чел)? ") answer = re.search(r"""(?P<gold>[-+]?\d+) # 1 золото ([^0-9+-]+)? # delimiter (?P<land>[-+]?\d+)? # 3 земля ([^0-9+-]+)? # delimiter (?P<corn>[-+]?\d+)? # 5 зерно ([^0-9+-]+)? # delimiter (?P<peasant>[-+]?\d+)? # 7 рабочие ([^0-9+-]+)? # delimiter (?P<soldier>[-+]?\d+)? # 9 солдаты """, input().strip(), re.VERBOSE) if answer: # проверить достаточность товаров и рассчитать предварительный итог for resource in data.resources.keys(): value = int(answer.group(resource) or 0) if value > 0: credit += value * data.prices[resource] elif value < 0: if abs(value) > data.resources[resource]: act.erase_line(2) print("Вы продаёте товара больше, чем у вас есть!") return not ask.yesno("Повторить?") else: debet += abs(value) * data.prices[resource] # проверка достаточности денег if debet - credit < 0: act.erase_line(2) print("Сделка расторгнута - нехватает {:>10n} руб.".format(debet - credit)) return not ask.yesno("Повторить?") else: # всё верно - завершить сделку for resource in data.resources.keys(): data.money = debet - credit value = int(answer.group(resource) or 0) data.resources[resource] += value return True else: return False
def start(self): """docstring for start""" complete = False say.line("\n") while not complete: act.erase_line(2) self.broker_wants = round(data.money * random.uniform(0.2, 0.99)) say.line(" Маклер просит {:>10n} руб.".format(self.broker_wants)) if ask.yesno("Желаете использовать маклера?"): complete = self.broker() continue act.erase_line(2) if ask.yesno("Желаете сами торговать?"): complete = self.manual() else: act.erase_line() break else: act.clear_screen() data.print_big_table()
def start(self): """docstring for start""" self.min_for_food = data.resources['peasant'] + data.resources['soldier'] + 1 self.min_for_seed = min(data.resources['peasant'], data.resources['land']) if ask.yesno("Желаете сами распорядиться запасами зерна?") \ or self.min_for_food + self.min_for_seed > data.resources['corn']: self.manually() msg = "Остаток зерна в амбарах: {:>10n} тонн" else: self.automatically() msg = "Излишки зерна в амбарах: {:>10n} тонн" data.resources['corn'] -= data.corn_for_food data.resources['corn'] -= data.corn_for_seed say.line(msg.format(data.resources['corn']))