Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2013, 14:33   #1
mugla
Пользователь
 
Регистрация: 28.06.2013
Сообщений: 11
Восклицание Шахматы. Delphi!

ВЕТВЛЕНИЕ! Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число– номер вертикали (при счете слева направо), второе — номер горизонтали (при счете снизу вверх). Даны натуральные числа a, b, c,d, каждое из которых не превосходит 8.
а) на поле (a, b) расположена ладья. Определить, угрожает ли она полю (с, d);
б) на поле (a, b) расположен слон. Определить, угрожает ли он полю (c, d);
в) на поле (a, b) расположен король. Определить, может ли он одним ходом попасть на поле (с, d);
г) на поле (a, b) расположен ферзь. Определить, угрожает ли он полю (c, d)
д) на поле (a, b) расположена белая пешка. Определить, может ли она одним ходом попасть на поле (с, d):

Наброски уже есть, но код очень длинный и, бывают, с Королем проблемы, может есть решение короче 340 строк!
mugla вне форума Ответить с цитированием
Старый 28.06.2013, 15:01   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

а) (a = c) or (b = d)
б) abs(a - c) = abs(b - d)
в) (abs(a - c) <= 1) and (abs(b - d) <= 1)
г) (a = c) or (b = d) or (abs(a - c) = abs(b - d))
д) (c = a) and (((b = 2) and (d - b = 2)) or (d - b = 1))
Цитата:
Сообщение от Utkin Посмотреть сообщение
В шахматах есть какое-то правило, что пешка может рубить проходящую мимо пешку, в случае если она еще не двигалась.
Предложенный мной вариант предполагает, что поле пусто. (просто уточнение)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 28.06.2013 в 15:10.
BDA вне форума Ответить с цитированием
Старый 28.06.2013, 15:05   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
а) на поле (a, b) расположена ладья. Определить, угрожает ли она полю (с, d);
Если а совпадает с с, и/или b совпадает с d, то условие выполнено.
Цитата:
в) на поле (a, b) расположен король. Определить, может ли он одним ходом попасть на поле (с, d);
Код:
If (abs(a-c)<2) and (abs(b-d))<2 then действие
Как-то так.
Цитата:
д) на поле (a, b) расположена белая пешка. Определить, может ли она одним ходом попасть на поле (с, d):
Здесь составное условие. В шахматах есть какое-то правило, что пешка может рубить проходящую мимо пешку, в случае если она еще не двигалась.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 28.06.2013, 16:21   #4
mugla
Пользователь
 
Регистрация: 28.06.2013
Сообщений: 11
По умолчанию

а можешь также расписать когда не угрожают? У меня немного получилось, но я запутался
mugla вне форума Ответить с цитированием
Старый 28.06.2013, 16:23   #5
mugla
Пользователь
 
Регистрация: 28.06.2013
Сообщений: 11
По умолчанию

огромное спасибо
mugla вне форума Ответить с цитированием
Старый 28.06.2013, 17:44   #6
mugla
Пользователь
 
Регистрация: 28.06.2013
Сообщений: 11
По умолчанию

Код:
if (abs(a-c)<2) and ((abs(b-d))<2) then Edit25.Text:='Король угрожает полю cd!'; //Король
Как можно прописать, что он не угрожает?
mugla вне форума Ответить с цитированием
Старый 28.06.2013, 17:46   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Код:
...then Edit25.Text:='Король угрожает полю cd!' else Edit25.Text:='Не угрожает';
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.06.2013, 17:58   #8
mugla
Пользователь
 
Регистрация: 28.06.2013
Сообщений: 11
По умолчанию

спасибо! и, последний вопрос, как прописать, что пешка угрожает? в 1 случаи получается, а во втором нет
mugla вне форума Ответить с цитированием
Старый 28.06.2013, 18:08   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

А какие случаи Вы рассматриваете?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.06.2013, 18:11   #10
mugla
Пользователь
 
Регистрация: 28.06.2013
Сообщений: 11
По умолчанию

Бывает вот так получается if (a-1=c) and (b+1=d)then Edit27.Text:='Пешка угрожает полю cd!'
mugla вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шахматы qpuTuJlb Помощь студентам 5 06.04.2012 21:41
шахматы Linka_fX Помощь студентам 4 25.03.2011 10:57
Шахматы neklans Общие вопросы Delphi 11 23.09.2010 12:14
Шахматы в Delphi ivansiasise Фриланс 8 20.09.2010 17:39
Delphi шахматы kacky Помощь студентам 3 30.10.2008 20:09