Как играть в шашки русские


Правила игры в русские шашки.

Русские шашки — самый популярный вид шашек на территории России. Приведенные здесь правила игры в русские шашки соответствуют шашечному кодексу России, утвержденному Конференцией Федерации шашек России 5 октября 2002 года, а также международным правилам игры в русские шашки. В соответствии с ними проводятся все официальные турниры, в том числе и различные чемпионаты.

Доска для игры в русские шашки

Прежде чем начать писать о шашечной доске, сточит упомянуть, что в русские шашки играют двое. А теперь приступим к описанию боевого поля, на котором будут сражаться двое противников. Доска для игры состоит из 64 одинаковых квадратов, попеременно свет­лых и темных полей. Игра ведется только по темным полям.

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

Шашечная доска располагается между игроками в шашки так, чтобы слева от каждого из играющих находилось темное угловое поле. Иными словами, большая дорога проходит слева направо. Если на доске есть разметка: по горизонтали стоят латинские буквы: A, B, C, D, E, F, G, H, а по вертикали — цифры от 1 до 8, то еще проще понять расположение игроков за доской — один садится там, где расположены буквы, а второй напротив и большую дорогу легко найти, она начинается на поле А1 и заканчивается на поле H8.

Шашки в игре

У каждого из партнеров по игре есть 12 плоских шашек круглой формы, у одного они белого цвета, у другого — черного. Шашки расставляются на черных полях первых трех горизонтальных рядов с каждой стороны от играющего. Белые занимают поля с первой по третьей горизонтали, а черные с восьмой по шестую.

В начальной расстановке на доске все шашки являются простыми. Но простая шашка может стать дамкой. Если во время игры шашка достигает одного из полей последне­го, восьмого (считая от себя) горизонтального ряда, она превращается в дам­ку. На доске дамки обозначаются сдвоенными шашками, то есть поставленными одна на другую.

Ходы в русских шашках

Первый ход делают белые

Правила игры в русские шашки говорят о том, что первый ход в партии делает играющий белыми шашками, в отличии от английских шашек, где игру открывают черные. Ход — это передвижение шашки с одного поля доски на другое. Партнеры поочередно делают по одному ходу до тех пор, пока игра не закончится.

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

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

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

Обязательное взятие шашки соперника назад

Дамка, в отличие от простой шашки, может ходить в любом направлении, как вперед, так и назад и на любое из свободных полей по диагонали. Но становиться может, как и простая шашка, лишь на свободные поля, причем через свои шашки она перескакивать не может.

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

В процессе последовательного взятия разрешается проходить не­сколько раз через одно и то же поле, но запрещается переносить шашку или дамку через одну и ту же шашку (дамку) соперника более одного раза.

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

Если простая шашка при взятии достигает последнего (восьмого от себя) горизонтального ряда она превращается в дамку. И если ей предоставляется возможность дальнейшего взятия шашек соперника, то она обязана тем же ходом сделать это.

Если же шашка достигает последнего горизонтального ряда без взятия, то на этом ход заканчивается.

Цель игры в русские шашки

Главная цель в игре — это победа. Хотя бывают случаи, когда ставят себе целью сыграть конкретную игру в шашки вничью, например, в турнире по шашкам в последнем туре играющему достаточно ничейного результата. Или игрок в шашки просто не хочет обидеть соперника, поэтому целенаправленно играет на ничью. Но это случаи скорее исключения из правила. Участие в игре — хорошо, но победа значительно лучше!

Черные не могут сделать хода

Так кого можно признать выигравшим партию? Победителем признается тот, кто первым достигнет поло­жения, при котором его соперник:

1) признав свою позицию проигранной, заявил о том, что сдается;

2) не сможет сделать очередной ход;

3) не имеет ни одной шашки.

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

1) При невозможности выигрыша ни одного из соперников;

2) Если в течение 15 ходов игроки делали только ходы дамками, не передвигая простых шашек и не осуществляя взятия;

