|
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 105
|
||||||
Морской бой. Первая программа25.01.2020, 11:11. Показов 6225. Ответов 66
Здравствуйте.
Я начинающий в С++. Занимаюсь около 2 месяцев. Попробовал написать впервые игру "Морской бой". Пошел по пути применения функций. Без указателей. Хочу, пока, разобраться для себя так. На лишние подключения в начале программы (до Маин) прошу не обращать внимание (такой у меня шаблон перед созданием всех проектов) потом уберу лишнее. Интуитивно вижу, что кода слишком много. Буквы слева по вертикали от полей поставить смог, но пока не ставлю, для удобности ввода координат при тестах. Пока реализовал только: - функции автоматической и ручной расстановки кораблей; - функции вывода на экран полей противников; - не повторение выстрелов Компьютера в одни и те же точки; - завершение программы после набора 20 попаданий одним из противников.... Работаю над: - внешним видом кода; - внешним видом игры; - функцией обстрела Компьютером только ближних точек вокруг последнего попадания; - другими недоработками. Буду признателен за критику (которой, чувствую, будет много) и за рекомендации.
0
|
||||||
| 25.01.2020, 11:11 | |
|
Ответы с готовыми решениями:
66
Морской бой - программа зацикливается на расстановке кораблей Морской бой Морской Бой |
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
| 11.02.2020, 21:17 | |
|
Avazart, просмотрел, да есть в коробке
0
|
|
| 11.02.2020, 21:23 | ||||
|
0
|
||||
| 12.02.2020, 16:33 | ||||||||||||||||
|
То что в Qt есть поддержка для работы с вебсокетами - это замечательно. Но я должен обратить внимание на такую вещь, что .NET тоже имеет System.Net.WebSockets из коробки. Но так как я на сервере на Node.js не использую чистые вебсокеты, а использую обёртку над ними - socket.io, то я сразу стал искать обёртку над вебсокетами на стороне клиента совместимой с socket.io. Я взял первую попавшуюся библиотеку, которую установил через Nuget в VS: SocketIoClientDotNet. Я ещё поставил даже не смотря на то, что автор написал, что больше не будет развивать эту библиотеку и сам объявил её Deprecated. Но мне нужно было чтобы она заработала и помогла соединиться с удалённым сервером, который на бесплатном Heroku. Я просто заменил адрес с локального на адрес приложения по такому принципу:
Подобная обёртка над вебсокетами в виде socket.io позволяет проще работать с вебсокетами. Смотрите, как просто создать чат с сервером на Node.js/socket.io/JavaScript и с клиентом на C#: Создаём пустую папку для сервера. Заходим в папку через консоль. Вводим команды: npm init -y npm i socket.io shortid Создаём файл socket.js и копируем в него код, я написал комментарии к каждой строке:
Создаём консольный проект на C# и копируем код в Program.cs:
0
|
||||||||||||||||
|
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
|
|
| 14.02.2020, 12:10 | |
|
8Observer8, так тоесть ты предлагаешь вообще всю логику на сервер перенести? а про обмен данных с сервером а несколько о другом. Например как будет передоватся инфа. Значение + ключ или допустим JSON?
0
|
|
| 14.02.2020, 13:34 | |
|
Я выбрал архитектуру "авторитативный" (authoritative) сервер, так как нашёл хорошие описания этой архитектуры в статьях:Хвалят эту архитектуру. Пишут, что защиту от читерства так проще реализовать. Я развернул пример из второй статьи на Heroku: https://battle-world.herokuapp.com/?debug Здесь показаны в деле, как хорошо работают техники борьбы с сетевыми задержками, то есть лагами: предсказания движения клиента на стороне клиента и интерполяция позиций других клиентов на данном клиенте для плавности движения. На панели справа можно отключить эти методы и посмотреть, как без них. В игру можно добавить работу с базой данный MySQL (PostgreSQL, MongoDB). Бесплатные базы данные есть на Heroku. Я пробовал работать с MySQL на Heroku. Для меня простые игры - это возможность с интересом и энтузиазмом работать с GUI на HTML/CSS/Hendlebars, базы данных, паттерн MVC, графика на WebGL, язык TypeScript, Node.js/Express, сеть на вебсокетах (socket.io). Всё вместе - это наукоёмко и лучше изучать на практике, когда всё вместе и всё взаимодействует.
Я хочу написать точный клон игры танчики (Battle City) с кооперативом по интернету. Я уже очень давно собираюсь, но ни как не начну. Может лет 5 уже собираюсь. Крестики-нолики и морской бой - это начальный этап перед танчиками. Танчики я хочу делать в 3D. Создал модель в Blender ещё года 3 назад. Недавно загрузил модель танчика из Collada (.dae) формата в WebGL 1.0 на TypeScript, можно покрутить модель зажатой левой кнопкой мыши, отдалять/приближать колёсоком: https://8observer8.github.io/w... e-city-3d/ Если заинтересует шейдерный OpenGL, то лучшее и более простое объяснение, чем в этой книги я не находил: WebGL. Программирование трехмерной графики. Даже если вы из C++ используете OpenGL, то эта книга будет крайне полезной. Моя тема по WebGL: Небольшие примеры на WebGL Для удобства я перенёс все примеры из книги на JSFiddle, чтобы можно было запуска в один клик, смотреть код и экспериментировать: Исходники к книге на JSFiddle
Chapter 02. Your First Step with WebGL ch02/HelloCanvas: https://jsfiddle.net/8Observer8/2gky294r/ ch02/HelloPoint1: https://jsfiddle.net/8Observer8/cc72u1u5/ ch02/HelloPoint2: https://jsfiddle.net/8Observer8/uxw657ud/ ch02/ClickedPoints: https://jsfiddle.net/8Observer8/xf4fnc0o/ ch02/ColoredPoints: https://jsfiddle.net/8Observer8/gkkmnpga/ Chapter 03. Drawing and Transforming Triangles ch03/MultiPoint: https://jsfiddle.net/8Observer8/cty1120m/ ch03/HelloTriangle: https://jsfiddle.net/8Observer8/wk4sksnw/ ch03/HelloQuad: https://jsfiddle.net/8Observer8/g4ctyk7w/ ch03/HelloQuad_FAN: https://jsfiddle.net/8Observer8/v119e8o6/ ch03/HelloTriangle_LINES: https://jsfiddle.net/8Observer8/wwrkaxcf/ ch03/HelloTriangle_LINE_STRIP: https://jsfiddle.net/8Observer8/3ggjz4rm/ ch03/HelloTriangle_LINE_LOOP: https://jsfiddle.net/8Observer8/7vcyquro/ ch03/TranslatedTriangle: https://jsfiddle.net/8Observer8/0dp4xvyt/ ch03/RotatedTriangle: https://jsfiddle.net/8Observer8/gh9s6szm/ ch03/RotatedTriangle_Matrix: https://jsfiddle.net/8Observer8/7ze7pgpu/ ch03/ScaledTriangle_Matrix: https://jsfiddle.net/8Observer8/6xzoe63s/ Chapter 04. More Transformations and Basic Animation ch04/RotatedTriangle_Matrix4: https://jsfiddle.net/8Observer8/t4y7783v/ ch04/RotatedTranslatedTriangle: https://jsfiddle.net/8Observer8/b5yfxojp/ ch04/TranslatedRotatedTriangle: https://jsfiddle.net/8Observer8/o8voebc9/ ch04/RotatingTriangle: https://jsfiddle.net/8Observer8/x9j5vdk7/ ch04/RotatingTranslatedTriangle: https://jsfiddle.net/8Observer8/rkrv0322/ ch04/RotatingTriangle_withButtons: https://jsfiddle.net/8Observer8/wzoLmdzd/ Chapter 05. Using Colors and Texture Images ch05/MultiAttributeSize: https://jsfiddle.net/8Observer8/dsfgezbj/ ch05/MultiAttributeSize_Interleaved: https://jsfiddle.net/8Observer8/bshwnden/ ch05/MultiAttributeColor: https://jsfiddle.net/8Observer8/bveykLdf/ ch05/ColoredTriangle: https://jsfiddle.net/8Observer8/mrkpms7d/ ch05/HelloTriangle_FragCoord: https://jsfiddle.net/8Observer8/ft33yo9s/ ch05/TexturedQuad: https://jsfiddle.net/8Observer8/o3vakb3h/ ch05/TexturedQuad_Repeat: https://jsfiddle.net/8Observer8/2s7q68cc/ ch05/TexturedQuad_Clamp_Mirror: https://jsfiddle.net/8Observer8/mqu0wwma/ ch05/MultiTexture: https://jsfiddle.net/8Observer8/ztew5u0p/ Chapter 07. Toward the 3D World ch07/LookAtTriangles: https://jsfiddle.net/8Observer8/6ab11xpg/ ch07/LookAtRotatedTriangles: https://jsfiddle.net/8Observer8/944dd57h/ ch07/LookAtRotatedTriangles_modelViewMatrix: https://jsfiddle.net/8Observer8/e5t6gj1w/ ch07/LookAtTrianglesWithKeys: https://jsfiddle.net/8Observer8/38ewegg2/ ch07/OrthoView: https://jsfiddle.net/8Observer8/zebt4u7t/ ch07/LookAtTrianglesWithKey_ViewVolume: https://jsfiddle.net/8Observer8/vLcejtm1/ ch07/OrthoView_halfSize: https://jsfiddle.net/8Observer8/uvcd9h4p/ ch07/OrthoView_halfWidth: https://jsfiddle.net/8Observer8/vepodfb8/ ch07/PerspectiveView: https://jsfiddle.net/8Observer8/640pv8qe/ ch07/PerspectiveView_mvp: https://jsfiddle.net/8Observer8/w8yh4Lmj/ ch07/PerspectiveView_mvpMatrix: https://jsfiddle.net/8Observer8/hhwnx145/ ch07/DepthBuffer: https://jsfiddle.net/8Observer8/hyumw026/ ch07/Zfighting: https://jsfiddle.net/8Observer8/foc0b45t/ ch07/HelloCube: https://jsfiddle.net/8Observer8/rkpn5tyw/ ch07/ColoredCube: https://jsfiddle.net/8Observer8/80x8cyom/ ch07/ColoredCube_singleColor: https://jsfiddle.net/8Observer8/pespackq/ Chapter 08. Lighting Objects ch08/LightedCube: https://jsfiddle.net/8Observer8/4jchxo84/ ch08/LightedCube_animation: https://jsfiddle.net/8Observer8/ekw3osj7/ ch08/LightedCube_ambient: https://jsfiddle.net/8Observer8/y6qwnfe1/ ch08/LightedTranslatedRotatedCube: https://jsfiddle.net/8Observer8/pa88ujjg/ ch08/PointLightedCube: https://jsfiddle.net/8Observer8/vuq118ue/ ch08/PointLightedCube_animation: https://jsfiddle.net/8Observer8/5bj39hb8/ ch08/PointLightedSphere: https://jsfiddle.net/8Observer8/edz9Lz8f/ ch08/PointLightedSphere_perFragment: https://jsfiddle.net/8Observer8/qzwyow4j/ ch08/PointLightedCube_perFragment: https://jsfiddle.net/8Observer8/8t1umamf/ ch08/LightedCube_perFragment: https://jsfiddle.net/8Observer8/471y2t84/ Chapter 09. Hierarchical Objects ch09/JointModel: https://jsfiddle.net/8Observer8/vqse5egz/ ch09/MultiJointModel: https://jsfiddle.net/8Observer8/sL53wkn3/ ch09/MultiJointModel_segment: https://jsfiddle.net/8Observer8/ygvk7odv/ Chapter 10. Advanced Techniques ch10/RotateObject: https://jsfiddle.net/8Observer8/1f5hLmff/ ch10/PickObject: https://jsfiddle.net/8Observer8/owue624n/ ch10/PickFace: https://jsfiddle.net/8Observer8/edvw6z90/ ch10/HUD: https://jsfiddle.net/8Observer8/fLxxxs35/ ch10/3DoverWeb: https://jsfiddle.net/8Observer8/tbowcc16/ ch10/Fog: https://jsfiddle.net/8Observer8/6yf9L399/ ch10/Fog_w: https://jsfiddle.net/8Observer8/8aLvthc3/ ch10/RoundedPoints: https://jsfiddle.net/8Observer8/sjs5kmn4/ ch10/LookAtBlendedTriangles: https://jsfiddle.net/8Observer8/apoz294n/ ch10/BlendedCube: https://jsfiddle.net/8Observer8/xsrL2fs5/ ch10/ProgramObject: https://jsfiddle.net/8Observer8/jnd0j6w0/ ch10/FramebufferObject: https://jsfiddle.net/8Observer8/vaLq6d66/ ch10/Shadow: https://jsfiddle.net/8Observer8/jsnfwcae/ ch10/Shadow_highp: https://jsfiddle.net/8Observer8/brjzr00n/ ch10/Shadow_highp_sphere: https://jsfiddle.net/8Observer8/4fmyLy5f/ ch10/OBJViewer: https://jsfiddle.net/8Observer8/pws1x7uv/ ch10/RotatingTriangle_contextLost: https://jsfiddle.net/8Observer8/vs01s8Lz/ Gifts gifts/Particle: https://jsfiddle.net/8Observer8/Ltzt31vk/ gifts/Printf: https://jsfiddle.net/8Observer8/qsw7jtec/ gifts/SpecularCube: https://jsfiddle.net/8Observer8/z4xj9rbv/ gifts/TextTexture: https://jsfiddle.net/8Observer8/qt7q2kuf/ gifts/ThreeDUI: https://jsfiddle.net/8Observer8/zdw1f2st/ gifts/Wave: https://jsfiddle.net/8Observer8/eL9odthz/ gifts/WorldCoordinateSystem: https://jsfiddle.net/8Observer8/6utj3hnk/ appendix/CoordinateSystem: https://jsfiddle.net/8Observer8/dzz056jt/ Appendix appendix/CoordinateSystem_viewVolume: https://jsfiddle.net/8Observer8/apxLww1q/ appendix/LoadShaderFromFiles: https://jsfiddle.net/8Observer8/wdn9ubhj/ Текстура из Battle City с ортогональной матрицей проекции: Моя модель созданная в Blender из веб-приложения: https://8observer8.github.io/w... e-city-3d/
0
|
|
| 14.02.2020, 13:36 | |
|
0
|
|
| 14.02.2020, 13:36 | |
|
Морской бой Морской Бой Морской бой C++ Морской Бой на C++ Морской бой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача
Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
Сигнатура
func Fetch(urls string, maxConcurrent int) Result
Пример
urls :=. . .
|
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition)
Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
|
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
|
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool
Worker Pool — паттерн конкурентной обработки задач в Go.
Суть: фиксированное количество горутин-воркеров читают задачи из общего канала
и пишут результаты в общий канал результатов. . . .
|
|
[golang] Pipeline
alhaos 08.06.2026
Pipeline
Pipeline — паттерн конкурентной обработки данных в Go.
Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
|
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь
lIs4oanZS9Y
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|