Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Определение мата в шахматах?

Ответить
Настройки темы
Теория - Определение мата в шахматах?

Пользователь


Сообщения: 96
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


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

В общем, подскажите как кто видит как можно организовать мат для противника? Игра друг против друга, без "ИИ".

Спаасибо заранее, а то мучаюсь уже долго с этой проблемой..

Отправлено: 13:58, 27-05-2012

 

Старожил


Сообщения: 198
Благодарности: 51

Профиль | Отправить PM | Цитировать


Ну вам по сути необходимо определить следующие необходимые и достаточные критерия мата:
1. Королю шах.
2. Все соседние клетки возле короля под ударом / заняты фигурами.
3. Нельзя снять фигуру, которая организует шах. То есть нельзя туда пойти фигурой. (в.т.ч королем)
4. Нельзя закрыться от шаха. Т.е. нельзя пойти на соответсвующую линию / диагональ. Этот случай отметается, если:
1). если линий/диагоналей несколько одновременно;
2). это конь или пешка;
3). одна линия/диагональ + конь.
По реализации:
1. Опеределить клетки, которые нам интересны. Место короля, вокруг короля, линии/диагональ удара, фигура, организующая шах.
2. Можно ли осуществить ход какой-либо фигурой в интересные клетки (клетки вокруг короля рассмотреть только для короля). Если можно, то не мат.
Вроде так. Может чего и упустил.

Последний раз редактировалось PhilB, 27-05-2012 в 14:29.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:24, 27-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Killer_13, проверять все возможные ходы всех фигур матуемого ( ) короля. Если какой либо ход предотвращает бой короля, то тогда мата нет.
Цитата Killer_13:
Противник жертвует фигурой прикрывая короля и после этого у короля например открывается свободная клетка для хода... »
"Противник жертвует фигуру, прикрывая короля ИЛИ атакует фигуру объявившую шах" - это можно.
"у короля например открывается свободная клетка для хода" - это, простите, не ваше дело.
Т.е. оценивать ситуацию вперед никто не просит. Вперед паровоза бежать не надо.
Есть мат - отлично. Нет мата - болит голова у человека.
В противном случае, если компьютер будет думать за человека даже на 1 ход, это будет ИИ. Это уже противоречит условиям
Цитата Killer_13:
Игра без "ИИ". »
Т.е. еще раз. Смотрим все ходы, всех фигур, которые могут ходить (не открывая короля под бой), атаковать фигуру объявившую шах или закрывать короля + ходы короля, на безопасные клетки. Все, больше ничего не требуется. Никаких "думалок" вперед и пр.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:26, 27-05-2012 | #3


Пользователь


Сообщения: 96
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Много полезной информации, нужно переварить...
Я почему еще задал вопрос.. Я не знаю как заканчивать игру..
Имеется ввиду например, проиграл такой-то игрок. А Такое нельзя писать исходя только из того, что король под ударом и ему некуда походить..

Цитата lxa85:
Т.е. еще раз. Смотрим все ходы, всех фигур, которые могут ходить (не открывая короля под бой), атаковать фигуру объявившую шах или закрывать короля + ходы короля, на безопасные клетки. »
- осталось все это организовать в своем алгоритме..
Спасибо, теперь есть почва для размышлений.

-------
Не судите строго :) -> хттп:// jdev.name


Отправлено: 14:41, 27-05-2012 | #4


Аватара для lxa85

Необычный


Contributor


Сообщения: 4462
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата Killer_13:
Спасибо, теперь есть почва для размышлений. »
На здоровье!
Программой потом поделитесь? (желательно в исходниках, исключительно для личного пользования)

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 14:45, 27-05-2012 | #5


Пользователь


Сообщения: 96
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
Программой потом поделитесь? (желательно в исходниках, исключительно для личного пользования)
- могу, мне не жалко.
Просто пока писалась локальная игра - код был читабельный, и менее более правильно запрограммирован - тоисть логика отделена от вьюва и так д..
Когда начал писать сетевой вариант началась каша.. как бы все работает.. но мне не нравится мой кашеварный код.. Сервер организовывал с помощью RPC. Но опять же чтоб моментально прослушивать ход или чат, таймер стучит серверу каждую секунду. Ну короч... много разного.. которое я бы имплементировал по другому, если было б время и... так д...

-------
Не судите строго :) -> хттп:// jdev.name


Отправлено: 14:53, 27-05-2012 | #6


Аватара для yurfed

Ветеран


Сообщения: 20045
Благодарности: 3122

Профиль | Отправить PM | Цитировать


Цитата Killer_13:
могу, мне не жалко. »
Очень будет интересно посмотреть на исходник.
Возможно его тут и "вылижут" до блеска.
Я сам не такой большеголовый сишник (наверно у вас написано на С), как lxa85, Iska, .... и многие другие,
Просто всегда есть интерес, каким образом складывается алгоритм у разных людей в окончательный, пусть и не доведёный до блеска эрзац

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 15:39, 27-05-2012 | #7


Пользователь


Сообщения: 96
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Цитата yurfed:
Очень будет интересно посмотреть на исходник. »
- чтоб мне стыдно стало?
Цитата yurfed:
Возможно его тут и "вылижут" до блеска. »
- не сомневаюсь, но мне свои мозги шевелить нужно.
Цитата yurfed:
Я сам не такой большеголовый сишник (наверно у вас написано на С), как lxa85, Iska, .... и многие другие, »
- а разве я говорил что это "С"? Это Java со свинговским интерфейсом, игрой по сети. чатом, историей и так д...
Цитата yurfed:
Просто всегда есть интерес, каким образом складывается алгоритм у разных людей в окончательный, пусть и не доведёный до блеска эрзац »
- у меня например много лишнего кода.. Есть поле для рефакторинга, но опять же.. все упирается во время..

-------
Не судите строго :) -> хттп:// jdev.name


Отправлено: 16:28, 27-05-2012 | #8


Аватара для yurfed

Ветеран


Сообщения: 20045
Благодарности: 3122

Профиль | Отправить PM | Цитировать


Цитата Killer_13:
чтоб мне стыдно стало? »
Ну зачем так. Ни в коем случае.
Цитата Killer_13:
но мне свои мозги шевелить нужно. »
Если будет пример и облизаный - тогда и будете шевелить мозгами - почему так, а не иначе
Цитата Killer_13:
а разве я говорил что это "С"? »
Нет, не говорили. Что это будет на
Цитата Killer_13:
Java со свинговским интерфейсом, игрой по сети. чатом, историей и так д... »
просто не ожидал.
Цитата Killer_13:
у меня например много лишнего кода.. »
Вот и посмотрите на "полный минимализм" кода, если кто-то и ребят возьмётся для спортивного и общего интереса

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 17:07, 27-05-2012 | #9


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


yurfed, справедливости ради токмо, скажу, что я давно уже не C-шник — в том плане, что мои познания в С устарели лет на пятнадцать-двадцать как минимум. Я остановился в программировании на C где-то на рубеже «закат эры DOS/Windows 3.1». По повсеместному распространению C++ прочёл несколько книг, дабы хоть иметь некоторое представление о базовых принципах, писать же на нём и вовсе ничего не писал. С C# знаком и вовсе понаслышке.

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

Отправлено: 17:19, 27-05-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Теория - Определение мата в шахматах?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход