本文整理汇总了Python中schedule.Schedule.advance方法的典型用法代码示例。如果您正苦于以下问题:Python Schedule.advance方法的具体用法?Python Schedule.advance怎么用?Python Schedule.advance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类schedule.Schedule
的用法示例。
在下文中一共展示了Schedule.advance方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Npc
# 需要导入模块: from schedule import Schedule [as 别名]
# 或者: from schedule.Schedule import advance [as 别名]
class Npc(object):
SLEEP_DURATION = 7 * 60
DEFAULT_FOOD_CONSUMPTION = 1 #amount of food needed per unit of time (now minute...)
def __init__(self, occupation, name="Unknown"):
self.occupation = occupation
self.occupation.npc = self
self.schedule = Schedule()
#TODO: Cannot think... just advance schedule so that it is already done when Advance is called the first time...
self.schedule.advance(Schedule.MAX_TIME)
self.possession = Possession()
self.hungerLevel = 24 * 60 #enough for one day
self.food_consumption = Npc.DEFAULT_FOOD_CONSUMPTION
self.alive = True
self.strategy = None
self.city = None
self.x = 100
self.y = 100
self.home_x = 0
self.home_y = 0
self.name = name
def print_status(self):
if not self.alive:
print "Npc is DEAD!"
print "Npc (" + str(self.occupation) + ") has " + str(self.possession.money) + " money, owns:"
for pos in self.possession.resources:
print pos
#TODO: How to handle time advancing. Now advancing goes fine if the time interval is smalles possible.
#If the interval is increased, first schedule is advanced and then food. This leads to not wanted scenarios
#where npc can do work without food.
def advance(self, time):
while (time > 0):
if not self.alive:
return
#Day is completed, create new schedule
if (self.schedule.is_done()):
self.create_schedule()
timeLeft = self.schedule.advance(time)
self._consume_food(time - timeLeft)
time = timeLeft
def create_schedule(self):
self.schedule = Schedule()
if self.strategy == None:
self._add_mandatory_actions()
self.occupation.add_default_schedule(self, self.possession)
else:
self._add_mandatory_actions()
self.strategy.create_schedule()
def _consume_food(self, time):
while (time > 0):
if (self.hungerLevel <= 0):
foods = self.possession.get_foods()
if len(foods) == 0:
self.alive = False
print "NPC (" + str(self.occupation) + ") died from hunger!"
return
#just eat the first thing from the inventory...
self.possession.destroy_resource(foods[0])
self.hungerLevel += foods[0].NUTRITIONAL_VALUE
consumedAmount = min(time, self.hungerLevel)
self.hungerLevel -= consumedAmount * self.food_consumption
time -= consumedAmount
def _add_mandatory_actions(self):
self.schedule.add_action(Action(self, "Sleep", Npc.SLEEP_DURATION))