3) Если участник игры в шашки, имея в окончании партии три и более дамки против одной дамки соперника, своим 15-м ходом (считается с момента уста­новления такого соотношения сил) не возьмет дамку противника;

4) Если участник, имея в окончании партии:

Только 5 ходов, чтобы выиграть

— три дамки или

— две дамки и простую шашку или

— дамку и две простые шашки или

— три простые шашки

против одинокой дамки соперника, находя­щейся на большой дороге, своим 5-м ходом не сможет добиться выигранной позиции.

5) Если три или более раз повторяется одна и та же позиция на доске (одно и то же расположение шашек), причем очередь хода каждый раз будет за од­ной и той же стороной.

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

Русские шашки играть онлайн бесплатно без регистрации на русском языке

Русские Шашки

Оценка пользователей 4.9 из 5 (всего 29 голосов)

Кто изобрел шашки и точная дата этого события достоверно никому не известны. Скорее всего, этот вид развлечения возникал многократно, так как существует множество игр подобного типа, схожих между собой и инвентарем, и правилами. Ученые обнаружили еще на памятниках Древнего Египта рисунки с изображением игры, похожей на рассматриваемую. Что касается территории Российской Федерации и близлежащих земель, то первые упоминания об этой забаве датируются еще третьим веком нашей эры. В Европе она также пользовалась большой популярностью во все времена.

В девятнадцатом веке стали организовывать национальные турниры по этому виду развлечения. Ценителям и поклонникам игры известна фамилия первого и многократного чемпиона Воронцова С.А. В 1894 году прошел Чемпионат мира по чекерсу и по международным шашкам, победителем которого стал шашист из Франции Исидор Вейс. Этот мастер восемнадцать лет не отдавал никому титул чемпиона. Впервые женский чемпионат мира прошел спустя почти сто лет, в 1973 году. С тех пор много воды утекло и теперь соревнования различного уровня проводятся во многих странах мира.

Русские шашки онлайн играть бесплатно без регистрации

В шашки играют только вдвоем.Набор для данного развлечения включает в себя шашечную доску, размер которой меняется в зависимости от разновидности забавы, и шашек двух цветов: 12 черных и 12 белых. Доски бывают следующих размеров: 8 на 8 - этот вариант самый распространенный, 10 на 8 - это восьмидесятиклеточные шашки, 10 на 10 - международные, 12 на 12 - канадские.

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

Игра шашки русские

Рассмотрим более подробно русские шашки. Во те далекие времена, когда в Российской Империи престол занимал Петр Первый, они пользовались популярностью среди жителей государства. Но турниров или соревнований не организовывали, так как не было единых правил и инструкций, которым бы следовали все противники. О ходе игры и ее нюансах договаривались до начала партии. И только в 1884 году в одном из выпусков журнала «Радуга» опубликовали Устав шашечной игры, автор которого Михаил Гоняев. Это событие позволило организаторам проводить турниры и соревнования по такой игре как шашки русские.

Уже после революции, во времена СССР, получили распространение шахматно-шашечные секции, также проводились ежегодные всесоюзные чемпионаты, наиболее удачливые участники которых становились мастерами спорта. В русские шашки играть любили многие, даже среди пионеров организовывался турнир, носящий название «Чудо - шашки». Родители с удовольствием отдавали детей в эти секции, ведь подобные развлечения прекрасно развивали логическое мышление. И после распада Союза в Российской Федерации и в остальных постсоветских государствах любовь к забаве у русских, а также у людей других национальностей не иссякает.

Игра в русские шашки онлайн бесплатно

Ничего сложного в том, чтобы научиться в русские шашки играть, нет. Стандартные правила звучат так: игра происходит на классической доске, размер которой 8 на 8. У каждого геймера по двенадцать фишек, которые изначально занимают темные клетки первых трех рядов на каждой половине поля. Сначала все фишки простые, но если вдруг одной из них удается пройти доску и добраться до последнего восьмого ряда, она становится дамкой. Дамка представляет собой перевернутую фишку, или же две фишки, лежащие друг на друге. И дамки, и простые фишки двигаются всегда по диагонали. Но простая - на одну клетку и только вперед, а у дамки прав больше: она ходит как вперед, так и назад на любое количество клеток.

Тактика боя также незамысловата. Простые бьют и вперед и назад. Когда фишка игрока стоит рядом с фишкой соперника, за которой есть свободная клетка, то партнер переносит свою через фишку противника и ставит ее на пустую ячейку. В случае, когда по данной диагонали можно продолжить бой, участник не имеет права остановиться. Дамка бьет аналогично, но она становится на любую свободную ячейку на диагонали. Если перед участником открыты несколько вариантов взятия фишек противника, он сам решает, какую комбинацию выбрать и как лучше сыграть. Играть в шашки русские интересно, ведь эта забава динамичная, быстрая и не даст противникам заскучать.

Выигрыш партии оглашается в таких вариантах развития событий: когда у одного из соревнующихся фишки ликвидированы, когда один из участников лишен возможности походить, или же если игрок просто-напросто сдался.

Ничья оглашается:

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

На турнирах на партию выделяется регламентированное количество времени. Существует три временных уровня игр: классические, быстрые (рапид) и молниеносные (блиц) шашки.

Играть в русские шашки онлайн бесплатно

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

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

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

Преимуществом нашего клуба является то, что гости могут в шашки онлайн русские играть бесплатно. А это немаловажно, так как в последнее время на просторах всемирной сети все больше услуг переквалифицируются в платные. Регистрация для осуществления игры не обязательна, но если вы все-таки решите это сделать, то в таком случае получите некоторые бонусы.

Будем надеяться, что эта статья поможет ближе познакомиться с игрой, стать ее любителем и найти таких же ценителей, ведь у вас много общего, вы будете говорить на одном языке. Общие интересы объединяют. А если вдруг захотите отточить мастерство в режиме online, наш клуб предоставляет такую возможность. Мы всегда рады гостям и уверены, что заглянув к нам единожды, вы обязательно вернетесь снова.

Отзывы

Осталось символов:

Оценить

Русские Шашки

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


Русские Шашки

Самые лучшие шашки это русские. Там ничего замудренного нет и все очень просто.


Русские Шашки

шашки шикарные ,что русские ,что международные.


Примеры игры в русские шашки - учимся играть

Вашему вниманию предлагаются несколько очередных фрагментов игры в русские шашки. Скорее всего, только квалифицированные игроки смогут до конца разобраться во всех нюансах приведенных позиций. Тем, у кого возникнут вопросы при решении, советуем ознакомиться с ответами и комментариями, которые будут опубликованы немного позже в разделе Ответы и решения.

Если же Вам эти позиции покажутся слишком сложными и неинтересными, сообщаем, что в скором времени на сайте Шашки всем будет выходить цикл публикаций, которые будут посвящены простым приемам игры в русские шашки. Изучение простейших приемов игры доступно любому человеку, даже не имеющему опыта игры,  а знание различных шашечных хитростей поможет Вам не просто играть в шашки, а еще и выигрывать. Не забудьте подписаться на рассылку новостей сайта, чтобы не пропустить новую информацию о секретах игры в шашки.

Перейдем к обещанным позициям для русских шашек.

Пример 1.

ход белых

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

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

Предлагаем Вам вспомнить или найти самим четкий путь к выигрышу белых.

Пример 2.

ход белых

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

Пример 3.

ход белых

Шашки игроков «встретились» друг с другом, и вариантов для дальнейшей игры у соперников не много. Как завершится партия при сильнейшей игре противоборствующих сторон?

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

Русские Шашки Играть Онлайн - Бесплатно и без Регистрации

Русские шашки самые популярные шашки не только в России, но и во всем СНГ и это не удивительно, ведь правила русских шашек очень простые и понятны всем, а сама настольная игра веселая и не занимает много времени.

В этой флеш игре все правила как в русских классических шашках, если ты знаешь их правила, тогда тебе не составит труда сыграть против компьютера и победить его. Чтобы играть с компьютером нужно нажать в меню 1 Player, затем выбрать сложность игры, их две: Easy (легко) и Hard (сложно). Еще в этих русских шашках можно играть вдвое c другом, для этого в главном меню нужно нажать 2 Players. Появится игровая доска с шашками, где ты с другом ходишь по очереди с одного компьютера. Еще в 2 Players можно играть одному, например, если выставить свои шашки в нужном порядке для тестирования схемы, стратегии игры.

Правила игры в русские шашки

  • Играют на шахматной доске с 64 полями это 8х8;
  • Каждый игрок имеет по 12 шашек, которые расставляются на темных клетках доски;
  • Первыми ходит игрок с белыми шашками;
  • Шашки ходят на 1 клетку по диагонали и только вперед;
  • Если возле шашки стоит шашка противника и за нею свободная клетка, ее можно побить (правильно говорить - взятие шашки), переступив своей шашкой через шашку противника;
  • Бить шашку соперника есть обязательным условием и бьется как вперед, так и назад по диагонали;
  • Любая шашка дошедшая до крайней линии соперника стает дамкой;
  • Дамка может ходить на любое количество свободных клеток по диагонали вперед и назад;
  • Дамка бьет через всю диагональ;
  • Цель взять все шашки противника или сделать так чтобы сопернику не было куда походить;

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

Как я шашки писал / Habr

Предыстория

Так уж получилось, что моим первым более-менее серьёзным проектом, связанным с программированием, была реализация шашек для «Шага в будущее». К несчастью, доделать его до конца у меня так и не получилось, так как через некоторое время концепция проекта резко поменялась. Несмотря на это, программа была практически готова и с ней даже можно было играть, к тому же сам процесс её написания оказался весьма интересным, поэтому я решил поделиться теми идеями и алгоритмами, которые сумел придумать.
Правила игры

  • Игра ведётся на доске 8х8 клеток, только на черных ячейках
  • Шашки в начале игры занимают первые три ряда с каждый стороны
  • Бить можно произвольное количество шашек в любых направлениях
  • Простые шашки ходят только вперёд
  • Простая шашка может срубить назад
  • Дамка ходит на любое число полей в любую сторону
  • Проигрывает тот, у кого не остается фигур, либо ходов
  • Шашка снимается с поля после боя (можно перефразировать так: одну шашки нельзя срубить дважды за один ход)
  • Бить обязательно
  • Шашка превращается в дамку, достигнув восьмой (для белых) или первой (для черных) линии доски
  • Если шашка во время боя проходит через дамочное поле, то она превращается в дамку и следующие бои (если они возможны) совершает уже как дамка

Реализация

Сначала необходимо определить, как наша доска будет храниться в памяти. Оптимальным решением, на мой взгляд, является массив из 32 объектов, каждый из которых имеет набор методов и свойств. Свойства хранят всю возможную информацию о клетке, например:
  • name: a1 //Имя клетки на реальной доске
  • color: 1 //Цвет шашки, 1 — белая, 2 — черная, 0 — клетка пустая
  • queen: false //Является ли шашка дамкой
  • border: false //подсвечено ли поле
  • doubleWay: false
  • goldWay: true //эти два поля будут объяснены чуть позже

Разумеется, это не все необходимые свойства, однако приводить все я не вижу смысла. Что касается методов, то их немного и они выполняют несложные действия типа изменения полей queen, color и прочих, а затем обновляют изображение. Так, при бое будут вызваны функции для «очищения» той клетки, с которой идёт бой и той клетки, на которой стоит срубленная шашка, а так же для отрисовки шашки на том поле, куда происходит бой.

Однако как же определять, нужно рубить, или нет? Для этого перед каждым ходом доска сканируется, проверяя выполнение нескольких условий, выполнение которых означает, что нужно бить. Но для того, чтобы это сделать, придется разбить доски на диагонали, так как бой происходит именно по ним (это, кстати, нужно и для обычных ходов).

  • GoldWay: a1, b2, c3, d4, e5, f6, g7, h8 //Так называемая «Большая дорога»
  • DoubleWayG1A7: g1, f2, e3, d4, c5, b6, a7 //Двойники
  • DoubleWayh3B8: h3, g3, f4, e5, d6, c7, b8
  • TripleWayC1A3: c1, b2, a3 //Тройники
  • TripleWayC1H6: c1, d2, e3, f4, g5, h6
  • TripleWayH6F8: h6, g7, f8
  • TripleWayA3F8: a3, b4, c5, d6, e7, f8
  • UltraWayA5D8: a5, b6, c7, d8 //Косяки
  • UltraWayh5D8: h5, g5, f6, e7, d8
  • UltraWayE1A5: e1, d2, c3, b4, a5
  • UltraWayE1h5: e1, f2, g3, h5



Разбивка на диагонали происходит именно так. Обратите внимание, что все диагонали перечислены снизу-вверх. Это сделано для удобства программиста, хотя и не является обязательным. В свойствах объектов перечислены все эти диагонали, а у тех диагоналей, на которых клетка лежит, стоит true, на остальных — false.

Таким образом, я создал несколько массивов, каждый из которых содержал ссылки на объекты, соответствующие клеткам, которые находятся на диагонали, которой соответствует массив. Это позволяет нам заставить шашки двигаться.
Я не буду расписывать алгоритм до мелочей, опишу лишь в общих чертах: если на какой-либо из диагоналей встречается следующая ситуация:
«шашка(1) — шашка (2) — пустое поле» (где 1 и 2 — игроки и ход сейчас делает игрок №1), либо «пустое поле — шашка(2) — шашка (1)» [для боя в обе стороны], то присвоить свойству первой клетки, отвечающему за информацию о том, должна ли она рубить, единичку. Кроме этого присвоить некой общей переменной(назовем её jumpInd), отвечающей за бои, единичку. Это нужно, потому что может возникнуть ситуация, в которой у игрока будет выбор какой из шашек рубить.

Когда игрок нажимает на какую-либо шашку, первым делом проверяется условие jumpInd. Если jumpInd=1, а шашка, на которую кликнул игрок, не должна бить, то ничего не происходит, либо выводится сообщение о том, что игрок обязан рубить. Если jumpInd=0, то проверяется, может ли эта шашка сделать ход. Проверка выполняется аналогично проверке на бой, только немного короче: если на одной из диагоналей встречается ситуация: «шашка(1) — пустое поле(для белых) и пустое поле — шашка(1)» [для черных], то подсветить это поле. Если jumpInd=1 и игрок выбрал шашку, которой этот бой и будет производиться, то клетка, на которую будет произведен бой, также подсвечивается. Можно подсветить и шашку, которой будет сделан ход. Эти действия нужны лишь для удобства игрока. Следующим действием игрок может кликнуть по другой шашке и тогда алгоритм начнется сначала, а может кликнуть по подсвеченному полю и совершить таким образом ход.

После того, как игрок кликнул по подсвеченному полю, выполняются все методы, «подчищающие хвосты» и меняющие цвета клеток. Если jumpInd был равен нулю, то передаем ход второму игроку. Если jumpInd=1, то нужно проверить, может ли игрок срубить ещё что-либо. Если да, то подсветим поля, на которые он может попасть в результате боя. Не стоит забывать производить проверку того, не стала ли шашка дамкой. Если да, то бой будет производиться уже по дамочным правилам. Если боя вообще нет, то опять проверим на превращение в дамку, обнулим jumpInd и передадим ход.

Нам удалось реализовать простые передвижения шашки, но это только начало. Теперь мы должны реализовать движение дамок. Здесь всё несколько сложнее в реализации, по крайней мере я с ними изрядно попотел, хотя сама суть похожа.

