|
1 / 1 / 0
Регистрация: 19.12.2017
Сообщений: 105
|
||||||
Морской бой. Первая программа25.01.2020, 11:11. Показов 5824. Ответов 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 | |
|
Помогаю со студенческими работами здесь
67
Морской бой Морской Бой Морской бой C++ Морской Бой на C++ Морской бой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|