|
0 / 0 / 0
Регистрация: 05.03.2023
Сообщений: 1
|
||||||
Оцените и посоветуйте как можно улучшить код Крестики-нолики05.03.2023, 19:56. Показов 17199. Ответов 284
Метки нет (Все метки)
Я учусь в 10 классе и для индивидуального проекта мне нужно чтобы вы оценили и как-то посоветовали улучшить код программы крестики нолики на C++. Вот сам код:
0
|
||||||
| 05.03.2023, 19:56 | |
|
Ответы с готовыми решениями:
284
Крестики-нолики, улучшить программу Как оптимизировать данный код игры крестики нолики? Оцените игру крестики нолики (Player vs Bot easy) |
|
Just Do It!
|
||||||
| 18.03.2023, 14:10 | ||||||
|
zayats80888,
ок, отлично. да, так оно должно выглядеть: c верху вниз, охватывая сразу всё. я не знаю к чему тут(#180) можно придраться. на этом слое всё нативно ясно. но могу высказать ~пару пожеланий: 1. ВСЕ СТЫКИ МЕЖДУ МОДУЛЯМИ ТОКА ЧЕРЕЗ АБСТРАКЦИИ. 2. Очень желательно под эти абстракции набор требований, которые могут быть выражены через ассерты. 3. памяти бессметного Макконнелла - ТОЛЬКО СУЩЕСТВЕННЫЕ СВОЙСТВА, т.е. не распыляться на хотелки. 4. механизм для добавление хотелок - это отдельный механизм - как он будет выглядеть я хз. 5. хотелось бы так, чтобы один модуль можно было легко заменить другим модулем, отличающимся содержанием. если один поток слушает синхронно порт- получает соединение отдает его другому потоку и снова слушает. то это синхронка или асинхронка? тут тонкость относительно той или иной части используемого инструментария. ваще граф парсера может получиться достаточно сложный - сюда тоже желательно стырить какую-нить базовую теорию. конкретно, для того чтобы любая(логического жанра) игра удовлетворяющая этому интерфейсу легко цеплялась на гуй. Наши задачи продолжают быть слишком большими - нужен ДЕКОМПОЗИТОР, ну, ни как чел, а как инструмент технологии. Добавлено через 1 минуту глядеть моно - говорить тока с позволения..
1
|
||||||
|
Just Do It!
|
||
| 18.03.2023, 14:35 | ||
|
Croessmah,
ввиду тебя, в кратце, в суть: у тя 2041 действенных ответов, все ответы решали какие то частные случаи для задач, в которые авторы редко когда посвящают. (...) теперь представь, что эти 2041 ответа ты бы дал в рамках ОДНОГО проекта. согласись со мной, что такой проект уже бы, наверняка, РАБОТАЛ. за 11 лет, я уверен, что ты бы сам - лично написал бы тут на форуме свою ОС. согласен? Добавлено через 3 минуты Делаем(!) С++ сервак для Морского Боя и Морской Бой тоже моно не щас - моно через месяц.
0
|
||
|
Just Do It!
|
||
| 18.03.2023, 14:59 | ||
|
ты бы не просто написал ОС, а написал бы ОС прямо тут на форуме. почему это не случилось? потому что некому задавать вопросы в орбите одного проекта. пока это фатальная проблема: - поставить хост-задачу - разбить её на подзадачи, - далее рекурсией до неразбиваемости. люди могут приходить - могут уходить - а субзадачи всё время остаются: решенные, частично решенные, по разному решенные или нерешенные.
1
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||||||||||||||||||||||
| 18.03.2023, 15:42 | ||||||||||||||||||||||||||
|
Сначала составим какркас проекта на основе этой задачи, чтоб работало. Я тебе его скину, ты его покрутишь и выложешь на гитхаб. Дальше там будешь ставить и распределять задачи, я форкну заведу ветку, сделаю и запушу реквест. Ты отревьюишь, отклонишь для доработки или примешь. И так далее. Раз по поводу интерфейсов и протоколов ты ничего не написал, то предложу я, для нашей задачки минимум. Что я прошу сделать тебя: 1) Бота: Кликните здесь для просмотра всего текста
2) Арбитра, с минимальной логикой для поддержки работы такого примитивного протокола: Кликните здесь для просмотра всего текста
3) Наблюдателя, по желанию: Кликните здесь для просмотра всего текста
Теперь, что тебе понадобится для этого с моей стороны(это я сделаю): Кликните здесь для просмотра всего текста
Если согласен, то я пойду кодить.
0
|
||||||||||||||||||||||||||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|
| 18.03.2023, 15:48 | |
|
Чой- то тут происходит ?
XLAT, могу взять на себя CMake. Долго откладывал его освоение. Только ты, как ведущий девелопер поставь мне задачу. А то я могу и пол года нюансы Cmak-a ковырять в носу.
0
|
|
|
Just Do It!
|
|||||||||||
| 18.03.2023, 16:33 | |||||||||||
|
но есть торчащее апи для взаимодействия с миром. ну, или просто модуль это кубик на схеме) да. я не программист - я интегратор! https://www.sfml-dev.org/docum... Packet.php да щас дело не в пакетах, можно и свой парсер, но "яжеинтегратор" да и тестить где-то всё равно надо. ни и гуй это не так уж и сложно делать, потому что его видно сразу) арбитр управляет сначала игроками, потом уже отдельной игрой, и сколько игр и в каком графике их проводить. т.е. вопрос: Какой объект предоставит Арбитру этих игроков? понятно, что сервер это тоже объект, но конкретнее? в текущем состоянии игроков собирает в директории ответственный за это DDLmaneger. как то раз заглянул в код симейка нашего любимого сфмл: https://github.com/SFML/SFML/b... eLists.txt и писать симейк скрипт у мя отпало)) Добавлено через 9 минут в поток мы кладем все подряд - в ОДНУ КУЧУ, а на принимающей стороне как это будет разбираться? для общего случая.
0
|
|||||||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||
| 18.03.2023, 16:48 | ||||||
|
Не, я прошу локального арбитра для одного сеанса. Управление сеансами (построением, турнирных сеток там, распределением и пр.) занимается служба(из той структуры, которую я тебе рисовал). Вот она и предоставляет арбитру иигроков, а откуда она их получает на данном этапе не важно (сервер перенаправляет в эту службу). Это пока моя проблема.
0
|
||||||
|
Just Do It!
|
|||||
| 18.03.2023, 17:37 | |||||
|
x, y это могут быть и размеры поля x, y это мугут быть и координаты точки. т.е. объединять мелкие сущности в родственные структуры. короче, шоп по пустякам не флудить, сделаю рипит: как стенд появится, так и бот уже точно будет готов) рабочий стенд: 1. Сервер (на нём сидит Арбитр) 2. Клиенты(на одном клиенте сидит ОДИН бот(или кожаный чел)) 3. запуск локально. 4. Сервер может адресоваться к конкретному клиенту, посылать его и принимать его, на как ответ на его(сервера) запрос. замечание, у мя в текущей игре - клиенты полностью пассивны, сами ничего не запрашивают. поэтому запросы от клиентов должны быть НЕ в компетенции Арбитра. этим должен заниматься на сервере кто-то другой - Регистратор Сервера(Управляющий аккаунтами)
0
|
|||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 18.03.2023, 17:46 | |||
![]() Но тебе это проще, у тебя там уже логика арбитра написана, вроде.Ты же её на чем-то тестировал? Да и бот тоже, он тут не нужен шибко умный, пусть даже намеренно рандомно тупит, лучше будет. Просто перенеси часть логики своего Арбитра, отвечающую за судейство одного матча, в класс arbiter. Он судит двух игроков. А в конце игры, пусть отправляет слушателю(listener) событие с сообщением о причине завершения игры, можешь не уведомлять его о промежуточных событиях даже, это всё потом. Просто мне работы меньше будет. Я у себя и проверю. Будут баги, попробую сам разобраться, не страшно. Просто мне твою часть проще будет тестить, чем тебе мою. Если что не понятно по моим предложениям, то спрашивай, уточняй. Или если хочешь радикально изменить, то пока еще не поздно. Жду твою отмашку(не код, а добро на работу, параллельно будем) и приступаю к реализации.
1
|
|||
|
Just Do It!
|
||
| 18.03.2023, 17:58 | ||
|
(кстати sfml в убунте ваще без проблем - на раз и два - без три) у мя есть желание заменить длл пайпами. 1. Кросс 2. потому что стандартно. желание не сейчас возникло. короче, я пойду гуглить пайпы, но а ты давай на бусте) думаю вполне годные коннекты должны получиться для локального тестирования логики ботов, арбитров и тп..
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 18.03.2023, 18:11 | ||
|
В бусте есть процессы и пайпы. Конкретно канал для общения с дочерним процессом бота я беру на себя. Абстрактный йнтерфейс канала (пайпы не пайпы) я уже обдумал.
0
|
||
|
Just Do It!
|
||
| 18.03.2023, 18:28 | ||
|
пайпы просто разминка, ну и удобный инструмент для тестирования. и я надеюсь, что инструмент этот простой, пока я их ещё не оформил. кстати и качество архитектуры заодно легко будет проверить) а пока коннекторов(сокетов) нет и поэтому и стенда нет.
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||
| 18.03.2023, 18:39 | |||||||
|
Кстати, если есть недопонимание, как написать асинхронного арбитра, то вот дополнил тот шаблон класса арбитра условным псевдокодом (короче, через state machine): Кликните здесь для просмотра всего текста
1
|
|||||||
|
Just Do It!
|
|||
| 18.03.2023, 19:16 | |||
|
клиент это отдельная консольная программа с тем или иным межпрограммным интерфейсом. или что? всё свалить в одну программу? т .е. там выше нужно было добавить: стенд это минимум три одновременно запущенных консольных приложения. для бота Рандомыч это несколько строчек кода. поэтому говорить что тестового бота нужно писать это неправильно говорить) нужно написать коннекторы, опять же - тестовые, для локалки,
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 18.03.2023, 19:29 | |||
|
Но сначала нужен тот, что будет судить его игру.
0
|
|||
|
Just Do It!
|
||||||
| 18.03.2023, 20:07 | ||||||
|
zayats80888,
ок. смотри: тут уже готовый арбитр: https://github.com/BDOTimer/cf... /arbiter.h всех игроков для него собрал класс DLL_manager в объекте DLL_man сами игроки находятся в но арбитр знает как к ним достучаться, через абстрактный класс: https://github.com/BDOTimer/cf... /ai_wrap.h его можно легко преобразовать в интерфейс, т.е. убрать от туда всё лишнее(длл инфу). что нужно сделать тя на бусте - реализовать этот интерфейс сокеты или пайпы - арбитру на это пофик. вот и начальный стенд уже готов. потом уже арбитра засунем в сервис с уже готовым реализованным и протестченым классом интерфейса - подумаешь ещё один класс. т.е. есть щас две задачи на стенд: 1. собрать(сделать класс DLL_manager абстрактным) игроков из большого мира(это локально запущенные консольки) 2. и реализовать коннекторы в предложенный(см выше) интерфейс. пока можно топорно, скелета для архитектуры коннектора вроде пока никто ещё не нарисовал. и на самом деле это уже будет готовое миниприложение, которое можно закинуть на какой-нить виртуальный бесплатный хостинг в интернете и игроки из дома могут подключать своих ботов. ага, тут задачка 1 собрать игроков) Добавлено через 2 минуты виндос хедер можно задефайнить он только для работы с длл Добавлено через 3 минуты чистый интерфейс без лишнего: вот эта часть:
0
|
||||||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||
| 18.03.2023, 20:44 | |||
|
Такой подход (блокирующий) можно освободить корутинами (просто добавив yield). Я в них не силён(хотя asio их поддерживает).
0
|
|||
| 18.03.2023, 20:44 | |
|
Посоветуйте как улучшить код Посоветуйте, как улучшить код?
Подскажите какую игру можно написать в Делфи, не сильно сложную, не такую, как змейка, крестики-нолики, пинг-понг и т.д? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|