12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
||||||
1 | ||||||
Создание 2D игры.09.05.2010, 18:45. Показов 16052. Ответов 17
Метки нет (Все метки)
Всем привет.
Прочел статью Созданную пользователем KTYJIX и захотелось создать собственную игру. Вот только много есть непонятного. Если кому не лень, присоединяйтесь к данной теме и попробуем вместе собрать что-то более или менее нормальное с полным описанием всех действий чтобы людям было понятно. KTYJIX и Otaka присоединяйтесь к теме, вы ценные люди. Давайте возьмем туже тему что и KTYJIX Пример игры И если не сложно кому, то киньте название книг или ценных материалов по созданию 2D игр. Добавлено через 1 минуту Первое что нужно подготовить, так это создать норм папочку, в которую все будем помещать и естественно подпапки с картинками. Ниже приведен код с полным описанием действий. Если что-то не правильно описал, то пишите, обязательно подправлю.
Как сделать движение персонажа по форме используя клавиши w,s,a,d?
0
|
09.05.2010, 18:45 | |
Ответы с готовыми решениями:
17
Создание Игры Создание 2D игры Создание игры(2d) Создание 2d игры |
Программист TH
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
|
|
09.05.2010, 20:43 | 2 |
Обычно поверх TImage или формы ложат еще TPaintBox, принцип его действия в том, что при прорисовке чего-либо непостоянного, как раз твоего персонажа например - старая стирается, в итоге можно спокойно управлять и рисовать Draw функцией. Вот я думаю тебе подсказал )
P.S. перехват нажатий на форме: событие OnKeyPress - его и используй для этого
0
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
|
09.05.2010, 22:37 [ТС] | 3 |
Спасибо, вот только я имел ввиду, как с помощью кода это реализовать? Нажатие W = Движение вверх Нажатие S = Движение вниз и т.д.
0
|
Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|
09.05.2010, 23:16 | 4 |
Хм.... Пара простых вопросиков:
1. У вас есть хоть какие-нибудь идеи, касающиеся самой игры??? 2. Как у вас в "игре" представлены обьекты? В виде списка обьектов, со своими координатами??? В виде массива точек??? 3. Что из себя вообще должна представлять игра?
0
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
|
10.05.2010, 01:00 [ТС] | 5 |
1. Конечно есть. Игра будет представлять из себя стратегическую аркаду. Будет герой и он будет всех убивать (Выполнять поставленные задачи) от уровня к уровню. Так же у героя будут помощники идущие точно следом за ним, которых можно будет от случая к случаю отклеивать (оставлять) от команды в режиме полной боеготовности. Герой и его спутники будут точно следить за действием мыши, то есть где мышь, туда и смотрят герой и его подручные. Так же масса объектов типа оружия, домов, различных холмов, воды, камней и т.д. Ну всем известно, что без звукового сопровождения ни одна игра не обходится. Так вот, нужно еще каким-то образом умудриться на определенные действия засунуть звуки. Как правильно это сделать, я тоже не знаю. Если быть точным, то хочется сделать так чтобы был к примеру список определенного звука и он брался в рандомном значении, например один из 10 возможных. 2. Если честно, я не знаю как именно они представлены. Хотелось бы узнать что лучше и почему? вообще я хочу сделать анимацию движения героя. Ну чтобы было понятно что он ходит, а не левитирует. ^_^ После прорисовать кровь и т.д. ну за анимацию я не беспокоюсь, так как нарисовать смогу как 3D так и 2D и любые эффекты построить. Только непонятно как их правильно закинуть в приложение чтобы они грамотно отображались. А то я тут столкнулся с проблемой, что анимация не работает, если ее загружать к примеру в TImage. Конечно можно использовать TImageList Но как из него правильно брать файлы и вообще как правильно им пользоваться чтобы не было проблем. 3. Отличную игру с красивой анимацией и отличным сюжетом. Анимацию и сюжет я могу сделать как орешки пощелкать. А вот как этому всему придать жизнь, непонятно ( Было бы неплохо Книги какие-нибудь по гейм деву или еще что-то ) А вообще, самое лучшее это советы, комментарии и просто помощь пользователей которые уже сталкивались с этим и пытались что-либо построить.
0
|
Тутошний я
|
||||||
10.05.2010, 01:14 | 6 | |||||
Это для примера.
0
|
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
|
||||||
10.05.2010, 01:41 | 7 | |||||
Grey,
можно так
2
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
|
10.05.2010, 01:42 [ТС] | 8 |
Спасибо. И как же я не нашел на форуме этого. По поводу кода. Это работает если я буду использовать картинку в TImage. А как ребята делали чтобы битовый образ записанный к примеру в Graphics::TBitmap*Hero можно было двигать используя клавиши? А то если я заменю слова Image на описанный Hero, то нифига работать не будет. Да и тем более нужно ведь метод который мог бы выдавать определенные картинки на каждое действие, я как понял это можно реализовать с помощью списка картинок используя TImageList.
0
|
Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|
10.05.2010, 09:56 | 9 |
Честно - у вас это не получится. Как я понимаю - это у вас первая игра? Ну вам один небольшой пример из Геймдева: Практически всегда конечный результат не похож на то, что задумывали.
Схожесть может достигать 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 | 10 |
Сообщение было отмечено как решение
Решение
Короче говоря, что касается темы:
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 [ТС] | 11 |
Вот только я сдаваться не привык ) Так что продолжу и буду усердно трудиться.
0
|
Покинул форум
3187 / 1366 / 109
Регистрация: 29.01.2010
Сообщений: 2,887
|
|||||||||||
10.05.2010, 14:36 | 12 | ||||||||||
Перемещение "Битмапа":
Unit1.CPP
1
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
|
10.05.2010, 15:22 [ТС] | 13 |
Пасибо =)
0
|
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
|
||||||
10.05.2010, 15:29 | 14 | |||||
вопрос родственный с этой темой, может и автору пригодиться поэтому написал тут.
кто знает подскажите как получить HWND главного окна, допустим пытаюсь нарисовать линию таким способом:
0
|
Тутошний я
|
|
10.05.2010, 19:38 | 15 |
Ну почему бред? Если у меня поле на весь экран и не перемещается, мне проще картинку перемещать чем всё это отрисовывать в битмап.
И картинка была только для примера. А за остальное спасибо.
0
|
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
|
||||||
10.05.2010, 20:02 | 16 | |||||
1
|
12 / 12 / 1
Регистрация: 19.03.2010
Сообщений: 71
|
|
11.05.2010, 12:45 [ТС] | 17 |
Бешь, объясни зачем вообще это нужно ? и что есть что? и что тут еще нужно описывать или какие-то нужно библиотеки подключать ? А то что-то он при запуске выдает что символы hwnd, hdc не индефицированы! )))
0
|
Программист TH
292 / 147 / 12
Регистрация: 06.01.2009
Сообщений: 537
|
|
11.05.2010, 13:10 | 18 |
HWND hwnd,hdc
- идет инициализация рабочей оласти. К примеру, если ты в коде напишешь: hdc=GetDC(NULL); - то он будет работать на нулевой, главной рабочей области THAndle, а значит это что? Верно, это и есть экран, т.е. поверх всего ) А т.к. у тебя там this->handle - то это и есть канва формы
0
|
11.05.2010, 13:10 | |
11.05.2010, 13:10 | |
Помогаю со студенческими работами здесь
18
Создание игры на С++ Создание 3d игры на Borland C++ Создание мини-игры Создание игры Викторина Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |