Как стать автором
Обновить
16
-3

Пользователь

Отправить сообщение

Спасибо за советы.

Насчет транспозиций, не совсем так: одинаковые позиции могут возникнуть, например, если шашка пойдет налево или направо: e3-d4-e5 или e3-f4-e5.

Ничего не редактировал.

У меня была идея, дать компу играть самим с собой, но непонятно, что с этим делать дальше.

Вы предлагаете дать компу играть самому с собой, пока на доске нет дамок, и формировать таким образом базу дебютов. Но как компу понять, что дебют действительно хороший? То есть даже если позиция после 10-15 ходов равна по материалу, это не значит, что она равна действительно. Как компьютеру, разыграв партию, понять, что этот дебют действительно хороший и его стоит запомнить... Не совсем интуитивно понятно...

Ничего не исправлял.

Интересно, получается, шашки все же привлекли чье-то внимание:) Интернет многое помнит, это правда. Поищу, если время будет. Однако, если не знаешь, что ищешь, то сложно найти. Наверно, поэтому я и не смог найти эту программу раньше)

Я что-то не понял, как вы посчитали на 10 ходов вперед. На конкретном ходе у нас есть 22*22=484 варианта хода. Но из каждой из этих позиций погружаясь на новую глубину, мы получаем новую позицию, в которой в нас опять есть 484 варианта хода. Т.е. мы должны возводить в степень, а не умножать, не так ли?

Спасибо за комментарий.

Насчет правил — у меня все так и есть. В начале статьи написано: "Если есть несколько вариантов боя — можно выбрать любой". И насчёт дамки -- если шашка превратилась в дамку, она у меня продолжает бить по правилам дамки. Об этом написано в третьей bullet-point после функции GetAllMoves()

Про эндпильные базы -- интересно. А что за программа такая, Тундра? Она открыта? Можно где-то посмотреть, как она работает?

Насчет алгоритма боя, я долго с этим промучился, к тому же я и сам не понимал, обязан ли игрок брать еще одну шашку, если может этого избежать. Но эту ошибку я исправил и сейчас действительно доступно в такой позиции только два взятия. Этой программой я играл с другими приложениями в плеймаркете, и везде правила и возможности ходов совпадали.

Выиграть у компьютеры в шахматы — невозможно. После победы компьютера DeepBlue над Каспаровым в 1996 году, компьютеры развились настолько, что могут победить даже чемпиона мира, еще и с форой.

Английские шашки, как я написал, постигла ничейная смерть. Это значит, что были полностью рассчитаны варианты, гарантированно обеспечивающие игроку ничью, за какую сторону бы он не играл.

Насчет русских шашек -- не уверен. Как я и сказал, я не нашел каких-либо готовых программ.

Спасибо за отзыв и информацию.

Увы, не похоже, что эта тема подробно разъясняется в курсах и туториалах, ибо на том же StackOverflow (как минимум на русском) с завидной регулярностью всплывают вопросы: "Почему коллайдеры не взаимодействуют", "Почему столкновение не обрабатывается", "Почему коллайдеры проходят свозь друг друга". Я даже могу с уверенностью заявить, что помню вопрос "Где и как вызвать функцию OnCollisionEnter?" Сейчас не могу найти - предполагаю, что вопрос закрыли.

Пару лет назад я даже написал там вопрос-ответ с очень краткой информативной справкой и по просмотрам можно понять, что новички сталкиваются с проблемами по теме часто.

Проблема распространенная и может иметь несколько причин. Часто новички пытаются реализовать движение не через физическое перемещение (Rigidbody), а напрямую изменяя transform.position. Однако этот способ приемлем, только если нужно "телепортировать" один объект в другое место. При попытке использовать его в физическом перемещении, логично, что объекты могут проходить друг сквозь друга, особенно если их коллайдеры малы (узки).

Если же движение реализовано правильно, может помочь установка поля Collision Detection на Continuous вместо Discrete. С другой стороны, это ударит по производительности в больших проектах. Проблема распространенная, о ней не раз спрашивали и писали.(https://forum.unity.com/threads/what-are-the-necessary-settings-to-prevent-objects-passing-through-each-other-at-high-speeds.384519/)

Согласен, неточная формулировка. Полный повтор сложных форм сильно бил бы по производительности. Хотя, пожалуй, в наработках начинающих используются довольно простые модели/спрайты и коллайдеры на них довольно простые:)

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность

Специализация

Game Developer
Unity3d
C++
C#
Python
Unreal Engine