|
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 105
|
||||||
Морской бой. Первая программа25.01.2020, 11:11. Показов 6139. Ответов 66
Здравствуйте.
Я начинающий в С++. Занимаюсь около 2 месяцев. Попробовал написать впервые игру "Морской бой". Пошел по пути применения функций. Без указателей. Хочу, пока, разобраться для себя так. На лишние подключения в начале программы (до Маин) прошу не обращать внимание (такой у меня шаблон перед созданием всех проектов) потом уберу лишнее. Интуитивно вижу, что кода слишком много. Буквы слева по вертикали от полей поставить смог, но пока не ставлю, для удобности ввода координат при тестах. Пока реализовал только: - функции автоматической и ручной расстановки кораблей; - функции вывода на экран полей противников; - не повторение выстрелов Компьютера в одни и те же точки; - завершение программы после набора 20 попаданий одним из противников.... Работаю над: - внешним видом кода; - внешним видом игры; - функцией обстрела Компьютером только ближних точек вокруг последнего попадания; - другими недоработками. Буду признателен за критику (которой, чувствую, будет много) и за рекомендации.
0
|
||||||
| 25.01.2020, 11:11 | |
|
Ответы с готовыми решениями:
66
Морской бой - программа зацикливается на расстановке кораблей Морской бой Морской Бой |
|
фрилансер
6479 / 5703 / 1132
Регистрация: 11.10.2019
Сообщений: 15,194
|
|
| 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
|
|||||
|
736 / 702 / 110
Регистрация: 29.05.2015
Сообщений: 4,293
|
||
| 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 | |
|
Помогаю со студенческими работами здесь
60
Морской бой Морской Бой Морской бой C++ Морской Бой на C++ Морской бой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|