Результаты поиска
| |
nikotinign | Дата: Вторник, 13 Сентября 2011, 21:25 | Сообщение # 61 | Тема: Mortal Kombat в C++ Builder 2010 - первые шаги |
почетный гость
Сейчас нет на сайте
| Quote (Apati) Загружай в массив все кадры анимации через FormCreate, а потом в цикле рендери Canvas->Draw(x,y,Dude[i]); Если я все правильно понял, можно сделать в блокноте такой массив 123456789123456789123456789 и каждой цифре присвоить кадр, но тогда перемещение будет начинаться всегда с местоположения 1 а заканчиваться где попало, или надо как то по другому сделать?
|
|
| |
nikotinign | Дата: Вторник, 13 Сентября 2011, 17:53 | Сообщение # 62 | Тема: Mortal Kombat - пошаговая инструкция |
почетный гость
Сейчас нет на сайте
| Quote (Zizilk) Поэтому бери в руки вначале учебники C++ для начинающих, потом учебники по отрисовки графики(2д или 3д), а потом уже учебники по ИИ. А можно по конкретнее об "учебники по отрисовки графики(2д)". Тут проблема не только в том, чего ты умеешь, но и в том сколько времени нужно потратить на качественную отрисовку графики (тем более если учесть одновременную отрисовку нескольких персонажей). В движке все эти проблемы уже решены. Возможно большинство делает игры с помощью движков, но все равно кто то их делал и без движков, почему бы не поделиться своими знаниями как делать параллельную отрисовку нескольких персонажей, загружать кадры из ОЗУ, подключать и использовать библиотеки ... Зачем скрывать эту информацию?
Сообщение отредактировал nikotinign - Вторник, 13 Сентября 2011, 17:54 |
|
| |
nikotinign | Дата: Вторник, 13 Сентября 2011, 15:23 | Сообщение # 63 | Тема: Mortal Kombat - пошаговая инструкция |
почетный гость
Сейчас нет на сайте
| Здравствуйте. Программированием занимаюсь недавно, до этого 2 года сидел в 3D, а последние 3 недели пытался сделать игру в жанре файтинга наподобие вот этого http://flash-online-games.ru/stuff/d...mbat/6-1-0-263 . Больше всего проблем связанно со скоростью обработки – короче с техникой, если использовать какой ни будь движок ( например Mugen) то там проблема техники отпадает, но если ты захочешь в нем сделать что то из ряда вон выходящее (например что бы боец мог летать, или чтобы раздваиваться) то не факт что в Mugen это возможно, в то время как в C++ Builder 2010 на это нет ограничений, более того, обладая возможностью создания игры такого качества в C++ Builder можно без проблем создавать игры других жанров. Но я уже запарился, может быть это и полезно решать уже решенные задачи, но зачем изобретать велосипед, когда он уже изобретен? Мне так и не удалось найти литературу или сайт, в котором было описано как пошагово сделать игру Mortal Kombat (или ему подобное) в C++ Builder ( или другой среде разработки – например Visual Studio), при условие что все изображения-спрайты уже готовы. Как вы думаете, такое пособие существует, а может C++ Builder не самый подходящий выбор для такой задачи? Посоветуйте пожалуйста как грамотнее поступить? Вот на чем я остановился http://zalil.ru/31684362 (ИИ с таким принципом перемещения-анимации похоже уже не сделаешь).
|
|
| |
nikotinign | Дата: Понедельник, 29 Августа 2011, 21:37 | Сообщение # 64 | Тема: Mortal Kombat в C++ Builder 2010 - первые шаги |
почетный гость
Сейчас нет на сайте
| Здравствуйте. Вот решил попробовать написать игру типа Mortal Kombat и заодно выяснить, можно ли с помощью стандартной библиотеки сделать что то стоящее (хотя бы такого качества http://flash-online-games.ru/stuff/d...mbat/6-1-0-263) или лучше использовать какую ни будь другую библиотеку (или вообще использовать какой ни будь движок). На скорую руку набросал в максе пнг , потому претензии по графики не принимаю, сначала надо качественное управление сделать, а потом рисовать. Я все же хочу поставить определенную точку с перемещением и идти дальше. Мне ни как не удавалось нормально останавливать перемещение в цикле в FormKeyUp, а в циклах do { последовательность операторов } while (условие); while (условие) оператор; нет границ да и с ними мне кажется не проще. Жарил кашу, и вдруг подумал, а чего бы не соединить таймер и цикл, и само перемещение получилось бы достаточно плавным и без проблем останавливается, и как раз мне подойдет , когда с прыжками начну возиться. Но тут один косяк - , без анимации все ОК, но при включение в цикл анимации кадры загружаются в реальном времени, а перемещение в 10 раз медленнее, можно добавить Sleep(10); ,но тогда чем дольше держишь кейдаун – тем позже происходит остановка перемещения и анимации (да и там такой дисбаланс во времени происходит). Можно поставить 2 таймера, на один перемещение в цикле, во втором анимация – но тогда начинает тормозить. Вот если бы можно было считать перемещение в одном времени, а анимацию в другом, тогда бы все получилось. Подскажите пожалуйста, можно ли это как то сделать , или существует другой путь? вот код Code #include <vcl.h> #pragma hdrstop #include "Unit2.h" #include <math.h> //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm2 *Form2; Graphics::TBitmap *Dude; int x=225,y=85; // Координаты нашего обьекта Graphics::TBitmap *bb; int b=5,c=85; Graphics::TBitmap* dump=new Graphics::TBitmap; int AnimStep=1; //Кадр анимации String Anim="n"; int Where=0; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm2::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if( Key == VK_LEFT) Where=1; if( Key == VK_RIGHT) Where=3; if( Key == VK_UP) Where=5; if( Key == VK_DOWN) Where=2; } //--------------------------------------------------------------------------- void __fastcall TForm2::FormCreate(TObject *Sender) { Dude=new Graphics::TBitmap; Dude->LoadFromFile("n1.bmp"); Dude->Transparent=true; bb=new Graphics::TBitmap; bb->LoadFromFile("n1.bmp"); bb->Transparent=true; dump->Width=Width; dump->Height=Height; dump->Canvas->FillRect(Rect(0,0,dump->Width,dump->Height)); } //--------------------------------------------------------------------------- void __fastcall TForm2::FormKeyUp(TObject *Sender, WORD &Key, TShiftState Shift) { Where=0; Dude->LoadFromFile("n1.bmp"); //Загружаем кадр "простоя" обьекта } //--------------------------------------------------------------------------- void __fastcall TForm2::Timer1Timer(TObject *Sender) { if( Where !=0 ) //Если задано направление { if( Where==3) //Если задано движение вправо { // Устанавливаем соответствующие имя анимации for(int i=1;i<11;i++) // Запускаем цикл, в каждом новом шаге которого будет рисовать новый кадр анимации { // Делаем это для небольших пауз между кадрами Application->ProcessMessages(); // Ммм... приводим приложение в чувство, чтобы оно могла перерисоваться // Собственно, перерисовываем форму, стирая тем самым старый кадр анимации Dude->LoadFromFile("n"+String(i)+".bmp"); //Загружаем новый кадр анимации под номером i Canvas->Draw(x,y,Dude); x+=5; dump->Canvas->FillRect(Rect(0,0,dump->Width,dump->Height)); dump->Canvas->Draw(x,y,Dude); dump->Canvas->Draw(b,c,bb); //Выводим на форму Canvas->Draw(0,0,dump); // Делаем это для небольших пауз между кадрам } //Увеличиваем положение по x-координата не 5 } if( Where==1){ for(int i=1;i<11;i++) // Запускаем цикл, в каждом новом шаге которого будет рисовать новый кадр анимации { // Делаем это для небольших пауз между кадрами Application->ProcessMessages(); // Ммм... приводим приложение в чувство, чтобы оно могла перерисоваться // Собственно, перерисовываем форму, стирая тем самым старый кадр анимации Dude->LoadFromFile("n"+String(i)+".bmp"); //Загружаем новый кадр анимации под номером i Canvas->Draw(x,y,Dude); x-=5; dump->Canvas->FillRect(Rect(0,0,dump->Width,dump->Height)); dump->Canvas->Draw(x,y,Dude); dump->Canvas->Draw(b,c,bb); //Выводим на форму Canvas->Draw(0,0,dump); // Делаем это для небольших пауз между кадрам } } if (x<b+65) { x = b + 65; for(int i=1;i<33;i++) // Запускаем цикл, в каждом новом шаге которого будет рисовать новый кадр анимации { b-=1; dump->Canvas->FillRect(Rect(0,0,dump->Width,dump->Height)); dump->Canvas->Draw(x,y,Dude); dump->Canvas->Draw(b,c,bb); //Выводим на форму Canvas->Draw(0,0,dump); } } if( Where==5) //Вверх { y-=5; } if( Where==2) //Вниз { y+=5; } } dump->Canvas->FillRect(Rect(0,0,dump->Width,dump->Height)); dump->Canvas->Draw(x,y,Dude); dump->Canvas->Draw(b,c,bb); //Выводим на форму Canvas->Draw(0,0,dump); } вот файл http://zalil.ru/31621299
Сообщение отредактировал nikotinign - Понедельник, 29 Августа 2011, 21:41 |
|
| |
nikotinign | Дата: Пятница, 26 Августа 2011, 09:08 | Сообщение # 65 | Тема: Собираю комманду разработчиков! Дизайнер и Звукооператор! |
почетный гость
Сейчас нет на сайте
| Такое качество подойдет? Bruce Lee vs Cock http://www.youtube.com/watch?v=rc2i9VZWRxE
|
|
| |
nikotinign | Дата: Пятница, 26 Августа 2011, 08:55 | Сообщение # 66 | Тема: M.U.G.E.N - Обсуждение |
почетный гость
Сейчас нет на сайте
| Здравствуйте. В файле select.def можно назначать клавиши на движения - ударов, но код там в виде цифр и он не соответствует кодам клавиш языка С++. Подскажите пожалуйста, где можно посмотреть таблицу клавишных кодов M.U.G.E.N, например какую надо написать цифру, чтобы удар ногой осуществлялся с помощью клавиши 5?
|
|
| |
|