Pull to refresh

Comments 26

Существует ли в шашках правило бить обязательно максимальное количество шашек если вариантов бить несколько?

И да, я конечно понимаю, что ехать а не шашечки, но вот вам пару неплохих шашек: белая и черная :)
В русских шашках можно выбрать любой из вариантов. Можно побить одну, а можно и три. Правила это позволяют.

А есть ли какой-то явный источник этих правил? В википедии написано совсем неочевидно:

  • Взятие обязательно. Побитые шашки и дамки снимаются только после завершения хода.

  • При нескольких вариантах взятия, например, одну шашку или две, игрок выбирает вариант взятия по своему усмотрению.

То есть во-первых если взятие обязательно, то и останавливаться на полпути нельзя, во-вторых, в примере выше "брать одну шашки или две" там не написано что речь про один путь, то есть условно, есть два пути бития приводящие в разные клетки и заканчивающие ход, но в одном случае будет бита одна шашка, а в другом - две. Согласитесь это совсем иное понимание правила.

А есть ли какой-то явный источник этих правил? В википедии написано совсем неочевидно:

Пункт 6.1.5 правил.

Спасибо.

6.1.5.5. Если в процессе взятия шашкой она вновь оказывается на одной диагонали рядом с другой шашкой соперника, за которой имеется свободное поле, она должна быть перенесена через вторую, третью и т.д. шашку.

то есть бить всегда обязательно и остановиться на половине пути нельзя.

6.1.5.11. Последовательное взятие считается законченным, если игрок по окончании переноса шашки отнял от нее руку.

А это правило явно противоречит тому что указано выше.

6.1.5.14. При возможности взятия по двум и более направлениям дамкой или шашкой выбор, вне зависимости от количества или качества снимаемых шашек (дамки или простой), предоставляется берущему.

То есть выбор пути происходит самим берущим, а момент остановки взятия определяется правилом 6.1.5.5 (про противоречие с 6.1.5.11 пока забываем)

>А это правило явно противоречит тому что указано выше.

Не противоречит, хотя написано действительно не очень понятно. Правила не переопределяют друг друга, нельзя завершить бой, не выполнив требования 6.1.5.5. Если отнять руку, когда ещё есть куда бить, соперник или судья просто укажут на то, что бить нужно до конца, и ход придется продолжить. 6.1.5.11 можно применить так: предположим, у игрока два выбора боя. Он берет свою шашку и, не отрывая руки, бьёт по варианту 1. В конце движения он решает, что такой вариант боя его не устраивает и - не отрывая руки - возвращается и бьёт по второму варианту. Когда он отпустит шашку, возможности изменить вариант боя уже не будет, ход считается совершенным.

