Example #1
0
 def silly_inner_generator(self):
     while True:
         direction = random.choice(list(SK.STEPS.keys()))
         if direction == CM.TELEPORT:
             continue
         np = (self.p[0] + SK.STEPS[direction][0], self.p[1] + SK.STEPS[direction][1])
         if cell_is_correct(np):
             yield CM.pack_bot_step(self.run_number, self.time_frame, CM.CAT, direction)
Example #2
0
    def __init__(self, run_number, game_map):
        self.p = [random.randint(0, GAME_CONF.FIELD_SIZE - 1) for _ in range(2)]
        self.run_number = run_number
        self.game_map = game_map
        self.send_to_bot(CM.pack_init(run_number, game_map, self))

        self.time_frame = 1
        self.silly_inner_gen = self.silly_inner_generator()
Example #3
0
    def run(self):
        while True:
            self.run_number += 1
            print('Game Map, start, run_number=' + str(self.run_number))

            self.cat = Cat(self.run_number, self.game_map)

            self.send_update_to_server_vis()

            s = sched.scheduler(time.perf_counter, time.sleep)

            for repeat in range(GAME_CONF.REPEATS_NUMBER):
                s.enter(TimesConf.BORDER_DELAY + repeat * TimesConf.BETWEEN_REPEATS_DT, 1, self.send_init)
            s.enter(TimesConf.TOTAL, 0, lambda *args: None)

            s.run()

            for t in range(GAME_CONF.STEPS_NUMBER):
                logger.info('Cat, run_number=' + str(self.run_number) + ', time_frame=' + str(
                    self.cat.time_frame) + ', p=' + str(self.cat.p))

                self.send_update_to_server_vis()

                s = sched.scheduler(time.perf_counter, time.sleep)

                s.enter(0, 2, self.cat.one_step)

                for i in range(GAME_CONF.FIELD_SIZE):
                    for j in range(GAME_CONF.FIELD_SIZE):
                        to_cat_direction = self.generate_step(t, i, j)
                        msg = CM.pack_bot_step(self.run_number, self.cat.time_frame, CM.CAT, to_cat_direction)
                        for repeat in range(GAME_CONF.REPEATS_NUMBER):
                            s.enter(TimesConf.BORDER_DELAY + repeat * TimesConf.BETWEEN_REPEATS_DT, 1,
                                    self.send_step, argument=(msg, i, j))

                s.enter(TimesConf.TOTAL, 0, lambda *args: None)
                s.run()
Example #4
0
 def one_step(self):
     self.time_frame += 1
     self.send_to_bot(CM.pack_request_for_step(self.run_number, self.time_frame, CM.TELEPORT, self.p))
     self.receive_from_bot()
Example #5
0
 def send_init(self):
     self.sender.send(CM.pack_init(self.run_number, self.game_map, self.cat), 0, 0)
Example #6
0
 def silly_inner_hunter(self):
     return CM.pack_bot_step(self.game_run.run_number, self.time_frame, CM.HUNTER, self.cat_direction)
Example #7
0
 def process_step(self):
     if self.game_run is None or self.cat_direction is None:
         return
     self.send_to_bot(
         CM.pack_request_for_step(self.game_run.run_number, self.time_frame, self.cat_direction, self.p))
     self.receive_from_bot()