예제 #1
0
    def set_size(self, size):
        # only let callers of the same type as me set my size
        my_name = callername.caller_name(level = 0)
        # get back module.class.method, match just the invoking class
        my_name_parts = my_name.split(".")
        my_class = my_name_parts[1]
        pattern = r"\." + my_class + r"\."
        callername.caller_name_match(pattern, 
            abort = True, debug = agentsim.debug.get(256))

        # ok, we can our size, but not too big
        super(MoveEnhanced, self).set_size(min(size, self.get_max_size()))

        # when you set your size, also change the move limit
        # nominal move limit is 10, range it from 5 to 15

        min_size = self.get_min_size()
        adjust = 10 * (
            (self.get_size() - min_size) / (self.get_max_size() - min_size) )

        if my_class == "Normal":
            # normals are slow when small, fast when big
            self._move_limit = 5 + adjust
        elif my_class == "Zombie":
            # normals are fast when small, slow when big
            self._move_limit = 15 - adjust
예제 #2
0
    def zombie_alert(self, x_dest, y_dest):
        # ignore any request not from a defender!
        caller_name = callername.caller_name()

        if not re.search(r"\.Defender\.", caller_name):
            raise Exception("zombie alert on {} called by non-Defender {}".format(self.get_name(), caller_name))

        if agentsim.debug.get(32):
            print("zombie_alert to ({}, {})".format( self.get_name(), x_dest, y_dest))

        # remember where the alert told us to go so that we can use this
        # information when we compute the next move
        self._zombie_alert_args = (x_dest, y_dest)
예제 #3
0
파일: normal.py 프로젝트: elake/assignment4
    def zombie_alert(self, x_dest, y_dest):
        """
        This code was provided in class, and left here for completeness' sake,
        but is never actually called and can be ignored.
        """
        # ignore any request not from a defender!
        caller_name = callername.caller_name()

        if not re.search(r"\.Defender\.", caller_name):
            raise Exception("zombie alert on {} called by non-Defender {}".format(self.get_name(), caller_name))

        if agentsim.debug.get(32):
            print("zombie_alert to ({}, {})".format( self.get_name(), x_dest, y_dest))

        # remember where the alert told us to go so that we can use this
        # information when we compute the next move
        self._zombie_alert_args = (x_dest, y_dest)