예제 #1
0
    def _generate_world(self):
        self.alive = True
        self.gold_picked = False
        self.pos = (-1, 0)
        self.facing = facing_list['right']
        self.visited = set()
        self.danger = set()
        self.safe = set()
        self.fringe = set()
        self.plan = [action_list['forward']]
        
        self.world = numpy.zeros((4, 4, 5))
        self.known_world = numpy.ones((4, 4, 5))
        self.kb = WumpusKB()

        # choosing a sector for Gold
        i, j = self._random_ij()
        self.world[i][j][1] = 2

        # choosing a sector for Wumpus
        i, j = self._random_ij()
        self.world[i][j][4] = 2
        # generating Stench
        for pos in neighbors(i, j):
            self.world[pos[0]][pos[1]][3] = 2

        for i in range(4):
            for j in range(4):
                if not ((i == 0) and (j == 0)):
                    
                    # generating Pit for this sector with a
                    # Probability of 0.2
                    if random.randint(1, 10) <= 2:
                        self.world[i][j][2] = 2

                        # generating Breeze
                        for pos in neighbors(i, j):
                            self.world[pos[0]][pos[1]][0] = 2

        ev = event.WorldBuiltEvent(self.world)
        self.ev_manager.post(ev)