|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Определение мата в шахматах? |
|
|
Теория - Определение мата в шахматах?
|
Пользователь Сообщения: 96 |
Профиль | Сайт | Отправить PM | Цитировать Подскажите пож как можно определить мат в шахматах? А то не могу придумать как это запрограммировать.
Дошел до того, что могу определять какие клетки под ударом, чтоб король туда не мог ходить. Могу сделать, чтоб каждый раз проверяло не находится ли король под ударом... Это все можно, но вопрос и проблема в том, что если например король под ударом и все позиции куда он может походить тоже под ударом.. Остается такая штука как.. Противник жертвует фигурой прикрывая короля и после этого у короля например открывается свободная клетка для хода... В общем, подскажите как кто видит как можно организовать мат для противника? Игра друг против друга, без "ИИ". Спаасибо заранее, а то мучаюсь уже долго с этой проблемой.. |
|
Отправлено: 13:58, 27-05-2012 |
Старожил Сообщения: 198
|
Профиль | Отправить PM | Цитировать Ну вам по сути необходимо определить следующие необходимые и достаточные критерия мата:
1. Королю шах. 2. Все соседние клетки возле короля под ударом / заняты фигурами. 3. Нельзя снять фигуру, которая организует шах. То есть нельзя туда пойти фигурой. (в.т.ч королем) 4. Нельзя закрыться от шаха. Т.е. нельзя пойти на соответсвующую линию / диагональ. Этот случай отметается, если: 1). если линий/диагоналей несколько одновременно; 2). это конь или пешка; 3). одна линия/диагональ + конь. По реализации: 1. Опеределить клетки, которые нам интересны. Место короля, вокруг короля, линии/диагональ удара, фигура, организующая шах. 2. Можно ли осуществить ход какой-либо фигурой в интересные клетки (клетки вокруг короля рассмотреть только для короля). Если можно, то не мат. Вроде так. Может чего и упустил. |
Последний раз редактировалось PhilB, 27-05-2012 в 14:29. Отправлено: 14:24, 27-05-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Killer_13, проверять все возможные ходы всех фигур матуемого ( ) короля. Если какой либо ход предотвращает бой короля, то тогда мата нет.
Цитата Killer_13:
"у короля например открывается свободная клетка для хода" - это, простите, не ваше дело. Т.е. оценивать ситуацию вперед никто не просит. Вперед паровоза бежать не надо. Есть мат - отлично. Нет мата - болит голова у человека. В противном случае, если компьютер будет думать за человека даже на 1 ход, это будет ИИ. Это уже противоречит условиям Цитата Killer_13:
|
||
------- Отправлено: 14:26, 27-05-2012 | #3 |
Пользователь Сообщения: 96
|
Профиль | Сайт | Отправить PM | Цитировать Много полезной информации, нужно переварить...
Я почему еще задал вопрос.. Я не знаю как заканчивать игру.. Имеется ввиду например, проиграл такой-то игрок. А Такое нельзя писать исходя только из того, что король под ударом и ему некуда походить.. Цитата lxa85:
Спасибо, теперь есть почва для размышлений. |
|
------- Отправлено: 14:41, 27-05-2012 | #4 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Killer_13:
Программой потом поделитесь? (желательно в исходниках, исключительно для личного пользования) |
||
------- Отправлено: 14:45, 27-05-2012 | #5 |
Пользователь Сообщения: 96
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
Просто пока писалась локальная игра - код был читабельный, и менее более правильно запрограммирован - тоисть логика отделена от вьюва и так д.. Когда начал писать сетевой вариант началась каша.. как бы все работает.. но мне не нравится мой кашеварный код.. Сервер организовывал с помощью RPC. Но опять же чтоб моментально прослушивать ход или чат, таймер стучит серверу каждую секунду. Ну короч... много разного.. которое я бы имплементировал по другому, если было б время и... так д... |
|
------- Отправлено: 14:53, 27-05-2012 | #6 |
Ветеран Сообщения: 20104
|
Профиль | Отправить PM | Цитировать Цитата Killer_13:
Возможно его тут и "вылижут" до блеска. Я сам не такой большеголовый сишник (наверно у вас написано на С), как lxa85, Iska, .... и многие другие, Просто всегда есть интерес, каким образом складывается алгоритм у разных людей в окончательный, пусть и не доведёный до блеска эрзац |
|
------- Отправлено: 15:39, 27-05-2012 | #7 |
Пользователь Сообщения: 96
|
Профиль | Сайт | Отправить PM | Цитировать Цитата yurfed:
Цитата yurfed:
Цитата yurfed:
Цитата yurfed:
|
||||
------- Отправлено: 16:28, 27-05-2012 | #8 |
Ветеран Сообщения: 20104
|
Профиль | Отправить PM | Цитировать Цитата Killer_13:
Цитата Killer_13:
Цитата Killer_13:
Цитата Killer_13:
Цитата Killer_13:
|
|||||
------- Отправлено: 17:07, 27-05-2012 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать yurfed, справедливости ради токмо, скажу, что я давно уже не C-шник — в том плане, что мои познания в С устарели лет на пятнадцать-двадцать как минимум. Я остановился в программировании на C где-то на рубеже «закат эры DOS/Windows 3.1». По повсеместному распространению C++ прочёл несколько книг, дабы хоть иметь некоторое представление о базовых принципах, писать же на нём и вовсе ничего не писал. С C# знаком и вовсе понаслышке.
Так что, мой нынешний уровень — худо-бедно могу прочесть не специфический код, понять о чём он, попытаться определить причину конкретного поведения приложения. Но не более. |
Отправлено: 17:19, 27-05-2012 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Определение ОС | Fresh96 | Скриптовые языки администрирования Windows | 1 | 19-05-2011 11:58 | |
Определение битрейта | Frost O.S | Видео и аудио: обработка и кодирование | 9 | 23-10-2010 18:09 | |
Неверное определение HDD | datish | Непонятные проблемы с Железом | 11 | 12-08-2007 14:12 | |
Определение CD | Scrip | Хочу все знать | 6 | 27-08-2004 12:02 | |
Определение USB | Dimon | Программирование и базы данных | 6 | 24-09-2003 22:08 |
|