Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102

Консольные шахматы - не ходят пешки

29.06.2023, 11:41. Показов 1811. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день, я продолжаю делать шахматы консольные шахматы, (прошлые темы Задача написать шахматы В продолжение к теме шахмат) вроде как написал но есть проблема, почему то не на доске не ходят пешки. По идее все должно работать корректно, сверялся с другими программами по шахматам. Моя функция пешек вроде бы рабочая. Потратил уже 4 часа на эту проблему. Кто-нибудь из форумчан не мог бы исправить её ? Кстати, заодно оцените мои шахматы, как вам реализация и т.д.
ссылка на мой гит.
https://github.com/FrancMartin... roject.git

Правила передвижение пешки я описал в pawn.cpp, а общие проверки соблюдения этих правил, в Gameplay.cpp, другие фигуры ходят нормально, просьба не давать мне советы, а решение, голова итак уже не работает ). Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2023, 11:41
Ответы с готовыми решениями:

Шахматы. Найти возможные ходы коня, пешки и ладьи
Происходит шахматная партия. Шахматная доска имеет размер 8x8. при этом координаты фигуры задаются в шахматной нотации, то есть состоят из...

Написать консольные шахматы
написать шахматный эндшпиль. написать код игры за черного короля, который по логике должен уходить от мата белых, у белых есть ладья и...

Написать консольные шахматы
Происходит шахматная партия. Шахматная доска имеет размер 8x8. При этом координаты фигуры задаются в шахматной нотации, то есть состоят...

40
 Аватар для Annemesski
2684 / 1343 / 483
Регистрация: 08.11.2016
Сообщений: 3,715
29.06.2023, 14:44
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от IGPIGP Посмотреть сообщение
будут считать
будут считать с учетом того что пешка стоит сразу на двух полях: если это поле постановки пешки - то перекрывает, если поле проходное (то есть находится позади пешки относительно движения вперед) то не перекрывает.
0
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
29.06.2023, 14:51  [ТС]
Во первых сделать шахматы это моя курсовая работа и выбирать другую игру не вариант. (я студент). Во вторых я игру делаю поэтапно, сначала выводил доску, потом создавал классы и описывал в них фигуры, все это время я тестил и все работало, потом я описал gameplay,тут реализовал игровой процесс, то есть сначала мы вводим буквы, то есть наш ввод конвертируется в координаты. ну и потом просто идет проверка двух координат на шах, может ли фигура вообще так двигаться, и что фигура нужного цвета, а функция AlternateTurn просто сменяет ходы. Дальше я планирую ввести остальные правила, и если все работает, то убрать часть с выводом в консоль, и сделать 2д шахматы в отельном оконном приложении. Но сейчас я столкнулся с проблемой что пешки ВООБЩЕ не двигаются, и поэтому я пришел на этот форум, так как они должны двигаться и я надеялся что мне ПОМОГУТ С ЭТОЙ проблемой, а не с тем чтобы добавить сюда рокировку и т.д. какой смысл от рокировки, если слон элементарно выйти не может.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.06.2023, 14:52
Цитата Сообщение от Annemesski Посмотреть сообщение
будут считать с учетом того что пешка стоит сразу на двух полях
Имхо, это плохо. Лучше всего описывать допустимые к движению и допустимые ко взятию (чужой пешки) поля. Это несколько нудная и скрупулёзная работа, но для развития логики ей цены нет. Нужно построить логическое дерево выбора доступных вариантов. Для хода пешки важно стоит ли она на своей стартовой линии. Для взятия на проходе, пешка должна находиться за одну клетку до стартовой линии вражеской пешки и уметь видеть предыдущий ход противника. Если слева или справа прыгнула вражеская пешка, то помимо простого перемещения вперёд (если свободно), у вашей пешки есть право ударить налево или направо. При взятии на проходе, убитая попрыгунья должна изыматься с поля. Это несложно.
1
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
29.06.2023, 14:55  [ТС]
Annemesski, короче я полностью перепишу pawn.cpp и pawn.h скорее всего функция ничего не возвращает и пешки стоят на месте
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6260 / 2980 / 1050
Регистрация: 01.06.2021
Сообщений: 11,047
29.06.2023, 15:14
IGPIGP, еще стоит добавить, что если король оказывается под шахом, а выбранная пешка не в состоянии перекрыть шах, равно как не может брать фигуру, которая атакует короля, то такую пешку нельзя передвигать.

Добавлено через 1 минуту
MartinFrank, начните с изучения шахматных правил.
1
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
29.06.2023, 15:30  [ТС]
Royal_X, я знаю шахматные правила мне не надо их учить.
0
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
29.06.2023, 15:57
Цитата Сообщение от Royal_X Посмотреть сообщение
начните с изучения шахматных правил.
Погодите, тут бы пешки начали ходить. Там уже и до нюансов постепенно доберёмся.

Добавлено через 15 минут
Вот где ошибка:

C++
1
2
3
4
5
6
bool Pawn::AreCellLegal(int originRow1, int originRow2, int DestRow1, int DestRow2, GameFigure* GameBoard[8][8]) {
    GameFigure* qpDest = GameBoard[DestRow1][DestRow2];
    if (qpDest == 0) {
        // Конечная клетка свободна
        if (originRow2 == DestRow2) {
            if (GetFigure() == 'W') {    <--- GetColor должно быть
ну и прочие аналогичные места

Добавлено через 4 минуты
На один шаг пешка сходила, на второй шаг - уже нет
Дальше дебажить мне уже не охота, как-нибудь самостоятельно
0
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
29.06.2023, 16:45  [ТС]
понял, но я уже все стер и пишу заново, я нашел в инете как можно ходы по другому реализовать, более просто
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.06.2023, 18:30
Цитата Сообщение от Royal_X Посмотреть сообщение
IGPIGP, еще стоит добавить, что если король оказывается под шахом, а выбранная пешка не в состоянии перекрыть шах, равно как не может брать фигуру, которая атакует короля, то такую пешку нельзя передвигать.
Royal_X, я вам больше скажу. Любая фигура связанная потенциальным шахом на её короля парализована. Пешка не исключение. Но да. Ваше замечание очень уместно. Оно подтверждает мою мысль о том, что шахматное пространство нельзя описывать чисто геометрически, а оно зависит от игрового состояния на текущий момент (ход).

Добавлено через 45 секунд
Цитата Сообщение от MartinFrank Посмотреть сообщение
Royal_X, я знаю шахматные правила мне не надо их учить.
Не похоже.
0
29.06.2023, 18:34

Не по теме:

Цитата Сообщение от MartinFrank Посмотреть сообщение
понял, но я уже все стер и пишу заново
Проблема в том, что как-то отпадает желание разбираться и отвечать вам. Всё одно будет новая тема, старое полностью заброшено, начато что-то новое со срочным вопросом, который через пол-дня будет абсолютно неактуален, т.к. "уже все стер и пишу заново"
Понять можно, поиски и все такое, но смысл вникать такие вопросы?

0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6260 / 2980 / 1050
Регистрация: 01.06.2021
Сообщений: 11,047
29.06.2023, 18:47
MartinFrank, сделай доску покрасивее, а то она у тебя не очень секси. Можно такую:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ R │ N │ B │ Q │ K │ B │ N │ R ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
║ P │ P │ P │ P │ P │ P │ P │ P ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
║   │   │   │   │   │   │   │   ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
║   │   │   │   │   │   │   │   ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
║   │   │   │   │   │   │   │   ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
║   │   │   │   │   │   │   │   ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
║ p │ p │ p │ p │ p │ p │ p │ p ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
║ r │ n │ b │ q │ k │ b │ n │ r ║
╚═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╝
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.06.2023, 18:55
Royal_X, он в консоли рубится. Как далёкие предки. Они не любили графические api. А я если бы решил наклепать доску для спарингов - уже и фигуры бы сделал. Из слоновой кости. Хотя слоников и жалко, но искуйство требует бивней.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6260 / 2980 / 1050
Регистрация: 01.06.2021
Сообщений: 11,047
29.06.2023, 19:02
Цитата Сообщение от IGPIGP Посмотреть сообщение
я вам больше скажу. Любая фигура связанная потенциальным шахом на её короля парализована. Пешка не исключение.
Да, верно. Я упомянул только пешки, т.к. ТС и другие тут обсуждали лишь движение пешек.
Цитата Сообщение от IGPIGP Посмотреть сообщение
Оно подтверждает мою мысль о том, что шахматное пространство нельзя описывать чисто геометрически, а оно зависит от игрового состояния на текущий момент (ход).
По этой причине, я рекомендовал ТС реализовать нотацию FEN. Оно реализуется очень просто - геометрическое описание всех фигур + несколько глобальных переменных, отвечающих за активную сторону, возможность рокировок, возможность взятия на проходе, счетчик полуходов (нужен для правила 50 ходов), номер хода.
Начальная позиция: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Реализовав FEN, потом очень легко можно проверить валидность позиции, а следовательно потенциального хода, т.к. в инете очень много примеров проверки валидности FEN строки. Т.е. ТС придумывать велосипед не нужно. Кроме того, с помощью FEN можно делиться позициями, а также передавать позицию шахматному движку.

Добавлено через 3 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
он в консоли рубится.
поэтому в посте Консольные шахматы - не ходят пешки я и предложил красивое оформление для консоли
Ранее, в теме Задача написать шахматы я советовал ТС использовать GDI+ в связке с шахматным шрифтом, но он проигнорировал. Ну пусть консолится.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.06.2023, 19:04
Цитата Сообщение от Royal_X Посмотреть сообщение
Да, верно. Я упомянул только пешки, т.к. ТС и другие тут обсуждали лишь движение пешек.
До связывания на короля ещё просто не дошло дело. Тут вопрос чисто технический. Пешка не ходит не зависимо от того, можно ей или нет. Просто не ходит и всё. В отличии от других фигур. Это мы уже нарыли деталей, чтобы дать понять ТС, что логика искривлена безнадёжно и нужно возвращаться к самому началу. Описанию правил, зависимостей и целей. Как у программы make ).
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6260 / 2980 / 1050
Регистрация: 01.06.2021
Сообщений: 11,047
29.06.2023, 19:07
Цитата Сообщение от IGPIGP Посмотреть сообщение
уже и фигуры бы сделал. Из слоновой кости.
а я вот предпочитаю фигуры Staunton из дерева. Именно такие используют на официальных международных турнирах вместе с DGT доской.
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.06.2023, 19:23
Цитата Сообщение от Royal_X Посмотреть сообщение
Именно такие используют на официальных международных турнирах вместе с DGT доской.
Они там помешаны на защите животных. И это в то, время как цены на носорожий рог на чёрном рынке выше жирафьего взгляда на жизнь. Мир катится в бездну. В которой все леса вырублены на шахматные фигуры, а слоны умерли от голода без сочной листвы тропических деревьев.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6260 / 2980 / 1050
Регистрация: 01.06.2021
Сообщений: 11,047
29.06.2023, 19:35
IGPIGP, самое обидное, что ради этих шахматистов рубят леса, а они жульничают. Так, недавно Карлсен Магнус высказался, что его соперник Ханс Ниманн использовал анальный вибратор, чтобы получать ходы дистанционно по азбуке Морзе. Убивают слонов ради анальной стимуляции...
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
29.06.2023, 19:43
Цитата Сообщение от Royal_X Посмотреть сообщение
IGPIGP, самое обидное, что ради этих шахматистов рубят леса, а они жульничают. Так, недавно Карлсен Магнус высказался, что его соперник Ханс Ниманн использовал анальный вибратор, чтобы получать ходы дистанционно по азбуке Морзе. Убивают слонов ради анальной стимуляции...
Блин... Это же надо так любить шахматы!
То есть, фигуры из дерева, а скрытый приёмник - из бивня? Ну что же... Это гигиенично, функционально, и не пропагандирует убийство бедных слоников. Они там и пьют из пакетов, чтобы не пропагандировать алкоголь. Теперь любой их алкоголик как пакет увидит, - не выдерживает и сразу бежит в кабак. Независимо от того что в пакете было. Рефлекс.
Но возвращаясь к шахматам, приходится признать снижение общего уровня интеллекта в пользу повышения усидчивости. Чем то же надо компенсировать облегчение головы... Ну хотя бы простатит им не грозит. Прости господи.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6260 / 2980 / 1050
Регистрация: 01.06.2021
Сообщений: 11,047
29.06.2023, 19:52
MartinFrank, перед тем, как двигать тут или иную фигуру, вам нужно проверить:
- не окончена ли игра (не только мат и пат, но рассмотреть правило 50 ходов, правила троекратного и пятикратного повторения ходов)
- может ли выбранная фигура ходить на выбранное поле или взять выбранную фигуру
- если игрок пытается взять на проходе или сделать рокировку, то проверить возможность их осуществления
- не находится ли король под шахом
- также можно объявить автоничью, когда ничья очевидна по количеству тех или иных фигур на доске
0
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
29.06.2023, 21:00  [ТС]
KSergey9, я уже все исправил, если интересно я скоро обновлю гит, и можете сравнить, если коротко просто немного переставил isMoved

Добавлено через 1 минуту
Royal_X, да я знаю что доска не очень, я вообще шахматы 3д делаю, а это пока временно написал, вроде глаза не режет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.06.2023, 21:00
Помогаю со студенческими работами здесь

Превращения пешки (Шахматы)
Как заставить пешку превращаться не только в ферзя. И реализовать на своем примере. angular.module(&quot;chessboard&quot;, ), ...

Шахматы, проверка корректности хода пешки
как всем известно: пешка ходиать может вначале на две клетки вперед, а затем по одной. делаю на с# и не могу придумать алгоритм. ...

Готические Шахматы и Шахматы Януса
Программы - компьютерные противники, реализующие сабж? - где скачать? (можно лицензионные и платные версии) Уровень их игры - рейтинг ЭЛО?...

Ходят по кругу мумии
Не знаю, как найти клип, где мумии (в бинтах) ходят по кругу. I word around world.

Через VPN не ходят DNS
Добрый день! У меня есть main офис и несколько branch офисов. В каждом офисе поднят свой домен. Соединены они между собой Site-to-Site...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru