|
1 / 1 / 0
Регистрация: 20.12.2021
Сообщений: 102
|
|
Задача написать шахматы23.06.2023, 11:18. Показов 3910. Ответов 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
|
||
|
2462 / 1606 / 741
Регистрация: 17.03.2022
Сообщений: 5,228
|
||
| 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
|
|
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,464
|
|
| 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
|
|
|
4070 / 2704 / 433
Регистрация: 09.09.2017
Сообщений: 12,023
|
||||||||||
| 24.06.2023, 10:10 | ||||||||||
|
Если хочется рисовать все вручную, и достаточно базовой работы с окном, SDL, SFML, GLUT (хотя он, кажется, устарел), GLFW. Если хочется использовать стандартные виджеты вроде кнопочек, формочек, полей ввода - gtk, Qt. Как комбинацию предыдущих, можно посмотреть Nuklear.
0
|
||||||||||
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,464
|
||||||
| 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
|
||
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,464
|
||
| 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
|
||
|
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
|
|
| 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
|
||
|
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,464
|
||||||
| 24.06.2023, 19:45 | ||||||
|
KSergey9, вот код, который вы просили:
1) разделить на несколько cpp-файлов, т.к. не очень хорошо, когда лепят всё в main 2) функция OnPaint рисует непосредственно на окне. Сейчас в этом нет ничего страшного, т.к. рисуем всего одну строку. Но со временем как графика будет усложняться, то лучше отказаться от такого подхода, а вместо этого рисовать все в буфере и только потом вывести результат на окно.
1
|
||||||
| 24.06.2023, 19:45 | |
|
Написать консольные шахматы Как написать шахматы с этими условиями? Шахматы. Подскажите, как написать ферзя. Как написать шахматы с этими условиями? Задача про шахматы и рис из учебника Страуструпа, неясности с переменной типа double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|