def create_schema(sisdb, schema): name = schema['name'] defn = schema['definition'] attrs = {'db': sisdb, 'defn': defn, 'descriptor': schema} for k in defn.keys(): attrs[k] = field.create_field(defn[k], k, sisdb, name) # add sis fields for k, v in SIS_INTERNAL_FIELDS.iteritems(): attrs[k] = field.create_field(v, k, sisdb, name) return type(str(name), (SisSchema, ), attrs)
def create_embedded_schema(sisdb, defn, name): attrs = {'db': sisdb, 'defn': defn} if type(defn) == dict: for k in defn.keys(): attrs[k] = field.create_field(defn[k], k, sisdb, name) return type(str(name), (EmbeddedSchema, ), attrs)
def create_schema(sisdb, schema): name = schema['name'] defn = schema['definition'] attrs = { 'db' : sisdb, 'defn' : defn, 'descriptor' : schema } for k in defn.keys(): attrs[k] = field.create_field(defn[k], k, sisdb, name) # add sis fields for k,v in SIS_INTERNAL_FIELDS.iteritems(): attrs[k] = field.create_field(v, k, sisdb, name) return type(str(name), (SisSchema,), attrs)
def create_embedded_schema(sisdb, defn, name): attrs = { 'db' : sisdb, 'defn' : defn } if type(defn) == dict: for k in defn.keys(): attrs[k] = field.create_field(defn[k], k, sisdb, name) return type(str(name), (EmbeddedSchema,), attrs)
def _update_defn(cls, old_defn, new_defn): old_keys = set(old_defn.keys()) new_keys = set(new_defn.keys()) removed_keys = old_keys - new_keys same_keys = old_keys & new_keys for k in removed_keys: delattr(cls, k) sisdb = cls.db name = cls.descriptor['name'] added_keys = new_keys - old_keys for k in added_keys: setattr(cls, k, field.create_field(new_defn[k], k, sisdb, name)) for k in same_keys: curr_field = old_defn[k] new_field = new_defn[k] if new_field != curr_field: setattr(cls, k, field.create_field(new_defn[k], k, sisdb, name)) setattr(cls, 'defn', new_defn)
def game(): game_field = field.create_field() turn = 'm' end_game = False while not end_game: if turn == 'm': game_field = man_turn(game_field) turn = 'c' elif turn == 'c': game_field = comp_turn(game_field) turn = 'm' if not field.check_winner(game_field): end_game = True elif 0 not in game_field: print('Ничья.') end_game = True field.print_field(game_field)
def game(): game_field = field.create_field() #создание поля field.print_field(game_field) #вывод поля на экран print('my first move, cell number 5') move_number: int = 1 #номер ходов game_field[4] = 1 #ставлю крестик в середину, как наиболее понятный ход field.print_field(game_field) move_number += 1 player_move = field.check_human_next_move(game_field) #первый ход игрока game_field[player_move - 1] = -1 move_number += 1 field.print_field(game_field) if move_number == 3: #если ход второй, то нужно ставить в любой угол corners_to_move = [0, 2, 6, 8] while True: pc_move = random.choice(corners_to_move) if game_field[pc_move] == 0: game_field[pc_move] = 1 field.print_field(game_field) print(pc_move) break move_number += 1 player_move = field.check_human_next_move(game_field) #второй ход игрока game_field[player_move - 1] = -1 field.print_field(game_field) game_state = True while game_state: #игровой цикл всех остальных ходов move_number += 1 pc_move = field.check_next_pc_move(game_field, side='X') game_field[pc_move] = 1 field.print_field(game_field) game_state = field.check_winner(game_field) if move_number < 9 and game_state: move_number += 1 player_move = field.check_human_next_move( game_field) #другой ход игрока game_field[player_move - 1] = -1 field.print_field(game_field) game_state = field.check_winner(game_field) if move_number == 9: print('draw') break