|
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
|
|
Задача написать шахматы23.06.2023, 11:18. Показов 3982. Ответов 40
Добрый день, стоит задача написать шахматы, гуглил различные гайды, для примеров тестил различные коды, почти все проекты что я скачивал с опен сорса, не запускаются и выдают такую ошибку
ссылка на неразрешенный внешний символ main в функции int cdecl invoke_main void invoke_main@@yahxz Кто может подсказать, как её исправить, попробовал несколько решений с интернета, они не работают. И еще хотел задать два вопроса. 1) Я хочу сделать шахматы как отдельное приложение, в отдельном окне, то есть не в консоли, работаю в визуалке, что мне лучше использовать ? Я имею ввиду что при создании нового проекта в визуалке, есть мастер классических приложений, проекты общих элементов и т.д. что из этого лучше подойдет для создания шахмат. 2) Я хочу сделать шахматы с двумя полями, где первое поле, это будет сама шахматная доска, а второе поле будет история ходов, так вот, у меня есть пара идей как реализовать поле, но если у вас найдутся советы как это сделать проще, буду благодарен.
0
|
|
| 23.06.2023, 11:18 | |
|
Ответы с готовыми решениями:
40
Задача шахматы с++ Задача про шахматы
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 23.06.2023, 19:39 | ||
|
Для начала надо выбрать фреймворк. Например, для определенности Qt. Доска представляется в виде QTableWidget 8 x 8. Клетки представляются QLabel, в которые загружаются QImage - фигуры двух цветов на 2-х фонах. Т.е надо заготовить 6*4 + 2 картонок.(2 пустые клетки) Ход делается щелчком по своей фигуре и повторным щелчком на месте назначения. Отдельно решить вопрос о рокировке История ходов - QPlainTexrEdit. Прокрутка тебе там дается, как бесплатное приложение. Я бы сделал еще один QPlainTexEdit или Qlabel с комментариями программы (неверный ход, кто ходит, черным мат и т.д) Программа должна следить за допустимостью ходов. Вот в общем-то и все для начала ![]() Добавлено через 22 минуты Следующий шаг - произвольная расстановка фигур. Тут надо сделать еще один QTableWblget 6 х 2 с фигурами. После расстановки пусть программа решит одноходовку, потом двухходовку. Полным перебором. Программа должна следить за правильностью позиции ( ровно по одному королю, пешки не стоят на крайних горизонталях, черный король не под шахом, не больше десяти коней, не больше 8-ми пешек и т.д) Потом пусть программа станет одним из соперников. Сначала пусть она делает случайные (но допустимые) ходы, потом будем ее учить стать умнее. В общем, путей для творчества - навалом!
0
|
||
|
2469 / 1615 / 741
Регистрация: 17.03.2022
Сообщений: 5,264
|
||
| 23.06.2023, 20:04 | ||
|
0
|
||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 23.06.2023, 20:20 | ||
|
Картинки (иконки) фигур, я думаю, несложно найти в интернете. Но если лень заморачиваться, можно использовать коды символов Utf16. Тогда и надобность в цепочке "ячейка - QLabel - QImage" отпадет
Добавлено через 2 минуты ![]() Добавлено через 11 минут MartinFrank, Еще небольшие естественные подзадачи: - Вернуть ход назад - Вернуть позицию к определенному ходу - Записать партию в файл (и восстановить ее) Тогда у вас уже получается неплохой шахматный тренажер.
0
|
||
|
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
|
|
| 23.06.2023, 20:24 [ТС] | |
|
А я и не думал движок шахмат писать, да и не нужно в свободном доступе есть готовый chess engine c уже настроенным ИИ
0
|
|
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
|
| 23.06.2023, 20:33 | |
|
MartinFrank, в свободном доступе есть и готовые шахматные оболочки. По вашей логике, значит ничего не нужно делать.
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 23.06.2023, 21:36 | ||
|
А вот еще одно предложение - Запоминать не просто партии, а варианты. С оценкой. Ее будешь сам давать. Это, конечно, уже сложнее, построение и хранение деревьев. Но программ может получиться весьма интересной, и даже может заинтересовать публику. То есть пользуюсь ей можно потихонечку создавать интерактивный справочник дебютов. Скажем, нажимаешь Ctrl-V, и она теперь показывает разобранные тобой варианты. Cnl-A - новый вариант. Я такого нигде не видел. Если получится, чур, я в доле. ![]() А уж если ей добавить щах-движок и хотя бы примитивны ИИ, ей цены не будет Дерзай!
0
|
||
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
|||
| 23.06.2023, 21:38 | |||
|
Зачем ваши абстрактные рассуждения "про среды" и проблемы какого-то компилятора? Да ТС на эти проблемы вообще никогда не наткнётся. Да и С++ будет в данной задаче использован на 10% от силы. А вот как и чем рисовать - это реальная задача. Самое время предлагать устанавливать дополнительные библиотеки, да, когда, судя по словам ТС, он просто готовый код скомпилировать затрудняется. Вместо того, чтобы взять продукт, где все "из коробки". Корче, на С++ Builder я, конечно, не настаиваю. Однако хотел бы заметить, что все ваши рассуждения про компиляторы, баги и прочее к вопросу ТС вообще никакого отношения не имеют. Зачем вы всё это пишете - одному вам известно.
0
|
|||
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|
| 23.06.2023, 23:42 | |
|
MartinFrank, Но если у нас уже есть дерево вариантов, тут уже дело техники визуализировать его с помощью QTreeView. Кстати, дерево вариантов можно хранить в формате XTML. Самое естественное. Вот и модель уже готова!
Черт возьми! Неплохой справочник дебютов может получиться! Вот что может получиться при некоторой фантазии из простой задачи "нарисовать шахматную доску"
0
|
|
|
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,071
|
||||||||||
| 24.06.2023, 10:10 | ||||||||||
|
Если хочется рисовать все вручную, и достаточно базовой работы с окном, SDL, SFML, GLUT (хотя он, кажется, устарел), GLFW. Если хочется использовать стандартные виджеты вроде кнопочек, формочек, полей ввода - gtk, Qt. Как комбинацию предыдущих, можно посмотреть Nuklear.
0
|
||||||||||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||||||
| 24.06.2023, 10:58 | ||||||
|
MartinFrank, вот вам пример реализации на GDI+
6 строк кода и доска готова!
Что касается строки, то и тут все просто. У каждой фигуры свой символ, заглавная буква означает, что фигура на черном поле, строчная - на белом. Обратите внимание, что текст сглажен. В этом и сила GDI+.
1
|
||||||
|
|
|
| 24.06.2023, 11:04 | |
|
0
|
|
|
631 / 526 / 104
Регистрация: 05.08.2022
Сообщений: 2,810
|
||
| 24.06.2023, 13:09 | ||
|
Впрочем, был вопрос про современное состояние C++ Builder, потому лишь про него я и отвечал. Добавлено через 47 минут Royal_X, могли бы вы весь код выложить? Это офигеть!
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||
| 24.06.2023, 13:38 | ||
|
Не по теме: Я понял, что обсуждение разных ide и фреймворков зашло очень далеко. Если это продолжится, то нужно создать отдельную тему, причем одну для сравнения сред разработки, а другую для сравнения фреймворков. Хотя, я не вижу в этом необходимости. Многие посты пустой треп без всяких аргументов, наподобие "я пишу код в блокноте Windows 20 лет и неплохо зарабатываю, поэтому все новички тоже должны там писать, ибо блокнот винды круче всех ide". Я писал, что Visual Studio лучше других для разработки на С++ на винде, когда речь идёт о больших проектах, т.к. именно эта среда обладает очень богатым функционалом, а что касается инструментов отладки, профилирования, анализа кода и пр. на винде, то остальные ide ей заметно уступают. Причем, я хвалил этот продукт максимально объективно т.к. сам ею не часто пользуюсь (ибо нет у меня больших проектов) и это не тот случай, когда нужно хвалить и называть лучшей ту среду, в которой постоянно работаешь, чтобы не вышло так, мол я работаю не на лучшей среде разработки и чтобы это типа не затронуло ЧСВ. Я полностью свободен и могу тестировать любую ide. Нет у меня начальника, который заставляет 20 лет работать на говне, чтобы потом я стал, хочу я того или нет, говнопромоутером. Добавлено через 11 минут
Единственное, для нормальной симуляции доски нужно добавить: 1) перемещение фигур, например, кликом мышью 2) проверка корректности хода 3) запись партии в PGN формате 4) конвертирование партии в FEN (для генерации FEN недостаточно знать расположения всех фигур на доске, поэтому FEN должен генерироваться с учётом предыдущих ходов) 5) конвертирование FEN в строку под шрифт Chess Merida для печати доски. Конечно, можно упустить FEN, но было бы хорошо реализовать общепринятую нотацию для представления позиции. В будущем можно делиться позициями в FEN, либо передать FEN движку.
1
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|
| 24.06.2023, 13:51 | |
|
0
|
|
| 24.06.2023, 13:59 | |
|
Не по теме: DrOffset, хз, лучше спросить у тех, кто на новых версиях сидит
0
|
|
| 24.06.2023, 14:00 | |
|
0
|
|
| 24.06.2023, 14:12 | |
|
Не по теме: DrOffset, а что раньше было невозможно использовать clang? Этот clang можно же прикрутить почти ко всем ide и даже к редактору VS Code
0
|
|
| 24.06.2023, 14:14 | |
|
0
|
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
||
| 24.06.2023, 17:21 | ||
0
|
||
|
Нарушитель
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,601
|
||||||
| 24.06.2023, 19:45 | ||||||
|
KSergey9, вот код, который вы просили:
1) разделить на несколько cpp-файлов, т.к. не очень хорошо, когда лепят всё в main 2) функция OnPaint рисует непосредственно на окне. Сейчас в этом нет ничего страшного, т.к. рисуем всего одну строку. Но со временем как графика будет усложняться, то лучше отказаться от такого подхода, а вместо этого рисовать все в буфере и только потом вывести результат на окно.
1
|
||||||
| 24.06.2023, 19:45 | |
|
Написать консольные шахматы Как написать шахматы с этими условиями? Шахматы. Подскажите, как написать ферзя. Как написать шахматы с этими условиями? Задача про шахматы и рис из учебника Страуструпа, неясности с переменной типа double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|