Connect 4 - решенная игра (спойлер, игрок 1 выигрывает, когда играет идеально). Вы можете прочитать все о том, как решение было достигнуто в Основанный на знаниях подход Connect-Four . Это довольно увлекательное чтение, потому что они сделали это в то время, когда вычислительные ресурсы были значительно труднее найти.
Общая идея состоит в том, чтобы создать огромную базу данных с позициями известных значений, затем min-max с отсечкой альфа-бета, пока вы не достигнете одной из позиций в базе данных. Создание этой базы данных было сложным из-за вычислительных ресурсов и ресурсов хранения в то время, когда это происходило, но вы, вероятно, могли бы достичь чего-то подобного сегодня с меньшими усилиями.
Хотя это не дает прямого ответа на ваш вопрос, мы надеемся, что этот справочник станет хорошим местом для начала вашего исследования, поскольку он включает в себя анализ множества общих ситуаций в Connect 4, которые вы можете использовать для улучшения своей функции оценки.
Попытайтесь установить начальное значение при инстанцировании формы:
form = MyForm(initial={'max_number': '3'})
Чтобы быть уверенным, я должен видеть, как Вы представляете форму. Начальное значение используется только в несвязанной форме, если оно будет связано, и значение для того поля не включено, то ничто не будет выбрано.
Я тоже столкнулся с этой проблемой, и выяснил, что проблема в браузере. Когда вы обновляете, браузер повторно заполняет форму теми же значениями, что и раньше, игнорируя отмеченное поле. Если вы посмотрите исходный код, вы увидите, что отмеченное значение верное. Или поместите курсор в поле URL-адреса вашего браузера и нажмите Enter. При этом форма будет загружена заново.
Дэйв - любая удача найти решение проблемы браузера? Есть ли способ заставить обновление?
как для оригинальной проблемы, попробуйте следующее при инициализации формы:
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.base_fields['MyChoiceField'].initial = initial_value
Вы также можете сделать следующее. в классе формы def:
max_number = forms.ChoiceField(widget = forms.Select(),
choices = ([('1','1'), ('2','2'),('3','3'), ]), initial='3', required = True,)
затем при вызове формы в представлении вы можете динамически установить начальные варианты и список вариантов.
yourFormInstance = YourFormClass()
yourFormInstance.fields['max_number'].choices = [(1,1),(2,2),(3,3)]
yourFormInstance.fields['max_number'].initial = [1]
Примечание: начальные значения должны быть списком, а варианты выбора должны быть 2-кортежами, в моем примере выше у меня есть список из 2-кортежей. Надеюсь, это поможет.