コード例 #1
0
ファイル: Observer.py プロジェクト: yselivonchyk/ViZDoom
    def handle(self, dmap, a):
        min_d = 2
        center_blocked = ac.central_dist(dmap) == min_d
        next_left = ac.column_min_dist(dmap, 0) > min_d
        next_right = ac.column_min_dist(dmap, -1) > min_d

        # save visual data
        self.map.see_offset((0, 1), blocked=center_blocked)
        if next_left:
            self.map.see_offset((-1, 1))
        if next_right:
            self.map.see_offset((1, 1))
        self.map.print_current()
        print self.map.get_view((-1, 1)), self.map.get_view((1, 1)), next_left, next_right, self.map.yaw

        # turn to the next unobserved point
        angle = 0
        current_offset = (0, 1)
        for i in range(4):
            current_offset = mp.MapTracker.compensate_yaw(current_offset, 90)
            angle += 90
            if self.map.get_view(current_offset) == mp.MapTracker.Unknown:
                self.move = ac.turn_left(ac.empty(), arg=angle)
                return
        self.finished = True
        self.move = ac.empty()
コード例 #2
0
ファイル: RunInLine.py プロジェクト: yselivonchyk/ViZDoom
    def handle(self, dmap, a):
        if self.delay_loop > 0:
            return

        if self.state == 0:
            pass
        elif self.state == 1:
            dist = int(ac.central_dist(dmap))
            self.width = dist
            print('DIST:', dist)
        elif self.state == 2:
            print('second d',  ac.central_dist(dmap))
            self.width += ac.central_dist(dmap)
            self.position = ac.central_dist(dmap)
        else:
            self.direction = self.direction if self.position != self.width and self.position != 0 else not self.direction
        if self.state < 3:
            self.state += 1
コード例 #3
0
ファイル: RunInCircle.py プロジェクト: yselivonchyk/ViZDoom
 def handle(self, dmap, a):
     if not self.direction_selected:
         dist = ac.central_dist(dmap)
         if dist < self.min_dist:
             self.min_dist = dist
             self.min_angle = self.directions_checked
     else:
         self.finished = self.turn >= TOTAL
         if self.turn >= TOTAL:
             exit(0)
コード例 #4
0
ファイル: RunIn8.py プロジェクト: yselivonchyk/ViZDoom
 def handle(self, dmap, a):
     if not self.direction_selected:
         dist = ac.central_dist(dmap)
         if dist < self.min_dist:
             self.min_dist = dist
             self.min_angle = self.angle