Правила описанные здесь — самые адекватные правила. Нередко встречал игры на просторах AppStore и GooglePlay где шашки имели другие правила и только. Есть и исключения где куча режимов.
Разновидностей великое множество. В чекерс, например, нельзя рубить назад, а дамки движутся лишь на одну клетку. В бразильских обязательно нужно рубить большинство и шашка при бое через дамочное поле остается шашкой, если не останавливается на нём. А если останавливается, то продолжает бой лишь на следующем ходу. В моем случае я рассматривал русские шашки.
А в Бауманку вас таки взяли? Я просто сам участвовал в «Шаге в будущее», однако мутки с общежитием меня смутили, и я пошёл в МИФИ.
Меня ещё никуда не взяли, поступаю в этом году. Но точно не в Бауманку, потому что там вроде как везде нужна физика, а я сдавал информатику.
Так у вас если есть диплом олимпиады, то это в любой почти вуз 100 баллов физика или без экзаменов вообще, меня в ВШЭ на ПИ брали вне конкурса в прошлом году с «Шагом», хотя туда физика в принципе не нужна. Веткой промахнулся.
А что если в шашки добавить коня из шахмат. Это освежит алгоритмы.)
Причем что бы не усложнять ситуацию, нужно использовать «генно-модифицированного» коня, что бы тот скакал только по черным клеткам.
с геномодификацией коня надо быть аккуратной. Небольшая мутациия генов и конь становиться слоном)
А помните историю, когда Нотч пытался замоделлить свинью, а получился крипер? =)
Вот так зоопарки и основываются )
Мне кажется, вы слишком намудрили. Возможно из-за того, что хотели в конечном счете прикрутить ИИ. Я недавно тоже для конкурса делал игру в шашки на незнакомом для меня фреймворке famo.us. Но так как в качестве ИИ у меня предполагалось использовать самого себя или кого-то в сети, то подход был у меня другой. У меня все просто просчитывалось, как только шашка активируется (вступает в игру) то просчитывается ее состояние и возможности по рубилову. После хода снова просчитывается и если например еще есть кого бить, ты должен продолжить играть с нею. Ну и так далее. Ну и по сети можно с кем-нить играть. Типа создал игру и крикнул другу по скайпу — «эй, друг, я создал игру №35, присоединяйся», и друг может войти в нее… Если хотите, можете поиграться(конкурс правда еще на закончен, но то ли заглох, то ли еще чего, больше недели молчат): nickadmin.net/dams/
Понятно, что улучшать можно до бесконечности, но для конкурса я там основные условия выполнил. Главный недостаток — независимо от того каким цветом ты играешь, располагаются шашки одинаково — черные вверху, белые внизу. А так и на смарте играть можно, и на десктопе. Только в опере не работает (косяк фреймворка)
Да, я изначально всё подстраивал под то, чтобы было легче реализовывать ИИ. Потестил вашу программу, она работает неправильно. Скорее всего из-за подхода, который вы выбрали. Неправильная цепочка: c3d4 f6e5 и белые вместо боя могут сделать ход d4c5. Хотя конкретно это исправить не так уж и трудно, но где-то может вылезти ещё что-то подобное. Я постарался изначально всё это предусмотреть (хотя чего греха таить, сначала я пытался сделать как проще, а вот когда начали вылезать такие вот ошибки, пришлось усложнять).
Не, это не косяк. Я так специально оставил. Если шашка бьет, то чел может ходить только ею, но я не ограничиваю его в действии. Он действительно может не срубить, а пойти в другую сторону. Иначе можно было бы автоматом вместо него и ходить. Я оставил малую толику «неправильности» как и в реальности. Может это и не по правилам, но мне так захотелось :-) По другим вариантам вылезти ничего не должно, ибо логика переходов состояний шашки проста как валенок. В этом (в простоте) и есть все дело. Если рассматривать шахматную доску — логика сложная, если шашку в отдельность — простая.
«Не баг, а фича» (с)
Тогда всё хорошо, но для меня это всё равно кощунство :)
Возможно, вы и правы и так будет гораздо проще, в том числе и с ИИ, подумаю об этом.
Вопрос номер один. Что данный пост делает на хабре. Вопрос номер два. Что данный пост делает на главной. Такие вещи пишутся первым делом после хеллоу ворлда практически всеми.
А чем вас не устраивает пост? Он удовлетворяет и тематике ресурса и тем хабам, в которые я его отправил. Неопытный в программировании человек на примере поста может примерно понять, как проходят рассуждения при создании алгоритмов. Для кого-то, не связанного с этой областью, может быть интересно прочитать о том, как работают подобные вещи. Кто-то, возможно, даже что-то почерпнет для себя.

Что касается второго вопроса: если вам не нравится содержание главной страницы, пишите технические посты, достойные её, сами. С такой квалификацией («Такие вещи пишутся первым делом после хеллоу ворлда практически всеми») это должно быть для вас проще простого.
Пост называется «Как я шашки писал», а по сути написанных шашок так и не увидел никто. Кода нет, ИИ (самое главное и интересное) нет. А посмотреть на реализацую самообучаемого ИИ очень хотелось бы. Есть только только алгоритм проверки правильности хода. Я так понимаю, если ии нет, то играть можно по сети. А такие вещи пишутся первым делом после ворлда. Так же, как крестики-нолики, змейка и т.д.
Массив из 32-х элементов не будет оптимальным решением, ИМХО. Самым напрашивающимся — да. Но битборды эффективнее.
Более оптимальным в плане производительности, но совсем не оптимальным в плане читаемости и простоты кода. Прочитал вашу статью, метод очень крутой. Если ставить себе цель написать полноценную шашечную программу, то, разумеется, нужно использовать его, если не удастся придумать что-то ещё более быстрое, так как при рекурсивном переборе будет иметь значение каждая инструкция. Но если глобальных целей нет, то лучше использовать простые и очевидные способы :)
Sign up to leave a comment.

Articles