|
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 105
|
||||||
Морской бой. Первая программа25.01.2020, 11:11. Показов 6737. Ответов 66
Здравствуйте.
Я начинающий в С++. Занимаюсь около 2 месяцев. Попробовал написать впервые игру "Морской бой". Пошел по пути применения функций. Без указателей. Хочу, пока, разобраться для себя так. На лишние подключения в начале программы (до Маин) прошу не обращать внимание (такой у меня шаблон перед созданием всех проектов) потом уберу лишнее. Интуитивно вижу, что кода слишком много. Буквы слева по вертикали от полей поставить смог, но пока не ставлю, для удобности ввода координат при тестах. Пока реализовал только: - функции автоматической и ручной расстановки кораблей; - функции вывода на экран полей противников; - не повторение выстрелов Компьютера в одни и те же точки; - завершение программы после набора 20 попаданий одним из противников.... Работаю над: - внешним видом кода; - внешним видом игры; - функцией обстрела Компьютером только ближних точек вокруг последнего попадания; - другими недоработками. Буду признателен за критику (которой, чувствую, будет много) и за рекомендации.
0
|
||||||
| 25.01.2020, 11:11 | |
|
Ответы с готовыми решениями:
66
Морской бой - программа зацикливается на расстановке кораблей Морской бой Морской Бой |
|
фрилансер
6510 / 5772 / 1135
Регистрация: 11.10.2019
Сообщений: 15,422
|
|
| 07.02.2020, 12:57 | |
|
0
|
|
|
Just Do It!
|
|||
| 07.02.2020, 13:09 | |||
|
Mesteriis,
давайте сюды ВАШИ три пункта в ТЗ. пункт номер 9 я уже предложил: 9. наличие в проге две(минимум) подсистемы : 1. логика и 2. графика. Добавлено через 8 минут апдейт: вот так тогда: ТЗ 1. OOП С++03. ... 9. наличие в проге две(минимум) подсистемы : 1. логика и 2. графика. с вас ещё хотя бы пару пунктиков.
0
|
|||
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
||
| 07.02.2020, 13:36 | ||
|
и вариант игры поо сети Добавлено через 6 минут Можно дописать еще систему очивок, сервер так и быть у себя подниму на хосте))) Добавлено через 18 минут Ну и коль про сеть заговорили то и чатик
0
|
||
|
Just Do It!
|
|||||||
| 07.02.2020, 15:18 | |||||||
|
ТЗ 1. OOП С++11. 2. минимум констант в настройках(все параметры могут конфигурироваться) + все массивы динамические то бишь std::vector(или подходящий STL контейнер.) ... чуть-чуть про ООП
Предлагаю не ждать это событие так долго! ![]()
0
|
|||||||
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
| 07.02.2020, 15:27 | |
|
0
|
|
|
Just Do It!
|
||
| 07.02.2020, 15:34 | ||
|
Второй пункт очень даже отличный пункт,
поможет исключить споры между участниками о конкретных параметрах программы. мда, возможно понадобиться некоторый свод правил(кодекс) дающий понять участникам общую идеалогию процесса, хм ![]() например: (это не ТЗ!) ... 5. Проект не ограничен никакими сроками завершения, (т.е движение к совершенству бесконечно.) 6. У проекта нет главного.(но наличие самомодерации, фиг это знает как организовать - голосованием?) ... Шестой пункт как бы подразумевает существование критериев качества кода. Собсно, эти критерии, тогда надо бы как то расписать. Добавлено через 2 минуты я допускаю что дефолтные значения просто обязаны быть константами ..
0
|
||
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
| 07.02.2020, 15:36 | |
|
0
|
|
|
Just Do It!
|
||
| 07.02.2020, 16:50 | ||
|
я про - код-претендент должен проходить все тесты - приоритет читаемости над оптимизацией. - скорость(замер перфоманса в тесте будет делаться автоматом) - краткость(подсчет ";") - возможно некоторой лучшей функциональности (например, для будущего добавления в код каких то новых фич). по названиям переменных наверное должен быть словарик для локальных всё просто: i - индекс it - итератор p - указатель r - индекс строки таблицы(и тп) с - индекс столбца таблицы(и тп) t - временная переменная и т.д.. для свойств и методов тут конеш сложнее: нужно договариваться, но есть уже и устоявшиеся термины. SOLID да. конеш это да! блин, но я постоянно его заменяю здравым смыслом ![]() Добавлено через 8 минут оффтоп
щас пробежался по всем пяти в вики.
о да, как это не странно я никогда не думаю про cуществование SOLID, но почти все пять применяю разумеется по необходимости и даже без необходимости, по каждому могу показать пруф здесь на форуме, какой когда и где применил. ![]() например OCP не желая "портить" уже когда то созданный класс, просто унаследовал его, и там уже был на стадии готовности программы всего лишь список инициализации. + одни метод в одну строчку. И я до сих пор горжусь что не повёлся на то, что бы добавить эти мелочи в базовый класс.
0
|
||
| 10.02.2020, 16:53 | |||
|
Если совсем сложно с соединением клиента и сервера через интернет, то можно пока отложить глобальную сеть и остановиться пока на локальной. Локально можно играть, если придти к другу в гости с ноутбуком и crossover-кабелем. Этот вариант необходим, если в данный момент нет выхода в интернет, или нет необходимости в нём, а сетевые задержки по локальной сети минимальны - для случая разработки игровых серверов для Real Time игр. Ещё один большой вопрос: что взять в качестве сервера на C++? Вариантов - большое множество:
0
|
|||
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
||||||
| 10.02.2020, 18:49 | ||||||
|
Добавлено через 5 минут
1
|
||||||
| 10.02.2020, 19:41 | ||
|
0
|
||
| 10.02.2020, 23:14 | |
|
Для сетевого морского боя первой задачей может быть - подсоединиться к серверу, сервер при присоединении клиента высылает сообщение клиенту, а клиент отображает это сообщение. У меня уже была такая заготовка. Я просто создал новое приложение на Heroku. Данная подзадача решена: https://sea-battle-network-web... kuapp.com/ Хостинг бесплатный, поэтому если 30 минут нет никакой активности, то сервер засыпает, а чтобы его разбудить нужно подождать 10 секунд. Сообщение от сервера отображается внизу, потому что выше расположен элемент <canvas>, то есть холст для рисования графики - он белого цвета, поэтому его не видно. Здесь же на страничке будет расположена ссылка для скачивания EXE, то есть клиента для Windows. Я бы мог собрать клиентов для Mac и Linux, но нет этих OC. Пока EXE и Web будет достаточно, потому что Web-версия запустится на любой ОС.
Как логически организовать такую систему, чтобы я мог поиграть с другом? То есть, я хочу поиграть с другом. Допустим, можно сделать такую систему. Я открываю клиент. В клиенте есть кнопку "Создать ключ" - это hash-значение. Я посылаю это hash-значение другу, он его вводит и нажимает кнопку "Присоединиться к игре". Нормально, или есть проще логика, как поиграть конкретным человеком? Позже можно будет добавить кнопку "Искать соперника". Здесь понятно, что нажимаем и ждём, что кто-то тоже нажмёт. Либо есть такая идея, я подсмотрел ещё на сервере игры Го (KGS Go Server) В этой игре человек заходит под гостём или логинится, создаёт комнату. Список комнат виден всем. Те кто играет и те кто ждёт. Те кто ждут выделены жирным. Другие заходят в комнату для ожидания и человеку, который создал комнату, выкидываются сообщения, а он принимает или отклоняет. Это более интуитивно понятно, но требует больше времени от разработчика. Какие у вас есть варианты организации поиска партнёра для игры?
0
|
|
|
Джоуи
|
|||||
| 11.02.2020, 00:20 | |||||
у меня видимо бесконечный цикл в этом месте
![]() Добавлено через 15 минут
0
|
|||||
|
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,362
|
||
| 11.02.2020, 06:38 | ||
![]() Если у кого ещё есть бизнес-идеи - предлагайте!
1
|
||
| 11.02.2020, 16:10 | |
|
Да, предлагайте ещё варианты. Я решил для начала остановиться на следующей модели, которая мне кажется наиболее простой и быстрой для реализации. В верхнем правом углу будет отображаться список имён игроков. Когда человек только запустил игру, ему предлагается ввести имя. Напротив каждого имени игрока в списке будет кнопка "Предложить сыграть". Пользователь нажимает эту кнопку, сервер получает сообщение и отправляет сообщение о предложении сыграть выбранному пользователю. Пользователь получает сообщение и нажимает кнопку: "Принять" или "Отклонить". Сервер получает сообщение или либо создаёт игру и уведомляет обоих пользователей, либо отправляет первому пользователю сообщение, что второй пользователь отклонил предложение. В игре должна быть возможность создать "открытую" и "закрытую" игру. В открытую могут заходить другие пользователи и наблюдать за игрой. Должен быть общий чат и в каждой комнате свой чат.
0
|
|
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
| 11.02.2020, 19:41 | |
|
8Observer8, с сервером пока кодирование не включай, потом прикрутим. и какое окружение сейчас у тебя на сервере, NodeJS с экспресом? и какая версия ноды, я пока контейнер соберу и клиент начну пилить
0
|
|
| 11.02.2020, 20:41 | |||||||
|
Вот такие пакеты установил:
Добавлено через 12 минут Mesteriis, мне интересно, если ты сервер будешь писать на Node.js, а клиента на C++/Qt, то какую библиотеку ты возмёшь для работы с вебсокетами? Как тебе этот вариант: Socket.IO C++ Client? Там написано, что в комплекте есть пример для Qt. Правда, примеру на Qt уже 5 лет, но возможно он вполне рабочий. Добавлено через 3 минуты Здесь пошаговая инструкция, как сделать чат на Qt и socket.io: https://socket.io/blog/socket-io-cpp/
0
|
|||||||
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|||
| 11.02.2020, 21:08 | |||
node -vДобавлено через 2 минуты с сокетайо не работал, поковыряю его на этой недели. В целом у меня план написать все прототипы клиента на этой недели, до воскресенья. Может чатик запилить в слак?
0
|
|||
| 11.02.2020, 21:08 | |
|
Морской бой Морской Бой Морской бой C++ Морской Бой на C++ Морской бой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|