|
0 / 0 / 0
Регистрация: 05.03.2023
Сообщений: 1
|
||||||
Оцените и посоветуйте как можно улучшить код Крестики-нолики05.03.2023, 19:56. Показов 17973. Ответов 284
Метки нет (Все метки)
Я учусь в 10 классе и для индивидуального проекта мне нужно чтобы вы оценили и как-то посоветовали улучшить код программы крестики нолики на C++. Вот сам код:
0
|
||||||
| 05.03.2023, 19:56 | |
|
Ответы с готовыми решениями:
284
Крестики-нолики, улучшить программу Как оптимизировать данный код игры крестики нолики? Оцените игру крестики нолики (Player vs Bot easy) |
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 12.03.2023, 22:39 | |
|
XLAT, спасибо, посмотрим, когда будет готов мой первый "инвалид", отпишусь.
Не обещаю, но сегодня поставил цель - написать такого HellCat_v10
1
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 13.03.2023, 16:03 | ||
|
Пришел твой судный день XLAT.
Реализовывал своего простого бота. Написание заняло немного времени, больше отладка - которая в итоге ни к чему не привела. Как его в таком виде дебажить - тоже вопрос. Все должно работать, но ведет себя как шизофреник. В этом всем есть очень серьезные проблемы, попробую описать : 0 ВАЖНО. Вся измерения и начало отсчета должно быть в единой метрике. - Что это за x,y для точки ? - Доступ к элементам поля, тот же вопрос. Это создает серьезную путаницу. Я почти уверен что ты сам там из-за этого нормально напутал. Предложение : вывести все в x(горизонталь), y(вертикаль) Доступ к элементу поля также operator()(int x, int y)Точка нуждается в, как минимум, толковом конструкторе. 1. Зачем выбраны без знаковые типы (size_t) для многих переменных ? Что бы сделать жизнь веселее ? Предложение : если нет четкой аргументации для без знаковых типов. Использовать знаковые типы. 2. Почему AI имеет открытые поля, фишки, которые устанавливает непонятно кто и где ? Предложение : в классе AI все инкапсулировать. Для установки чего то - испльзовать соответсвующие средства интерфейса (его методы). Которого(интерфейса) пока нет. 3. На счет файлов с данными для арбитра, при отсутствии черного списка или файла с начальным полем - арбитр просто крешится. Но это уже мелочи. Вообщем, сплошное разочарование. Я понимаю, что ты делаешь все это один. Но придется исправлять. ) Нужно вытаскивать своего бота из этой системы/DLL и тестировать в отдельной среде. Чем я и займусь, наверное. Добавлено через 18 минут
1
|
||
|
Just Do It!
|
|||||||||||||||||||
| 13.03.2023, 17:51 | |||||||||||||||||||
|
https://github.com/BDOTimer/cf... /tree/main +1
1. устранен досадный баг: вызов clear() вместо fclear() крашил игру.
2. упорядочена структура двух проектов (теперь они оба зависят от общей директории common) 2. всё действие разворачивается в системе координат ИСКЛЮЧИТЕЛЬНО в первом КВАДРАНТЕ. 2,3,4 это фейл. 3. фейл отлавливать в 2 раза проеще фейл > n вместо фейл >= n && фейл < 0 4. пока я ещё не встретил в этой игре где бы мне понадобились инты. 5. да я слышал в школе - "Дети если не знаете что брать, то всегда берите инты ..." 6. сделайте все ваши расчеты в чем угодно, а результат - 2 числа отошлите в безнаковом виде:
он может там ходить хоть на голове(дык проблема ОБЩЕЙ БЕЗОПАСНОСТИ!) Арбитеру важно что полученная точка прошла ЕГО ВАЛИДАЦИЮ, если не прошла, то дисквалификация игрока или на доработку - устранение именно багов. Добавлено через 1 минуту 1. для этого у него есть поле 2. он может получать фишки от соперника. 3. он может узнать кто ходил первый всё.
оптимизации можно потом да и правильно, что потом. Добавлено через 4 минуты field[2][5] = 'X'; там же целый пример реализованным игроком - который вполне без фейлов играет.
0
|
|||||||||||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 13.03.2023, 17:55 | |
|
Не нужно было ничего делать на стороне ИИ.
НИЧЕГО. С этим невозможно работать.
0
|
|
|
Just Do It!
|
|||||||
| 13.03.2023, 18:10 | |||||||
|
остальное можно ЛЕГКО убрать с глаз игроков. и если всё же будет соблазн поглядеть, то на этот случай можно всё затолкать в статик либу. а игроку оставить ТОЛЬКО ТО ЧТО ЕМУ НУЖНО ЗНАТЬ. не делать, а именно знать. делать - пусть сам делает. это будет файлик, как в начале или даже чище. Добавлено через 6 минут вот такой файлик:
только не надо глядеть куда этот файлик втыкается!!! )))
0
|
|||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||
| 13.03.2023, 18:34 | |||||
|
Им выступают функции dll, к которым должны быть описаны требования. Все остальное, то в каком виде оно есть, мне не нужно. Хотелось бы увидеть : - функцию инициализации/завершения dll - функцию установки фишки на поле. - функцию запроса хода от ИИ Никто ни чего не должен делать ни с полем ни тем более с ИИ. НИКТО! А получается что я вот захочу все написать сам (что гарантированно и будет, уже есть). И что делать ? Что за странные взаимоотношения у клинтской dll с арбитром ? Кто вообще устанавливает размер поля и фишки игроков ? Почему арбитр общается с конфигом про который я ничего не знаю и с полем, а не с моим ИИ ? Добавлено через 1 минуту Добавлено через 2 минуты Не знаю будет ли лучше после твоих правок. Проверю, на явно на некоторое время все это отложу. Добавлено через 8 минут Правильно если бы арбитр и клиент общались простым понятным протоколом. - Инициализация Клиента Арбитром (далее К и А). Создание хотя бы того же AI. Я об этом не думал, что нужно инициализировать первым при загрузке dll. - Установка режима игры. Поле. Фишки на поле. - Обмен ходами. Информирование о ходе противника. Запрос хода ИИ. Все. Добавлено через 1 минуту Почему 1-я четверть ? Это (0, 0) снизу слева ?
1
|
|||||
|
Just Do It!
|
|||||||||
| 13.03.2023, 19:09 | |||||||||
|
а кто напишет его? по сути это написать условие задачи. если игроки чем то недовольны - то сразу тык носом в протокол)) но если конфига нет - то работает дефолт - щас это работает, но можно удалить. а будут требовать полярные координаты или цилиндрические на сфере или цилиндре. ну тогда на флоатах можно сделать.
0
|
|||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||||
| 13.03.2023, 19:18 | ||||||||
|
Отсчет идет и он понятен. Порядок важен для тестирования и восприятия человеком. Если у нас О(0, 0) первой четверти, то почему выводится поле совсем по другому ???
До этого буду писать ничем не связанный ИИ и тестировать отдельно. Потом прикручу в dll. Добавлено через 5 минут Это должен зполнять поле через интерфейс (експортируемые функции). ИИ не умеет читать , он только крестики ставит
1
|
||||||||
|
Just Do It!
|
||||||||||||
| 13.03.2023, 20:17 | ||||||||||||
|
ПРАВИЛО №1
согласен? что из этого следует. В обязанности арбитра же входит: 1. Предоставить игроку поле. 2. Сообщить игроку ход соперника. 3. Забрать у игрока ответ. зачем игроку куда то писать? Когда игроку приходит сообщение c инфой о ходе соперника, то Арбитр ГАРАНТИРУЕТ, ЧТО ЭТО ИНФА УЖЕ ДОБАВЛЕНА НА ПОЛЕ. ИТОГО
можно добавить инфу о начальном ходе. но ты можешь и самостоятельно проверить step_enemy на START_STEP START_STEP это константа говорящая что этот шаг никто не делал. ну, можно название для этой константы придумать по лучше шоп доходчивее было, и не захламлять комментами...
0
|
||||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||||||
| 13.03.2023, 20:45 | ||||||
![]() Все. Не нужно ему ничего никуда добавлять. ИИ сам добавит туда куда ему нужно. Или не добавит. Это его дело. Интерфейс в данном случае, это не AI. То что ты хочешь навязать, никому не нужно. Функции dll - вот интерфейс. Но сами функции так же пишет создатель ИИ. Нужно только описать к ним требования. Добавлено через 7 минут XLAT, если ты будешь идти по этому пути, пытаться создать некий сахарный интерфейс для AI, это будет провал. Никто не захочет в этом разбираться. К тому же когда будет Это стабильное окружение тоже большой вопрос. Все что там написано для Field, у меня абсолютно не используется, кроме доступа к конкретной клетке поля.
0
|
||||||
|
Just Do It!
|
||
| 13.03.2023, 20:50 | ||
|
желающие могут САМИ прочитать конфиг НА СВОЕ ПОЛЕ. ПРОСТО НЕ ИСПОЛЬЗУЙ ШТАТНЫЕ КЛАССЫ!!! в правилах есть только одно: чтобы ответ проходил валидацию. а если у арбитра несколько конфигов? игрок будет переписывать свой загрузчик, и добавлять в длл новую команду с номером конфига? то есть игрок хочет грузить всё что захочет, и это странно))) очень и очень странно. но я уже выше написал, что запускать буду в виртуал-боксе... интерфейс длл открытый - можно на любом другом языке писать свою длл. но речь про то чтобы игрок сосредоточился на самой игре, а не на прикладных задачах. хотя, прикладные тоже интересны...
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 13.03.2023, 20:56 | |||
|
Кому он нужен и какие функции выполняет ? Добавлено через 2 минуты Там кот наплакал тех прикладных задача. Зато будут каждому понятны и эффективны, так как свои.
0
|
|||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
||
| 13.03.2023, 21:08 | ||
|
Что вместо какого то левого Конфига - обычная интерфейсная функция, информирующая об игре. Поле и цвет фишек игрока. Потом арбитр может произвольно заполнить поле фишками. И попросить сделать ход, передав ход противника, если он доступен. Дальнейшая попытка информирования о поле и/или добавление фишек будут приводить к полному сбросу AI своих состояний и инициализации новых. В любом случае, я не хочу зависеть ни от типа поля ни от типа фишки ни тем более от каких то конфигов. Не знаю, может многого хочу.
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 13.03.2023, 21:09 | |
|
0
|
|
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 13.03.2023, 21:14 | |||
|
Добавлено через 1 минуту Но кто ж думал что это будет так. Я хотел котенка, маленького такого, пушистого котенка ![]() Добавлено через 43 секунды Ладно, хватит трепа. Попробую описать кодом то, о чем говорю.
0
|
|||
|
Just Do It!
|
||
| 13.03.2023, 21:27 | ||
|
можно заполнить, но раздадутся вопли - тут ничаво не понятно - мы сами заполним))) Добавлено через 12 минут SmallEvil, если короче: мне нужно от тя длл'ошный интерфейс. а я на него настрою арбитра. но сначала посмотрю шоп всего там хватало)) да и с точкой входа надо поглядеть ... на LLVM шоп работало.
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||||||
| 13.03.2023, 21:35 | |||||||
|
Пока набросал, но не спеши фарш крутить.
И отпадет надобность в init и release.
1
|
|||||||
| 13.03.2023, 21:35 | |
|
Посоветуйте как улучшить код Посоветуйте, как улучшить код?
Подскажите какую игру можно написать в Делфи, не сильно сложную, не такую, как змейка, крестики-нолики, пинг-понг и т.д? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
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 реально казались вершиной жары, когда можно было весь день пропадать на. . .
|