Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
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)
Пример #8
0
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