|
0 / 0 / 0
Регистрация: 05.03.2023
Сообщений: 1
|
||||||
Оцените и посоветуйте как можно улучшить код Крестики-нолики05.03.2023, 19:56. Показов 17294. Ответов 284
Метки нет (Все метки)
Я учусь в 10 классе и для индивидуального проекта мне нужно чтобы вы оценили и как-то посоветовали улучшить код программы крестики нолики на C++. Вот сам код:
0
|
||||||
| 05.03.2023, 19:56 | |
|
Ответы с готовыми решениями:
284
Крестики-нолики, улучшить программу Как оптимизировать данный код игры крестики нолики? Оцените игру крестики нолики (Player vs Bot easy) |
|
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
|
|
| 08.03.2023, 13:18 | |
|
SmallEvil, вообще это GUI всегда контролирует, чтобы движки не шалили и не делали ходов не по правилам. Он же контролирует время и выделяет нужное количество памяти для движка. Как понимаю, XLAT не собирается делать GUI. В таком случае, этот консольный "арбитр" должен всем этим заняться.
Идеальный вариант, конечно, это создание GUI для игры и матча движка + описание протокола движка, скажем, в документе pdf. Дальше каждый ознакомливается с протоколом и после создает свой движок. Есть ещё вариант, найти в инете GUI под renju/gomoku. В таком случае, останется только написать движок, соблюдая протокол. Например, Yixin Board (https://github.com/accreator/Yixin-Board) - GUI для движка Yixin, но разработчик выложил и описание протокола, так что к оболочке можно прикрутить свой движок. Только не проверял, поддерживает ли данная оболочка турнир движков.
1
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|
| 08.03.2023, 13:41 | |
|
1
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 08.03.2023, 14:00 | ||
|
На этом его функция и полномочия должны заканчиваться. Если это вдруг не так, значит херовый получился GUI. GUI - он Graphical User Interface ?
0
|
||
|
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
|
|
| 08.03.2023, 14:17 | |
|
SmallEvil, GUI не только рисует, по крайней мере, так было в шахматных оболочках, которые я встречал (яркий пример это GUI Arena). Более того, представь, что хочешь играть без движка сам с собой или с другом, то кто тогда проверяет на корректность? Конечно же, GUI. Но и движок должен проверять, дабы иметь возможность играть в консоли без GUI.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 08.03.2023, 14:29 | |
|
Royal_X, тогда эта проверка уже не часть GUI, не должна ею быть, но может использоваться интерфейсом.
То есть ее нужно выделить отдельно. Ну да ладно. Это уже оффтоп. Если есть возможность проверять какую-то корректность без движка, ну что ж, повезло.
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
||
| 08.03.2023, 15:12 | ||
|
0
|
||
|
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
|
|
| 08.03.2023, 15:30 | |
|
alexu_007, GUI не только для вывода доски. Любое взаимодействие пользователя с движком должно реализоваться через GUI. Например, шахматный GUI кроме отображения доски, должен проверять корректность позиции, уметь расставлять и двигать фигуры, записывать ходы, работать с дебютной книгой и эндшпильными базами (особенно с базами на метрике DTM, т.к. DTZ больше для движка, а не для оболочки), отображать шахматные часы и контролировать время, подключать и отключать движки, настраивать движок через удобный UI, давать пользователю возможность выбрать количество процессоров и количество памяти для движка, останавливать и повторно запускать движок и т.д. Перечислять можно бесконечно...
Только придираться не стоит, я использую "GUI" в широком смысле = оболочка, а не как чисто графическая библиотека.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 08.03.2023, 15:41 | ||
|
Но по вашему широкому смыслу, весь проект использующий GUI - является GUI. И нет никакого разделения на логику, модели и так далее ? Не нужно так сильно размывать довольно четкие концепции. Если у программы логика и GUI сильно связанны и зависимы - это только проблемы индейца.
0
|
||
|
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
|
||
| 08.03.2023, 16:00 | ||
Я тебя понимаю. В программировании "gui" это совсем другое. Но в мире программ настольных игр уже есть устоявшаяся практика, что этой аббревиатурой называют всю оболочку.
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 08.03.2023, 16:03 | |
|
Royal_X, ну так, коса, коса и коса - три разные косы. Но мы то тут все пограммисты
![]() Royal_X, уже пишешь бота ? )
0
|
|
|
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
|
|
| 08.03.2023, 16:23 | |
|
SmallEvil, может когда будет настроение и когда будет известен точный протокол, что-то попробую написать. Не обещаю ничего и не обещаю сильного бота, но Randовичу конкуренцию точно составит
![]() Когда-то я хотел написать шахматный движок, который поддерживает UCI протокол, чтобы пустить его официально на турниры движков CCRL, TCEC, CEGT. Но потом понял, что для меня это сложновато будет. Самый сильнейший шахматный движок в мире это Stockfish и его код открыт. Но в его коде я не всё понимаю, поэтому думаю, что я не дорос до того, чтобы писать движки.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 08.03.2023, 16:31 | |||
|
Скорее всего. Хотя простенький и тупенький могет и с готовой "доской" работать. Но да, нужен ее интерфейс. Добавлено через 53 секунды Думаю достаточно перегрузить оператор (x,y) и (plot). Добавлено через 1 минуту
0
|
|||
|
6315 / 3038 / 1054
Регистрация: 01.06.2021
Сообщений: 11,574
|
|
| 08.03.2023, 16:54 | |
|
SmallEvil, тут реально всё зависит от настроения и времени, а иначе не хватит терпения на создание хорошего алгоритма минимакса для альфа-бета-отсечения и поиска основных отклонений (PVS). В этих крестиками-ноликах узлы на больших досках будут увеличиваться как ещё те черти и нужно будет правильно их сокращать. Кроме того, наверное, нужно хардкодить базу популярных структур.
0
|
|
|
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
|
|
| 08.03.2023, 18:47 | |
|
Вообще GUI это графический интерфейс, его задача рисовать на экране игровое поле, и обеспечивать ввод/вывод информации от юзера. Можно без него обойтись? Да легко! Консолька выдаёт координаты следующего хода - юзер двигает фигуру на шахматной доске. Ну или рисует очередной нолик на бумажке.
В крестиках и ноликах ( если это больше, чем 3х3) алгоритм может быть такой: если на поле стоит четыре крестика в ряд, нужно безальтернативно ставить туда нолик, или проиграл. Если стоит три крестика в ряд - нужно безальтернативно ставить нолик в любой край, иначе следующим ходом будет четыре. Если стоит два или один крестик - можно прилепиться к ним или прилепиться к своим или сделать случайный ход. Дальше - ИИ.
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 08.03.2023, 18:54 | ||
![]() Добавлено через 1 минуту Называть алгоритм ИИ - неуместно, пока оно не будет хотя бы как то обучаться. Иначе это просто алгоритм. И битва тут будет именно алгоритмов. Добавлено через 2 минуты Во, я понял, что бы появилось желание написать что-то хитрое. Начну ка я с написания бота Рандовича. Будет первым этапом проверки
0
|
||
|
Just Do It!
|
|||||||||||||||
| 09.03.2023, 09:50 | |||||||||||||||
|
информировать противника о последнем ходу. вижу проблему: возможность чапаевской порчи. всю копию передавать тоже не есть хорошо. лучший вариант: у ИИ своё поле в памяти куда добавляется инфа о ходах игры. я тут на выдохе наковырял демку, чтобы просто работало, но как обычно много нечего будет не хватать, например, - режимы турнира - неотображаемый(т.е. ) быстрый - отображаемый с автопаузами - отображаемый управляемый. - больше разной инфы на экран - о ходе игры - больше статистики. - писать логи в файлы с последующим их проигрыванием. да по поводу статистики, пока так:
но опять же не хватает столбца с ФЕЙЛАМИ - зависания юзерского ИИ ну и тп.. и за фейлы рейтиг минусовать с дискваликом. а писать ваш ИИ нужно сюда: Файл "ai.h"
я хз, мош от непреднамеренной порчи нужно часть кода спрятать в статиклибу? но щас рано об этом. Код арбитра уже не влез в один пост > 25000 символов. поэтому пост смотрим ниже... возможно уже пора эту портянку порезать на хедерфайлы? и положить на гитхаб. я компилил(MSYS2) в 32 разрядной версии, но могу и эти приложить бинарники. но хз возможно сразу договориться что все бинари в 64. а пока скриншоты: для статистики шоп покороче взял два игрока(длл - просто клоны) про фейловый(там тестится зависание ИИ) длл отдельная песня...
0
|
|||||||||||||||
|
Just Do It!
|
||||||
| 09.03.2023, 09:50 | ||||||
|
ну и текущий код арбитра:
0
|
||||||
|
Just Do It!
|
|||||||
| 09.03.2023, 10:00 | |||||||
|
main.cpp
0
|
|||||||
|
Just Do It!
|
|
| 09.03.2023, 12:03 | |
|
1
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 09.03.2023, 13:41 | |
|
XLAT, тут еще все "вкурить" нужно...
Доска уже часть Бота ? Или все же интерфейс ? Если интерфейс, тогда почему он с методами и не в заголовке ? Для экспортных функций нужно поставить развернутые комментарии. (мне то понятно, но это вопрос приличия ) Еще один технический момент. Классы в dll разве не зависимы от компиляторов ? Добавлено через 46 минут Так о чем я, об общих интерфейсах клиента (ИИ) и доски. Разве это не могут быть абстрактные классы с конкретным интерфейсом, от которого для ИИ создается производный без ограничений. Так же и для поля. Для ИИ нужен будет только заголовок интерфейса, а что там будет за поле какого колена уже для ИИ неважно. Это возможно в dll в рамках одной аппаратной архитектуры ? А то получается что в ИИ вообще ничего нельзя добавить... Добавлено через 2 минуты Способ который я предлагал ранее, обязать каждый ИИ самому заботится о хранении ходов/доски и так далее. Тогда проблемы вообще нет никакой. Обычный обмен данными через функции со встроенными типами .
1
|
|
| 09.03.2023, 13:41 | |
|
Посоветуйте как улучшить код Посоветуйте, как улучшить код?
Подскажите какую игру можно написать в Делфи, не сильно сложную, не такую, как змейка, крестики-нолики, пинг-понг и т.д? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|