|
1 / 1 / 0
Регистрация: 28.11.2013
Сообщений: 16
|
|
Графическое задание на С++: танчики02.02.2015, 10:52. Показов 8156. Ответов 23
Метки нет (Все метки)
Здравствуйте форумчане, сегодня на практике в универе дали задание, написать программу на С++, в которой должно быть поле, на котором ездят танки трех типов: легкие, средние и тяжелые. Все танки должны стрелять, каждый с разным интервалом времени. При попадании или столкновении, тяжелый танк должен убивать среднего, средний легкого. Если столкновение тяжелого и тяжелого, то ничего не должно происходить, и так же со средними и легкими. Это ещё не всё, у каждый танк должен быть индивидуальным, то есть каждый должен иметь отличимый от остальных танков процент брони, скорость, точность попадания, подвижность, размеры. До этого нам не давали заданий такой сложности, с графикой вообще дела не имели, подскажите хоть откуда начать учить, или помогите в написании. Спасибо за внимание.
0
|
|
| 02.02.2015, 10:52 | |
|
Ответы с готовыми решениями:
23
Графическое задание. Графическое задание РГЗ(расчетно-графическое задание) |
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 02.02.2015, 11:38 | |
|
1) В С++ нету стандартного модуля графики.
2) В винде можно использовать opengl https://www.cyberforum.ru/opengl/ или winapi https://www.cyberforum.ru/win-api/ 3) для быстрого и кроссплатформеного решения я бы выбрал SFML http://www.sfml-dev.org/ . При IQ выше среднего - написать первый прототип игр танчиик можно уже в течении 3 дней. 4) с того что стоит знать: а) игра это вечный цикл б) для относительно одинаковой скорости анимации и движения персонажей на компьютерах разной мощности осуществляют привязку ко времени: делают по разному, к примеру, делают засечку каждой первой строкой при входе в вечный цикл (итерацию) итого получается время выполнение 1 прохода например 800. На слабее компе это будет 1200. На еще слабее 1600 и т.д. Получается если домножать float переменную на смещение + это число быстрее компы выполнять за 1 секунду 8 итерации и добавят 100500 и старые компы выполнять 3 операции и добавят 100500. Всё условно объясняю - но станет понятно как делаются примитивы игр. в) пишите на ООП абсолютно всё, так как расширяемость при нём самая высокая. Не гавнокодьте всё в одном "универсальном классе". Удачи вам.
1
|
|
| 02.02.2015, 11:51 | |
|
Столько нового узнаешь порой... Мне говорили что опЕнгл наоборот кросплатформенный. И движение и прочие не зависящие от пользователя события я бы по таймеру делал, а оказывается все делают забитием пустых циклов. Да и на ООП с классами я бы забил, а тут настоятельно рекомендуют... Да и написал бы часа за полтора а не за 3 дня.
0
|
|
| 02.02.2015, 11:53 | |
|
0
|
|
|
Котовчанин
|
|
| 02.02.2015, 11:56 | |
|
_Ivana, и правда интересно, что же там получится за полтора часа. Я такую игруху писала(очень подобную), у меня на это ушла неделя. И рисовать училась, и с графикой работать в консоли, и всё такое. Но я тогда была полным нубом. Научите, уж, "штопать" такие игрухи.
1
|
|
| 02.02.2015, 12:03 | |||||||
|
Dark Byte, плати деньги и увидишь результат. Как оплатишь, начнешь и время отсчитывать. Но советы свои даже тогда держи при себе.
Добавлено через 3 минуты Тамика, про консоль никто не говорит. Виндовое приложение, визардом по шаблону, таймеры + винапи + чистый Си + драг-н-дроп с моего тетриса и прочих подобных проектов - и за полтора часа все работает. Да, танчики при этом - прямоугольники разного размера а не красивые текстурные 3Д объекты опЕнгловые - но я полагаю этого ТС и не требуется.
0
|
|||||||
| 02.02.2015, 12:04 | |
|
Не по теме: я бы тоже глянул на этот шедевр за полтора часа, где нету ниодного "пустого цикла" (наверно ишлось про итерацию, но автору веднее). Да и где-то увидело, что я писал что opengl не кроссплатформеный.... . Да думаю ТС'y для первой графической игры надо его использовать (рука_лицо). Люблю глупых людей) Они такие милые)))
0
|
|
| 02.02.2015, 12:13 | |
|
Тамика, вот это Программа круги на воде может получиться за полчаса - примерно столько это у меня и отняло. А если это уже есть (как у меня), то драг-н-дропнуть оттуда все рандомы\таймеры и т.п. и влепить за 10 минут управление клавишами, то и будут сабжевые танчики.
rikimaru2013, люди в 7 классе отличают тангенс от арктангенса, если они не глупые. И не пишут глупости в других темах потом.
0
|
|
| 02.02.2015, 17:37 | |
|
0
|
|
| 02.02.2015, 22:02 | |
|
Raali, ну так можно и до искусственного или группового интеллекта дойти, управляющего движением группы объектов. В стартовом посте вообще ничего не сказано о том как танчики выглядят, по каким законам движутся и стреляют. Поэтому будем проще - танчики будут круги (прямоугольники ориентированные по экрану менее красиво будет) с радиусом-пушкой, стрелять будет в том же направлении куда едет, ехать будет при рождении в случайно заданных приращениях по x y , от бортов и других танков будет отражаться по законам геометрической оптики - все. А это более чем реально наваять за полтора часа.
0
|
|
|
1 / 1 / 0
Регистрация: 28.11.2013
Сообщений: 16
|
|
| 06.02.2015, 15:35 [ТС] | |
|
Так кто то может мне помочь с заданием?
0
|
|
| 06.02.2015, 16:26 | |
|
Если в универе дали задание, должны были дать и знания для выполнения этого задания. Если знаний не дали, то рекомендую трясти деканат или основательно поговорить с преподавателем (не 1 на 1). Самое простое что могу посоветовать - GDI. Гугли "двойная буферизация" и начинай писать классы снарядов и танков. Если копировать рабочие куски кода и заменять где надо чужие объекты на свои, то сделаешь гораздо быстрее нежели учить OpenGL или GDI.
Если подобных заданий не давали, то попробуй в консоли сделать (как китайский тетрис). Поле будет массивом CHAR_INFO, вывод этого массива с помощью WriteConsoleOutput(). Заполнять этот массив будешь своими танками и снарядами. Рекомендую открыть сразу утилитку charmap, для выбора понравившихся символов на роль танка и снаряда (или настроить шрифт квадратиками). Здоровье, кстати, можно будет обозначать интенсивностью, а класс танка цветом. Снаряд вертикальный - вертикальная граница, горизонтальный - горизонтальная. Запускаешь цикл в котором вычисляешь кто где будет на следующем кадре, забиваешь это дело в массив CHAR_INFO и выводишь.
0
|
|
| 06.02.2015, 16:51 | |
|
не знаю, может извращение, но, а что если тебе бы не в консоле её не написать?
консольные танчики. Не, ну а чё? я когда-то таким бредом занимался...
0
|
|
|
1 / 1 / 0
Регистрация: 28.11.2013
Сообщений: 16
|
|
| 06.02.2015, 21:00 [ТС] | |
|
Так нам сказали в графичном виде. Нас только учили матрицы делать, массивы, классы.. с графикой вообще дела не имели, я даже представить не могу как это все сделать.. кто то из вас смог бы сделать хоть поле с одним танком, который рандомно передвигается и стреляет? В интернете нашел что то похожее на это, но без исходников. Вот оно.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 07.02.2015, 04:44 | ||
|
Второй вопрос: а кто собственно всем участникам этой темы сказал что задание на реалтайм? Делать пошаговый бой по типу все того же X-COM (и да, там были танчики). С полем в клеточку. Геморрою будет куда меньше.
0
|
||
| 07.02.2015, 09:03 | |
|
Самый простой вариант - сделать на спрайтах в 2D графике. Спрайт - это прямоугольник, на который выводится картинка. Вы передвигаете прямоугольник по экрану (это движение танка), а на нём меняются картинки. Например, вы нажали вниз, картинка заменилась на движение вниз. Ещё картинки меняются по таймеру, когда танк движется. Это чтобы была видимость движения. То есть картинки отличаются по сдвигу гусениц. Такие спрайты находятся на спрайт листе. Вы открываете программно картинку и формируете массивы, а в программе уже рисуете соответствующий массив какой нужен (поочереди выводите картинки из нужного массива на прямоугольник, который представляет танк). Вот что выдал поисковик на запрос tank sprite sheet
Я начал писать танчики на спрайтах на C++ Qt OpenGL --> скачать приложение для Win7 с исходниками Если вдруг приложение не запустится на вашем компьютере, то сообщите мне. Я рисую с использованием шейдеров. Чтобы понять как это делается, нужно научиться рисовать квадрат и накладывать на него текстуру. Я записываю видео, чтобы не нужно было объяснять, а просто показывать, как я это делаю --> рисуем квадрат Я может быть запишу видео, как делать спрайтовую анимацию с нуля Ещё я начал недавно писать игру "Танки" в 3D: скачать приложение для Win7 с исходниками Здесь всё гораздо сложнее. Модель танка я нарисовал в Blender. Это пока грубая модель. Я её нарисовал по этому видео. Blender сохраняет модель в файл. Модель я загружаю в программу с помощью библиотеки Assimp Когда-нибудь начну записывать видео, как поставить Assimp, рисовать модель и т.д. Мне нужно до этого созреть. Хотя вы сами можете установить Assimp, нарисовать по видео, как машинку, экспортировать из Blender'а в *.obj файл, посмотреть, как я загружаю и рисую по исходниками выше. Но я совсем неправильно покрасил модель. Я создал в Blender'е для каждого звена гусениц отдельный материал. Код там очень и очень сырой. Я может только через неделю начну его улучшать и добавлять танки, стрельбу и т.д.
1
|
|
| 07.02.2015, 11:10 | |
|
Правильно. И реализовать клиент-серверный вариант с мультиплеером и вэб интерфейсом
![]() ЗЫ к слову, как в невнятном стартовом, так и в таких же дальнейших постах ТС нет ни слова об управлении персонажами - все ездит и стреляет само. ЗЗЫ в отличие от рекомендующих "пойти в деканат" я склоняюсь к неадекватности ТС, нежели преподавателя.
0
|
|
|
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
|
|
| 07.02.2015, 18:10 | |
|
а самому сделать редактор карты на С и танчики с помощью символов асхи
0
|
|
| 07.02.2015, 18:10 | |
|
Помогаю со студенческими работами здесь
20
Сделать РГЗ (расчетно-графическое задание) Из turbo в ABC. немного подправить. Графическое задание Вывести полуокружности, повторяя по два раза с каждой стороны до конца цикла (графическое задание)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|