Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Python
Перезагрузить страницу Какой наилучший способ для проверки в шахматах шаха и мата?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
chico chico вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 07.09.2017
Question Какой наилучший способ для проверки в шахматах шаха и мата? - 07.09.2017, 21:07

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

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

python Код:
def movement(self, board_y, board_x):
    legal_moves = []
    black_square_under_attack = []
    white_square_under_attack = []
    if self.name in ('k', 'K'):
        direction = (1, 0, -1)

    def check_rule(direction):
        for dy in direction:
            for dx in direction:
                if self.name == ('k'):
                    if abs(dy) <= 1 and abs(dx) <= 1:
                        y = self.y - dy
                        x = self.x - dx
                        append_moves(y,x)
Ответить с цитированием
  (#2 (permalink)) Старый
beroal beroal вне форума
Member
 
Сообщений: 108
Сказал(а) спасибо: 3
Поблагодарили 4 раз(а) в 4 сообщениях
Регистрация: 13.12.2002
По умолчанию 08.09.2017, 13:12

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

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

Метки
python , шахматы

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу проверки simba199 Visual Basic 0 04.05.2012 16:30
Наилучший выбор? Fish_su Видеокарты 18 29.07.2011 13:33
Какой способ подключения к интернету лучше - беспроводной или ADSL? НИКОЛАЙ DFKTYNBYJDBX Любые вопросы от новичков 10 13.07.2011 13:28
Посоветуйте наилучший вариант под Core i5 Joker X Материнские платы 5 16.05.2011 20:27
Существует ли какой-либо способ конвертирования проекта 2005 назад к 2003 Alexiski .NET 11 26.05.2009 19:11
Подскажите наилучший проц для матери просто крепкий Моддинг 3 03.03.2009 21:54
Последствие антивирусной проверки... Max Общетематический 3 01.05.2008 19:13
проверки на некорректный ввод joka Visual Basic 2 17.12.2007 22:31
Прога для проверки винтов igor_s Софт и программы 4 23.08.2007 15:59
проблема нахождения ходов в шахматах ChronicK06 Prolog 2 06.02.2006 02:32
Какой существует способ способ вывода на печать текста и изображений ИА C++ Builder 1 28.07.2004 03:41
Есть ли в Delphi какой нибуть способ остановить работу компонента ~Igor~ Delphi 1 01.10.2003 08:21



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов