Мое творчество. Игра Шахматный сапёр
- Андрей
- Архитектор
- Сообщения: 7305
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов
- Благодарил (а): 517 раз
- Поблагодарили: 462 раза
- Контактная информация:
Re: Мое творчество. Игра Шахматный сапёр
Тестирую таймер, нифига ничего не угадывает. Полный ужас!Михаил Киселев писал(а):Изменил в версии 1.82 строчку условия отгадывания фигуры наРаботает с пятью фигурами гораздо реальней. Я ранее с пятью фигурами почти не играл, и не думал, что кто-то играть увлечется с 5-ю фигурами- всё таки сложновато для большинства. Поэтому и дурацкость алгоритма для 5-ти фигур только сейчас и вылезает.Код: Выделить всё
if fi+sc+ad+failpl > trunc(random((8*o*(o-count))+17)) then
И я такую версию друзьям разослал.
Плеваться будут.
Очень недоволен.
-
- Сообщения: 720
- Зарегистрирован: 22 дек 2017, 13:55
- Благодарил (а): 154 раза
- Поблагодарили: 67 раз
Re: Мое творчество. Игра Шахматный сапёр
Странно, я много играл с пятью фигурами, при таком условии у меня угадывал довольно часто. Вот четыре и три фигуры, да надо поправить, как я ранее предложил, чтобы комп угадывал очевидные фигуры.Андрей писал(а):Тестирую таймер, нифига ничего не угадывает. Полный ужас!Михаил Киселев писал(а):Изменил в версии 1.82 строчку условия отгадывания фигуры наКод: Выделить всё
if fi+sc+ad+failpl > trunc(random((8*o*(o-count))+17)) then
И я такую версию друзьям разослал.
Плеваться будут.
Очень недоволен.
- Андрей
- Архитектор
- Сообщения: 7305
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов
- Благодарил (а): 517 раз
- Поблагодарили: 462 раза
- Контактная информация:
Re: Мое творчество. Игра Шахматный сапёр
Хотя, уточняю, опять тут алгоритм в начале партии с трудом угадывает. В конце и середине быстро.
И я так понимаю - то, какую фигуру назвал компьютер при угадывании - ты вообще не планировал делать и не сможешь сделать с твоим уровнем знаний? И второй вопрос - есть ли в этом смысл при текущем алгоритме, или не стоит пудрить мозги себе и людям?
И я так понимаю - то, какую фигуру назвал компьютер при угадывании - ты вообще не планировал делать и не сможешь сделать с твоим уровнем знаний? И второй вопрос - есть ли в этом смысл при текущем алгоритме, или не стоит пудрить мозги себе и людям?
- Андрей
- Архитектор
- Сообщения: 7305
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов
- Благодарил (а): 517 раз
- Поблагодарили: 462 раза
- Контактная информация:
Re: Мое творчество. Игра Шахматный сапёр
В общем, внёс поправки Михаила и сделал таймер и надписи, как просил HDV. Завтра будем тестировать по сети. Локальный тест успешен.
-
- Сообщения: 720
- Зарегистрирован: 22 дек 2017, 13:55
- Благодарил (а): 154 раза
- Поблагодарили: 67 раз
Re: Мое творчество. Игра Шахматный сапёр
Да я не планировал делать какую фигуру назвал комп при угадывании.Андрей писал(а):Хотя, уточняю, опять тут алгоритм в начале партии с трудом угадывает. В конце и середине быстро.
И я так понимаю - то, какую фигуру назвал компьютер при угадывании - ты вообще не планировал делать и не сможешь сделать с твоим уровнем знаний? И второй вопрос - есть ли в этом смысл при текущем алгоритме, или не стоит пудрить мозги себе и людям?
При текущем алгоритме лучше не заморачиваться над тем какую фигуру хотел угадать комп.
Алгоритм угадывания фигур хорошо бы вообще переписать. Это думаю, посильная, хотя и долго выполняемая задача. Вот только нужно ли это хотя бы тебе. Если очень нужно могу пожалуй начать писать такой алгоритм, а ты потом можешь его улучшить. Но не особо хотелось бы заморачиваться.
з.ы. Ещё несколько раз поиграл в версию 2.11b с 4- мя и 5-ю фигурами. Угадывает в подавляющем большинстве случаев. Правда один раз с пятью фигурами, когда комп уже открыл две фигуры, третью - ферзя не мог отгадать, но опять же, все было не так уж однозачно, что это ферзь, хотя если бы я угадывал выбрал бы ферзя.
- Андрей
- Архитектор
- Сообщения: 7305
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов
- Благодарил (а): 517 раз
- Поблагодарили: 462 раза
- Контактная информация:
Re: Мое творчество. Игра Шахматный сапёр
Пока я не вернул исходники, можно не писать...
Я вот подумываю о том, чтобы поставить компьютеру полностью честную игру, всё же задача не совсем тривиальная, и поэтому имеет интерес пожалуй. Но теперь со временем у меня не густо.
-
- Сообщения: 720
- Зарегистрирован: 22 дек 2017, 13:55
- Благодарил (а): 154 раза
- Поблагодарили: 67 раз
Re: Мое творчество. Игра Шахматный сапёр
Обнаружил, что комп в начале игры может прилипнуть к одной фигуре и долго ее не угадывать.
Лечение условие
(fi+sc+ad>trunc(random(10*(o)+17)))
Меняем на
(fi+sc+ad>trunc(random(15*(o)+17)))
И строку
failpl:=failpl+8;
На
failpl:=failpl+8+2*o;
Лечение условие
(fi+sc+ad>trunc(random(10*(o)+17)))
Меняем на
(fi+sc+ad>trunc(random(15*(o)+17)))
И строку
failpl:=failpl+8;
На
failpl:=failpl+8+2*o;
- Андрей
- Архитектор
- Сообщения: 7305
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов
- Благодарил (а): 517 раз
- Поблагодарили: 462 раза
- Контактная информация:
- Андрей
- Архитектор
- Сообщения: 7305
- Зарегистрирован: 06 май 2015, 14:10
- Откуда: Чехов
- Благодарил (а): 517 раз
- Поблагодарили: 462 раза
- Контактная информация:
Re: Мое творчество. Игра Шахматный сапёр
Эти изменения не помогли. 3 раза подряд не угадывает Ферзя сразу после правки и компиляции. Понятно, что компу без разницы какую фигуру открывать, т.к. он не анализирует битые ей поля. Если я ошибаюсь - прошу поправить и показать, где в коде анализируются поля, которые бьёт угадываемая фигура.Михаил Киселев писал(а):Обнаружил, что комп в начале игры может прилипнуть к одной фигуре и долго ее не угадывать.
Лечение условие
(fi+sc+ad>trunc(random(10*(o)+17)))
Меняем на
(fi+sc+ad>trunc(random(15*(o)+17)))
И строку
failpl:=failpl+8;
На
failpl:=failpl+8+2*o;
-
- Сообщения: 720
- Зарегистрирован: 22 дек 2017, 13:55
- Благодарил (а): 154 раза
- Поблагодарили: 67 раз
Re: Мое творчество. Игра Шахматный сапёр
Учитывание потенциальных битых и пустых полей происходит в процедуре условия -Андрей писал(а):
Эти изменения не помогли. 3 раза подряд не угадывает Ферзя сразу после правки и компиляции. Понятно, что компу без разницы какую фигуру открывать, т.к. он не анализирует битые ей поля. Если я ошибаюсь - прошу поправить и показать, где в коде анализируются поля, которые бьёт угадываемая фигура.
If (c1>'x') or (c1='k') then
begin
До условия
if fi+sc+ad+failpl > trunc(random((8*o*(o-count))+17)) then
Думаю, в этой части все приплюсовывания к переменной ad лучше увеличить втрое, а ещё лучше на переменную (o-count)
Например ad:=ad+2; заменить на ad:=ad+2*(o-count);