18 / 18 / 16
Регистрация: 17.08.2015
Сообщений: 125
1

Шахматы: как определить, есть ли на пути ладьи другая фигура?

04.12.2017, 18:06. Показов 699. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, пишу многострадальные шахматы)
Подскажите как определить при ходе ладьии - есть ли на пути фигура?
Буду очень благодарен.

Возможный ход ладьи определяю так:
C++
1
2
3
4
5
6
7
bool Rook::isMove(int toX, int toY) {
    qDebug() << "Rook::isMove()" << toX << toY;
    if(((toX == mX) && (toY != mY)) || ((toX != mX) && (toY == mY))) {
        return true; 
    }
    return false;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.12.2017, 18:06
Ответы с готовыми решениями:

Необходимо сделать шахматы. Ходить должна только фигура ферзя.
Помогите, пожалуйста. Необходимо сделать шахматы на html с применением javascipt.Ходить должна...

По координатам точек определить в какой плоскости лежит фигура и что это за фигура
Вводятся координаты 4 точек надо определить в какой плоскости лежит фигура и что это за фигура

Шахматы: может ли белая фигура пойти на поле ef, не попав при этом под удар черной фигуры?
Поле шахматной доски определяется парой чисел, каждое из которых не превосходит 8: 1е число - номер...

Есть ли другая разрядность Unity?
Доброго времени суток, сколько искал на офф. сайте, так и не нашел 32-Unity (по крайней меры...

2
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
04.12.2017, 21:33 2
В цикле проверять клетки между двумя полями, есть ли в них фигуры.
1
18 / 18 / 16
Регистрация: 17.08.2015
Сообщений: 125
06.12.2017, 00:54  [ТС] 3
Спасибо, сделал, вот может кому пригодиться:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
   if (toX > mX) {
        while (cellX < toX) {
            ++cellX;
            if (cellX == toX) break;
            for (it = plist->begin(); it != plist->end(); ++it) {
                if ((*it)->getX() == cellX && (*it)->getY() == mY) {
                    return false;
                }
            }
        }
    } else if (toX < mX) {
        while (cellX > toX) {
            --cellX;
            if (cellX == toX) break;
            for (it = plist->begin(); it != plist->end(); ++it) {
                if ((*it)->getX() == cellX && (*it)->getY() == mY) {
                    return false;
                }
            }
        }
    }
По координате Y аналогично.
1
06.12.2017, 00:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2017, 00:54
Помогаю со студенческими работами здесь

Как запустить файл, в пути которого есть пробелы
Set WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;) obj = WshShell.Run(&quot;C:\Program...

Заданы координаты короля и ладьи на шахматной доске определить бьют ли фигуры друг друга
заданы координаты короля и ладьи на шахматной доске определить бьют ли фигуры друг друга весь код в...

Определить – находятся ладьи под боем или нет. Все координаты вводятся с клавиатуры
Прошу помочь написать данную программу. Разработать алгоритмы решения задачи и реализовать его:...

Одна загадка есть такая - не идёт игра другая
Некоторое время назад, задумал играть в «Пьяницу» это игра в карты самого с собой. Я взял и сделал...

Есть две кнопки. Одна - умножает число на 2 а другая прибавляет 3.
На экране число 1. Есть две кнопки. Одна - умножает число на 2 а другая прибавляет 3.

Каким уравнением задаётся фигура, если есть точки?
A(0;0;0) B(1;3;0) С(1;3;1)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru