А у кого есть опыт в написании шахмат?)))

топ 100 блогов xcontcom30.05.2017 А у кого есть опыт в написании шахмат?)))

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


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

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

Доску инициализировал в виде трехмерного массива:

А у кого есть опыт в написании шахмат?)))

i и j - горизонталь и вертикаль. k - фигура:
0, 6 - король (белый, черный)
1, 7 - ферзь
2, 8 - ладья
3, 9 - слон
4, 10 - конь
5, 11 - пешка

Довольно удобно получилось. В нужном месте вызываем board[y][x].indexOf(1); чтобы узнать, какая фигура находится в указанной клетке (если возвращает -1 - клетка не занята).

Написал интерфейс, чтобы фигуры можно было двигать: http://xcont.com/chess/ (ну да, можно первым же ходом, любой фигурой, короля противника слопать)))

А вот как фигуры ходят - с этим возникла проблема. Начал с короля, сделал проверку, чтобы он ходил не дальше, чем на одну клетку:

А у кого есть опыт в написании шахмат?)))

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

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



Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
Помню прихожу в отдел с утра, а я не в духе, настроение почему то поганое. Захожу в кабинет, а там мужик спит на нашем диване. Я у свого коллеги спрашиваю «это че такое»? А он мне — вот вчера задержали, он свою жену убил. Ну, я его бужу, говорю ты хоть помнишь что вчера было? Он — не, не ...
Ща тоже выдам за политику! Чего это я всё от большого дела вдалеке? Ща выдам. Давно известно и вообще это уже догмат, что презединтессы наши красотою не лепы (или стоило написать слитно?), бровьми не союзны, ну и ладно бы как бы, с лица воду не пить, ...
Минобороны РФ завершает испытание сверхдальнобойной ракеты класса «воздух-воздух» Р-37М. Она может поражать высокоскоростные воздушные цели на дальности более 300 км. Точность при стрельбе на такое расстояние обеспечивает уникальная система прицеливания. В нее входят современный ...
С интересом и уважением наблюдаю за ЖЖ Евгения Ройзмана ( roizman ). Не так давно Евгений поднял интересную для Перми тему. Этот сюжет пермского журналиста Вячеслава Дегтярникова я видел уже давно. Мне казалось, что вынос этой ситуации на ...
Classic Rock Germany October 2021 – 132 стр., 138 Мб, PDF – здесь . Материал об Iron Maiden оттудова. ...