コード例 #1
0
 def get_add_activity(self,
                      select_empty=True,
                      is_viable=True,
                      excluded_grids=[]):
     if self.canvas.size() == 0:
         self.mode_loc == LOC_ABS
     color = random.choice(COLORS)
     shape = random.choice(SHAPES)
     options = []
     loc_abs, row_abs, col_abs = self.canvas.select_loc_abs(
         select_empty, is_viable)
     if loc_abs:
         options.append(LOC_ABS)
     obj_ref, row_ref, col_ref, loc_rel = self.canvas.select_obj_ref_grid(
         select_empty, is_viable, excluded_grids)
     if obj_ref:
         options.append(LOC_REL)
     if len(options) == 0:
         return
     if self.mode_loc in options:
         mode_loc = self.mode_loc
     else:
         mode_loc = random.choice(options)
     if mode_loc == LOC_ABS:
         self.obj = Object(color, shape, row_abs, col_abs)
         self.loc_abs = loc_abs
     elif mode_loc == LOC_REL:
         self.obj = Object(color, shape, row_ref, col_ref)
         self.obj_ref = obj_ref
         self.loc_rel = loc_rel
     '''
コード例 #2
0
 def get_add_activity(self, select_empty=True, excluded_grids=[]):
     if self.canvas.size() == 0:
         self.mode_loc == LOC_ABS
     options = []
     row_abs, col_abs, loc_abs = self.canvas.select_grid_loc_abs(
         select_empty)
     if row_abs is not None and col_abs is not None:
         options.append(LOC_ABS)
     row_ref, col_ref, obj_ref, loc_rel = self.canvas.select_grid_obj_ref(
         select_empty, excluded_grids)
     if obj_ref:
         options.append(LOC_REL)
     if len(options) == 0:
         return
     color = random.choice(COLORS)
     shape = random.choice(SHAPES)
     if self.mode_loc in options:
         mode_loc = self.mode_loc
     else:
         mode_loc = random.choice(options)
     if mode_loc == LOC_ABS:
         self.obj = Object(color, shape, row_abs, col_abs)
         self.loc_abs = loc_abs
     elif mode_loc == LOC_REL:
         self.obj = Object(color, shape, row_ref, col_ref)
         self.obj_ref = obj_ref
         self.loc_rel = loc_rel
コード例 #3
0
 def get_activity(self, act):
     if not self.mode_loc:
         self.mode_loc = random.choice(MODES_LOC)
     activities = []
     if act == ADD:
         self.act = act
         self.get_add_activity(select_empty=True, is_viable=self.is_viable)
         self.message = self.generate_act_message_by_tmpl()
         self.canvas.add(self.obj)
         activities.append(self.activity2dict())
     if act == DELETE:
         self.act = act
         self.get_delete_activity(select_empty=False, is_viable=self.is_viable)
         self.message = self.generate_act_message_by_tmpl()
         self.canvas.delete(self.obj)
         activities.append(self.activity2dict())
     if act == MOVE:
         self.get_delete_activity(select_empty=False, is_viable=self.is_viable)
         self.act = DELETE
         activities.append(self.activity2dict())
         obj_from = self.obj
         self.get_add_activity(select_empty=True, is_viable=self.is_viable,
                               excluded_grids=[(obj_from.row, obj_from.col)])
         self.act = ADD
         self.obj.color, self.obj.shape = obj_from.color, obj_from.shape
         activities.append(self.activity2dict())
         obj_to = Object(self.obj.color, self.obj.shape, self.obj.row, self.obj.col)
         self.obj = obj_from
         self.message = self.generate_act_message_by_tmpl(MOVE)
         self.canvas.delete(obj_from)
         self.canvas.add(obj_to)
     self.canvas.update_ref_obj_features()
     return activities
コード例 #4
0
 def get_activities(self, act, is_viable=True):
     if not self.mode_loc:
         self.mode_loc = random.choice(MODES_LOC)
     activities = []
     if act == ADD:
         self.act = act
         self.get_add_activity(select_empty=(True and is_viable))
         self.message = generate_act_message_by_tmpl(
             self.canvas, self.obj, self.act, MODE_FULL)
         self.canvas.add(self.obj)
         activities.append(self.activity2dict())
     if act == DELETE:
         self.act = act
         self.get_delete_activity(select_empty=not (False ^ is_viable))
         if self.obj is None:
             return []
         # print(self.obj)
         if not self.mode_ref:
             mode_ref = random.choice(MODES_REF)
         else:
             mode_ref = self.mode_ref
         # print(self.obj)
         self.message = generate_act_message_by_tmpl(
             self.canvas, self.obj, self.act, mode_ref)
         self.canvas.delete(self.obj)
         activities.append(self.activity2dict())
     if act == MOVE:
         self.get_delete_activity(select_empty=False)
         self.act = DELETE
         activities.append(self.activity2dict())
         obj_from = self.obj
         self.get_add_activity(select_empty=True,
                               excluded_grids=[(obj_from.row, obj_from.col)
                                               ])
         self.act = ADD
         self.obj.color, self.obj.shape = obj_from.color, obj_from.shape
         obj_to = Object(self.obj.color, self.obj.shape, self.obj.row,
                         self.obj.col)
         self.obj = obj_to
         activities.append(self.activity2dict())
         self.obj = obj_from
         # self.message = self.generate_act_message_by_tmpl(MOVE)
         self.canvas.delete(obj_from)
         self.canvas.add(obj_to)
     self.canvas.update_ref_obj_features()
     # for k, v in self.canvas.d_id_feature.items():
     #     print(k, v.keys())
     return activities
コード例 #5
0
 def get_delete_activity(self, select_empty=False):
     assert self.canvas.size() > 0
     if self.canvas.size() == 1 and not select_empty:
         self.obj = list(self.canvas.d_id_obj.values())[0]
         return
     row = col = None
     row_a, col_a, self.loc_abs = self.canvas.select_grid_loc_abs(
         select_empty)
     row_r, col_r, self.obj_ref, self.loc_rel = self.canvas.select_grid_obj_ref(
         select_empty)
     options = []
     if row_a is not None:
         options.append(LOC_ABS)
     if row_r is not None:
         options.append(LOC_REL)
     if not options:
         for id_, obj in self.canvas.d_id_obj.items():
             d_features = self.canvas.get_obj_features(obj)
             if MODE_CS in d_features:
                 self.obj = obj
                 break
         return
     if self.mode_loc not in options:
         self.mode_loc = random.choice(options)
     if row_r is not None and self.mode_loc == LOC_REL:
         row, col = row_r, col_r
     if row_a is not None and self.mode_loc == LOC_ABS:
         row, col = row_a, col_a
     if row is not None and col is not None:
         if select_empty:
             color = random.choice(COLORS)
             shape = random.choice(SHAPES)
             self.obj = Object(color, shape, row, col)
         else:
             for id_, obj in self.canvas.d_id_obj.items():
                 if (row, col) == (obj.row, obj.col):
                     self.obj = obj
                     break