|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
||||||
Создание 2D игры.09.05.2010, 18:45. Показов 16733. Ответов 17
Метки нет (Все метки)
Всем привет.
Прочел статью Созданную пользователем KTYJIX и захотелось создать собственную игру. Вот только много есть непонятного. Если кому не лень, присоединяйтесь к данной теме и попробуем вместе собрать что-то более или менее нормальное с полным описанием всех действий чтобы людям было понятно. KTYJIX и Otaka присоединяйтесь к теме, вы ценные люди. Давайте возьмем туже тему что и KTYJIX Пример игры И если не сложно кому, то киньте название книг или ценных материалов по созданию 2D игр. Добавлено через 1 минуту Первое что нужно подготовить, так это создать норм папочку, в которую все будем помещать и естественно подпапки с картинками. Ниже приведен код с полным описанием действий. Если что-то не правильно описал, то пишите, обязательно подправлю.
Как сделать движение персонажа по форме используя клавиши w,s,a,d?
0
|
||||||
| 09.05.2010, 18:45 | |
|
Ответы с готовыми решениями:
17
Создание 2D игры
|
|
Программист TH
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
|
|
| 09.05.2010, 20:43 | |
|
Обычно поверх TImage или формы ложат еще TPaintBox, принцип его действия в том, что при прорисовке чего-либо непостоянного, как раз твоего персонажа например - старая стирается, в итоге можно спокойно управлять и рисовать Draw функцией. Вот я думаю тебе подсказал )
P.S. перехват нажатий на форме: событие OnKeyPress - его и используй для этого
0
|
|
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
||
| 09.05.2010, 22:37 [ТС] | ||
|
Спасибо, вот только я имел ввиду, как с помощью кода это реализовать? Нажатие W = Движение вверх Нажатие S = Движение вниз и т.д.
0
|
||
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
||
| 09.05.2010, 23:16 | ||
|
Хм.... Пара простых вопросиков:
1. У вас есть хоть какие-нибудь идеи, касающиеся самой игры???
2. Как у вас в "игре" представлены обьекты? В виде списка обьектов, со своими координатами??? В виде массива точек??? 3. Что из себя вообще должна представлять игра?
0
|
||
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
||
| 10.05.2010, 01:00 [ТС] | ||
|
1. Конечно есть. Игра будет представлять из себя стратегическую аркаду. Будет герой и он будет всех убивать (Выполнять поставленные задачи) от уровня к уровню. Так же у героя будут помощники идущие точно следом за ним, которых можно будет от случая к случаю отклеивать (оставлять) от команды в режиме полной боеготовности. Герой и его спутники будут точно следить за действием мыши, то есть где мышь, туда и смотрят герой и его подручные. Так же масса объектов типа оружия, домов, различных холмов, воды, камней и т.д. Ну всем известно, что без звукового сопровождения ни одна игра не обходится. Так вот, нужно еще каким-то образом умудриться на определенные действия засунуть звуки. Как правильно это сделать, я тоже не знаю. Если быть точным, то хочется сделать так чтобы был к примеру список определенного звука и он брался в рандомном значении, например один из 10 возможных. 2. Если честно, я не знаю как именно они представлены. Хотелось бы узнать что лучше и почему? вообще я хочу сделать анимацию движения героя. Ну чтобы было понятно что он ходит, а не левитирует. ^_^ После прорисовать кровь и т.д. ну за анимацию я не беспокоюсь, так как нарисовать смогу как 3D так и 2D и любые эффекты построить. Только непонятно как их правильно закинуть в приложение чтобы они грамотно отображались. А то я тут столкнулся с проблемой, что анимация не работает, если ее загружать к примеру в TImage. Конечно можно использовать TImageList Но как из него правильно брать файлы и вообще как правильно им пользоваться чтобы не было проблем. 3. Отличную игру с красивой анимацией и отличным сюжетом. Анимацию и сюжет я могу сделать как орешки пощелкать. А вот как этому всему придать жизнь, непонятно ( Было бы неплохо Книги какие-нибудь по гейм деву или еще что-то ) А вообще, самое лучшее это советы, комментарии и просто помощь пользователей которые уже сталкивались с этим и пытались что-либо построить.
0
|
||
|
Тутошний я
|
|||||||
| 10.05.2010, 01:14 | |||||||
0
|
|||||||
|
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
|
|||||||
| 10.05.2010, 01:41 | |||||||
|
Grey,
2
|
|||||||
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
||
| 10.05.2010, 01:42 [ТС] | ||
|
Спасибо. И как же я не нашел на форуме этого. По поводу кода. Это работает если я буду использовать картинку в TImage. А как ребята делали чтобы битовый образ записанный к примеру в Graphics::TBitmap*Hero можно было двигать используя клавиши? А то если я заменю слова Image на описанный Hero, то нифига работать не будет. Да и тем более нужно ведь метод который мог бы выдавать определенные картинки на каждое действие, я как понял это можно реализовать с помощью списка картинок используя TImageList.
0
|
||
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
||||
| 10.05.2010, 09:56 | ||||
|
Схожесть может достигать 5-10%. Вы бы прочитали книжку Half-Life - Raising the Bar. Там рассказывается как создавалась 1 и 2 часть Half-Life. Вы удивитесь, узнав как изначально выглядила первая "Халфа". Мой вам совет: Для начала сделайте вот что: 1.Есть локация. 2.Есть ГГ(главный герой). 3.Есть обьекты, которые ГГ не может проходить (препятствия). 4.Есть противник, которого нужно убить. *.При желании можно еще и звук добавить. Как только у вас получится это, переходите к следующей стадии: Много противников. Аптечки. NPC..... Поверте - при таком подходе все ваши "Напалеоновские планы" рухнут в один момент и вы вернетесь на Землю. Добавлено через 6 минут 1.Можно обьекты представлять как список: Object37;Tupe 3;Texture jek.bmp;X 155;Y 226; Object38;Tupe 3;Texture jek.bmp;X 37;Y 334; А затем проходить циклом по этому списку, проверять координаты, столкновения и т.д. 2.Создать собственный класс. Так, я думаю, будет лучше. 3.Представить карту как массив клеток (шахматная доска). Я использую именно этот варииант, потому что он легче и удобнее для меня. Единственный минус - каждый обьект привязан к клетке. И двигаться может только по клеткам. Добавлено через 4 минуты Создаем 2 переменный отвечающие за координаты обьекта. При нажатии клавиши перемещения прибавляем к этим переменным соответствующие значения. Затем отрисовываем этот Битмап по новым координатам. Добавлено через 30 минут http://bcb-games.narod.ru/ - это то, что вам нужно.
1
|
||||
|
Программист TH
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
|
|
| 10.05.2010, 13:37 | |
Сообщение было отмечено как решение
Решение
Короче говоря, что касается темы:
1. Maikl Til, вам еще рано создавать игры - это однозначно, это я вам точно говорю, бросте сразу и подучите язык с++ со всеми входящими структурами для опыта, а потом изобретайте своё, или вы это дело сами бросите, когда поймете, что дальше по ступеньке вы не сможете ничего сделать. 2. Все в теме несут полный бред, особенно с перемещением картинки, за исключением более вразумительного смысла в сообщениях Ni'Tan. 3. Кстати на счет перемещения картинки по клавишам. Я вам говорил, есть OnKeyPress событие и есть у TCanvas функция Draw. Знаете такую? Она описывается как Draw(x,y) - где x,y координаты картинки и это я просил рисовать на TPAintBox.
3
|
|
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
||
| 10.05.2010, 14:16 [ТС] | ||
|
Вот только я сдаваться не привык ) Так что продолжу и буду усердно трудиться.
0
|
||
|
Покинул форум
3189 / 1368 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|||||||||||
| 10.05.2010, 14:36 | |||||||||||
|
Перемещение "Битмапа":
Unit1.CPP
1
|
|||||||||||
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
|
| 10.05.2010, 15:22 [ТС] | |
|
Пасибо =)
0
|
|
|
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
|
||||||
| 10.05.2010, 15:29 | ||||||
|
вопрос родственный с этой темой, может и автору пригодиться поэтому написал тут.
кто знает подскажите как получить HWND главного окна, допустим пытаюсь нарисовать линию таким способом:
0
|
||||||
|
Тутошний я
|
||
| 10.05.2010, 19:38 | ||
|
И картинка была только для примера. А за остальное спасибо.
0
|
||
|
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
|
||||||
| 10.05.2010, 20:02 | ||||||
1
|
||||||
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
||
| 11.05.2010, 12:45 [ТС] | ||
|
Бешь, объясни зачем вообще это нужно ? и что есть что? и что тут еще нужно описывать или какие-то нужно библиотеки подключать ? А то что-то он при запуске выдает что символы hwnd, hdc не индефицированы! )))
0
|
||
|
Программист TH
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
|
|
| 11.05.2010, 13:10 | |
|
HWND hwnd,hdc
- идет инициализация рабочей оласти. К примеру, если ты в коде напишешь: hdc=GetDC(NULL); - то он будет работать на нулевой, главной рабочей области THAndle, а значит это что? Верно, это и есть экран, т.е. поверх всего ) А т.к. у тебя там this->handle - то это и есть канва формы
0
|
|
| 11.05.2010, 13:10 | |
|
Помогаю со студенческими работами здесь
18
Создание 2d игры Создание игры на С++ Создание 3d игры на Borland C++ Создание мини-игры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|