Для каждой диагонали производится проверка условий в обе стороны, но я буду писать лишь в одну, потому что суть лишь в порядке проверок.
Проверка для хода: если встречается ситуация: «дамка — пустое поле», то подсветить эту клетку и проверить следующую. Выполнять до тех пор, пока диагональ не закончится, либо пока не встретится шашка(дамка) противоположного цвета.
Проверка для боя: если встречается ситуация: «дамка — z пустых полей — шашка(дамка) противоположного цвета — n пустых полей» (z>=0, n>0), то подсветить все n пустых полей после шашки соперника (если встретится ещё одна шашка противника, то прекратить) и проделать все те манипуляции с переменными, хранящими информацию о боях, что и в случае с обычной шашкой. После того, как игрок кликнет на подсвеченную клетку, следует проверить возможность ещё одного боя в любую сторону, кроме той, из которой мы пришли. Реализация всех этих проверок и условий заняла у меня много времени и места, но, возможно, я просто что-то упустил и можно было реализовать всё короче и красивее.

И ещё одна очень важная вещь: не стоит забывать о следующем условии: шашку нельзя срубить дважды. Это означает, что если шашка на диагонали, на которой вы сейчас находитесь, уже была срублена, то ход заканчивается (для обычной шашки на том поле, где она сейчас стоит, а для дамки на любым из пустых полей вплоть до этой уже срубленной шашки противника). Как вариант: можно хранить в каком-нибудь массиве адреса уже срубленных шашек, обнуляя его лишь при передаче хода. (собственно, я примерно так и делал)


(Дамка черных обязана рубить следующим путём: h5:e1:c3:e5 и останавливаться, так как шашка g3 всё ещё на доске. После этого белые рубят в дамки и выигрывают)

Весь этот алгоритм можно очень кратко описать следующей блок-схемой:

Первый клик:

Второй клик:

Чтобы программа поняла, где первый клик, а где второй, — создадим логическую переменную, false = первый клик, true = второй клик.

В общем-то, на этом реализация правил игры заканчиваются. Всё выглядит относительно несложно, но при переносе алгоритма в код возникает множество мелких проблем и трудностей, из-за которых код всё разбухает и разбухает. Виноват в этом сам принцип реализации доски, выбранный мной, но это лучшее из того, что пришло в голову за те две-три недели (да и те с ощутимыми перерывами), так как все действия максимально наглядны, запутаться практически невозможно, а код читается достаточно легко. Полагаю, что пожертвовать ради этого лаконичностью кода — допустимо.

Искусственный Интеллект

Однако на этом наши приключения не заканчиваются. Замечательно, что мы научили шашки двигаться, но с кем же мы будем играть? Нам необходимо создать искусственный интеллект для игры. К сожалению, полноценно его реализовать у меня так и не получилось, так как из-за плохой оптимизации программа начинала виснуть при просчете далее, чем на 5-6 ходов (порядка 20-25 тысяч позиций). При реализации я пользовался книгой Программирование шахмат и других логических игр и рекомендую её всем, кто заинтересуется проблемой ИИ в логических играх. Я остановился на улучшенном алгоритме «альфа-бета отсечений», но описывать здесь я его не буду, потому что он уже много раз на Хабре был описан до меня, например:

Применение машинного обучения в построении ИИ для игры в японские шахматы (сёги)
Минимакс на примере игры в зайца и волков
и другие.

К несчастью, концепция моего проекта на конкурс, как я уже говорил в начале, поменялась — поэтому ИИ так и остался недоделанным и был отброшен в дальний ящик. Некоторые принципы оценки позиции, которые я успел сформулировать — тоже. Я мог бы привести их здесь, но особого интереса из-за своей специфичности они не представляют. Если кому-то будет интересно, то могу написать отдельную статью про функцию оценки и алгоритм отсечений. Так как всё это дело происходило полгода назад и статью я писал в основном по памяти, то где-то могли возникнуть неточности или несоответствия, буду рад, если вы укажите мне на них в комментариях. Если что-то нужно расписать более подробно, то обращайтесь там же. Спасибо за внимание.


Смотрите также