示例#1
0
 def go_for_food(self):
     food_path =  self.find_path(self.enemy_food)
     mandist = manhattan_dist(self.me.current_pos, self.partner.me.current_pos)
     if mandist <=3 and self.round_index<100:
         distlst = [x for x in self.enemy_food if manhattan_dist(x, self.partner.me.current_pos)>5]
         food_path =  self.find_path(distlst)
     if food_path==None:
         return self.random_move()
     if len(food_path)==0:
         return self.random_move()
     return diff_pos(self.current_pos, food_path.pop())
示例#2
0
    def get_move(self):
        if OurPlayer.talkcounter % 13 == 0:
            self.talk()
        if OurPlayer.talkcounter % 13 == 10:
            self.mess = ""
            self.partner.mess = ""
        OurPlayer.talkcounter += 1
        self.say(self.mess)

        if self.round_index is None:
            self.round_index = 0
        else:
            self.round_index += 1
        self.read_score()


        #switch both players to chase mode, if both are close but on two sides
        en = self.get_closest_eatable_enemy_pos()
        en = False
        if en:
            other_bot = [x for x in self.team_bots if x != self.me][0]
            dist_enemy_to_other_bot = manhattan_dist(other_bot.current_pos, en[0])

            if (en[1] <= 5) and (dist_enemy_to_other_bot <= 5) and (self.get_distance_to_me(other_bot.current_pos) > en[1]):
                self.start_chase()
                if self.chase_count > 5:
                    self.stop_chase()
            else:
                self.stop_chase()

            if self.chase_mode:
                #self.say("Chasemode")
                return self.safe_move(self.attack_move())
            
        if self.me.is_destroyer:
            
            if self.border_mode:
                m1 = self.go_for_border()
                if m1 != stop:
                    next_move = m1
                else:
                    next_move = self.go_for_food()
                    self.border_mode = False
            else:
                next_move = self.go_for_food()
            am = self.attack_move()
            if am and not self.border_mode and len(self.enemy_food) < self.FOOD_MIN:
                next_move = am
                self.say("".join(["I'm going for them, ", self.partner.name, '!!']))
        else:
            next_move = self.go_for_food()
        final_move = self.safe_move(next_move)
        final_pos = tuple([sum(i) for i in zip(final_move,self.current_pos)])
        self.memory.append(final_pos)
        st = list(set(self.memory))
        if len(self.memory)>4 and len(st) <= 2:
            final_move = self.safe_move(next_move, st) 
            self.memory[-1] = final_move
        return self.safe_move(next_move)
示例#3
0
    def test_manhattan_dist(self):
        self.assertEqual(0, manhattan_dist((0, 0), (0, 0)))
        self.assertEqual(0, manhattan_dist((1, 1), (1, 1)))
        self.assertEqual(0, manhattan_dist((20, 20), (20, 20)))

        self.assertEqual(1, manhattan_dist((0, 0), (1, 0)))
        self.assertEqual(1, manhattan_dist((0, 0), (0, 1)))
        self.assertEqual(1, manhattan_dist((1, 0), (0, 0)))
        self.assertEqual(1, manhattan_dist((0, 1), (0, 0)))

        self.assertEqual(2, manhattan_dist((0, 0), (1, 1)))
        self.assertEqual(2, manhattan_dist((1, 1), (0, 0)))
        self.assertEqual(2, manhattan_dist((1, 0), (0, 1)))
        self.assertEqual(2, manhattan_dist((0, 1), (1, 0)))
        self.assertEqual(2, manhattan_dist((0, 0), (2, 0)))
        self.assertEqual(2, manhattan_dist((0, 0), (0, 2)))
        self.assertEqual(2, manhattan_dist((2, 0), (0, 0)))
        self.assertEqual(2, manhattan_dist((0, 2), (0, 0)))

        self.assertEqual(4, manhattan_dist((1, 2), (3, 4)))
示例#4
0
    def test_manhattan_dist(self):
        assert 0 == manhattan_dist((0, 0), (0, 0))
        assert 0 == manhattan_dist((1, 1), (1, 1))
        assert 0 == manhattan_dist((20, 20), (20, 20))

        assert 1 == manhattan_dist((0, 0), (1, 0))
        assert 1 == manhattan_dist((0, 0), (0, 1))
        assert 1 == manhattan_dist((1, 0), (0, 0))
        assert 1 == manhattan_dist((0, 1), (0, 0))

        assert 2 == manhattan_dist((0, 0), (1, 1))
        assert 2 == manhattan_dist((1, 1), (0, 0))
        assert 2 == manhattan_dist((1, 0), (0, 1))
        assert 2 == manhattan_dist((0, 1), (1, 0))
        assert 2 == manhattan_dist((0, 0), (2, 0))
        assert 2 == manhattan_dist((0, 0), (0, 2))
        assert 2 == manhattan_dist((2, 0), (0, 0))
        assert 2 == manhattan_dist((0, 2), (0, 0))

        assert 4 == manhattan_dist((1, 2), (3, 4))
示例#5
0
    def test_manhattan_dist(self):
        self.assertEqual(0, manhattan_dist((0, 0), (0, 0)))
        self.assertEqual(0, manhattan_dist((1, 1), (1, 1)))
        self.assertEqual(0, manhattan_dist((20, 20), (20, 20)))

        self.assertEqual(1, manhattan_dist((0, 0), (1, 0)))
        self.assertEqual(1, manhattan_dist((0, 0), (0, 1)))
        self.assertEqual(1, manhattan_dist((1, 0), (0, 0)))
        self.assertEqual(1, manhattan_dist((0, 1), (0, 0)))

        self.assertEqual(2, manhattan_dist((0, 0), (1, 1)))
        self.assertEqual(2, manhattan_dist((1, 1), (0, 0)))
        self.assertEqual(2, manhattan_dist((1, 0), (0, 1)))
        self.assertEqual(2, manhattan_dist((0, 1), (1, 0)))
        self.assertEqual(2, manhattan_dist((0, 0), (2, 0)))
        self.assertEqual(2, manhattan_dist((0, 0), (0, 2)))
        self.assertEqual(2, manhattan_dist((2, 0), (0, 0)))
        self.assertEqual(2, manhattan_dist((0, 2), (0, 0)))

        self.assertEqual(4, manhattan_dist((1, 2), (3, 4)))
示例#6
0
    def test_manhattan_dist(self):
        assert 0 == manhattan_dist((0, 0), (0, 0))
        assert 0 == manhattan_dist((1, 1), (1, 1))
        assert 0 == manhattan_dist((20, 20), (20, 20))

        assert 1 == manhattan_dist((0, 0), (1, 0))
        assert 1 == manhattan_dist((0, 0), (0, 1))
        assert 1 == manhattan_dist((1, 0), (0, 0))
        assert 1 == manhattan_dist((0, 1), (0, 0))

        assert 2 == manhattan_dist((0, 0), (1, 1))
        assert 2 == manhattan_dist((1, 1), (0, 0))
        assert 2 == manhattan_dist((1, 0), (0, 1))
        assert 2 == manhattan_dist((0, 1), (1, 0))
        assert 2 == manhattan_dist((0, 0), (2, 0))
        assert 2 == manhattan_dist((0, 0), (0, 2))
        assert 2 == manhattan_dist((2, 0), (0, 0))
        assert 2 == manhattan_dist((0, 2), (0, 0))

        assert 4 == manhattan_dist((1, 2), (3, 4))
示例#7
0
 def get_distance_to_me(self, pos):
     return manhattan_dist(self.current_pos, pos)