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

топ 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/ (ну да, можно первым же ходом, любой фигурой, короля противника слопать)))

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

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

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

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



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

Предыдущие записи блогера :
Архив записей в блогах:
Одна из многих вин, вменяемых будущему генералиссимусу в начале Отечественной: неверие в нападение вермахта 22 июня, приказы не провоцировать немцев и для ответного удара не пересекать границу. Много лет спустя выясняется, что с точки зрения геополитики эта жертва миллионами ...
Недавно нашёл на компьютере фоторепортаж об августовской вылазке в лес за грибами. Решил поделиться, ведь зима уже порядком утомила монохромностью и морозами. Хорошо летом в лесу - и погулять можно, и пофотографировать, и покуш ...
В этот день в 1725 году умер Пётр I. То ли от простуды, то ли от мочекаменной болезни (пишут, что от боли так страшно кричал несколько дней, что к нему боялись подойти...). Завещания не успел оставить, потом его за него написали на Западе, приписав России агрессивность и безудержный ...
Интересно, я доживу до того момента, когда не будет стыдно за нашу систему образования? А то слежу за последними новостями в сфере науки и образования, и становится мне грустно. Надеюсь, министр Ливанов выпрямит ситуацию в этом нелегком вопросе. 30 января в Министерстве образования ...
Большие попы уже никого не удивляют, их нажирают искусственно, употребляя огромное количество калорий, их накачивают какой-то дрянью... Люди соревнуются невесть в чем и неизвестно зачем. Но вот эта странная тетя меня поразила, она стремится , чтобы ее "запомнили", как самую большую ж..у ...