当前位置: 首页>>代码示例>>Python>>正文


Python Record.record_monthly_event方法代码示例

本文整理汇总了Python中record.Record.record_monthly_event方法的典型用法代码示例。如果您正苦于以下问题:Python Record.record_monthly_event方法的具体用法?Python Record.record_monthly_event怎么用?Python Record.record_monthly_event使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在record.Record的用法示例。


在下文中一共展示了Record.record_monthly_event方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: Forest

# 需要导入模块: from record import Record [as 别名]
# 或者: from record.Record import record_monthly_event [as 别名]

#.........这里部分代码省略.........
            entity.on_lumberjack_mawed = self.on_lumberjack_mawed
        elif (type(entity) == Lumberjack):
            entity.on_lumber_collected = self.on_lumber_collected
        elif (type(entity) == Tree):
            entity.on_spawn = self.on_spawned_tree
            entity.on_change_tree_type = self.on_change_tree_type

    def add_entity(self, entity):
        self.all_entities.add(entity)
        self.population[type(entity)].add(entity)

    def add_pending_entity(self, entity):
        """Since we'll be adding entities during a list comprehension,
        we need to store those new entities somewhere briefly."""
        self.pending_entities.add(entity)

    def on_change_tree_type(self, tree, old_type, new_type):
        self.statistics.log_all(old_type.long_name + " became " + new_type.long_name, 1)

    def on_lumber_collected(self, lumberjack, quantity): 
        self.statistics.log_all('lumber collected', quantity)

    def on_lumberjack_mawed(self, bear, lumberjack):
        self.statistics.log_all('lumberjacks mawed', 1)

    def on_spawned_tree(self, tree):
        self.add_pending_entity(tree)
        self.statistics.log_all("new Saplings created", 1)

    def kill_random_entity(self, entity_type):
        if len(self.population[entity_type]) > 0:
            for entity in random.sample([entity for entity in self.population[entity_type] if entity.alive], 1):
                entity.alive = False

    def get_total_of_entity(self, entity_type):
        return len([entity for entity in self.population[entity_type] if entity.alive])

    def tick(self):
        self.statistics['month'].clear()
        # Lumberjacks should move before bears so that bears stop where 
        # lumberjacks have stopped
        [[entity.move() for entity in self.population[entity_type]] for entity_type in [Lumberjack, Bear]]
        [entity.action() for entity in self.all_entities]
        [self.add_entity(new_entity) for new_entity in self.pending_entities]
        self.pending_entities.clear()
        for statistic in self.statistics['month'].keys():
             self.record.record_monthly_event(self.current_tick, "[{0}] {1}".format(self.statistics['month'][statistic], statistic))
        if self.current_tick % 12 == 0:
             self.annual_review()
        self.remove_dead_entities()
        self.current_tick += 1

    def annual_review(self):
        self.record.record_yearly_event(self.current_tick, 
                                        "Forest has {0} Trees, {1} Saplings, {2} Elder Trees, {3} Lumberjacks, and {4} Bears."\
                                        .format(len([tree for tree in self.population[Tree] if tree.alive and tree.tree_type == Tree.normal]),
                                                len([tree for tree in self.population[Tree] if tree.alive and tree.tree_type == Tree.sapling]),
                                                len([tree for tree in self.population[Tree] if tree.alive and tree.tree_type == Tree.elder_tree]),
                                                self.get_total_of_entity(Lumberjack),
                                                self.get_total_of_entity(Bear)))
        maw_accidents = self.statistics['year']['lumberjacks_mawed']
        if maw_accidents > 0:
            self.record.record_yearly_event(self.current_tick, "1 Bear captured by zoo.")
            self.kill_random_entity(Bear)
        else:
            self.record.record_yearly_event(self.current_tick, "1 new Bear added.")
            self.spawn_entities(Bear, [node for node in self.get_all_nodes() if not node.has(Bear)], 1)
        total_lumber_collected = self.statistics['year']['lumber_collected']
        # Shouldn't count dead lumberjacks, and we won't have removed them at this point
        # Dead lumberjacks harvest does count
        total_lumberjacks = self.get_total_of_entity(Lumberjack)
        if total_lumber_collected > total_lumberjacks:
            new_lumberjack_quantity = int(total_lumber_collected/10)
            self.spawn_entities(Lumberjack, 
                                [node for node in self.get_all_nodes() if not node.has(Lumberjack)],
                                new_lumberjack_quantity)
            self.record.record_yearly_event(self.current_tick, "{0} pieces of lumber harvested {1} new Lumberjack hired."\
                                                               .format(total_lumber_collected, 
                                                                       new_lumberjack_quantity))
        elif total_lumber_collected < total_lumberjacks:
            if total_lumberjacks > 1:
                self.kill_random_entity(Lumberjack)
                self.record.record_yearly_event(self.current_tick, "1 Lumberjack fired.")
        if (self.get_total_of_entity(Lumberjack) == 0):
            self.record.record_yearly_event(self.current_tick, "No Lumberjacks, 1 Lumberjack hired.")
            self.spawn_entities(Lumberjack, [node for node in self.get_all_nodes() if not node.has(Lumberjack)], 1)
        self.statistics['year'].clear()

    def remove_dead_entities(self):
        dead_entities = set([entity for entity in self.all_entities if not entity.alive])
        [entity.node.remove_entity(entity) for entity in dead_entities]
        for entity_type in self.population.keys():
            self.all_entities -= dead_entities
            self.population[entity_type] -= dead_entities

    def has_trees(self):
        return len(self.population[Tree]) > 0

    def __repr__(self):
        return '\n'.join([''.join([node.short() for node in row]) for row in self.layout])
开发者ID:speedybees,项目名称:dailyprogrammer-165-the-forest,代码行数:104,代码来源:forest.py


注:本文中的record.Record.record_monthly_event方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。