Пятница, 19 Апреля 2024, 03:42

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Форум игроделов » Записи участника » nikotinign [66]
Результаты поиска
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?
Форум игроделов » Записи участника » nikotinign [66]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг