Пятница, 29 Марта 2024, 15:43

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Форум игроделов » Записи участника » Renus [113]
Результаты поиска
RenusДата: Среда, 03 Ноября 2010, 11:22 | Сообщение # 41 | Тема: Проблема с производным классом
почетный гость
Сейчас нет на сайте
Всем привет.
Щас спрошу вопрос, может я совсем туплю конечно, но что то с утра не додумывается...

Есть список в который занесены все объекты, список хранит указатели на переменные собственного типа CObject, CObject в свою очередь базовый класс для всех объектов остальных игровых классов(CPlayer, CBullet и т.д.)
Собсно вопрос в том как вытянуть значение внутренней переменной производного класса, пули например.
Вот небольшой код для попадания пули по врагу:

Code

CrossIter=Obj_List.begin();
  CObject* pObject;
  while(CrossIter!=Obj_List.end())
  {
   pObject=*CrossIter;
   if (pObject->type=="bullet")
   {
    if (CheckColl(cbox, pObject->cbox)==true)  
    {
     armor-=pObject->damage; // Вот тут надо получить доступ как к CBullet, а не CObject
     pObject->kill=true;
    }
   }
   CrossIter++;
  }

Извините за кривую формулировку вопроса...

RenusДата: Вторник, 26 Октября 2010, 18:34 | Сообщение # 42 | Тема: [2d] 0x000001
почетный гость
Сейчас нет на сайте
Ниче так, весело, тока сделай что бы управление работало только если объект на поверхности, а то проблема всех платформеров, что игрок даже в воздухе умудряется двигаться...
RenusДата: Суббота, 23 Октября 2010, 17:54 | Сообщение # 43 | Тема: [2D] - Зверобой
почетный гость
Сейчас нет на сайте
Quote (PaintKiller)
Renus, арты ваши?

Ну, я ж игру не сам делаю, всю графику и арты, кроме набросков на кораблики делает моделлер, ну он и художник в принципе... Я единственное еще звезды, туман и пыль делал, а так все он.
Так что все кроме звуков полностью свое, звуки скоро тоже свои будут...
А к чему собственно вопрос?
RenusДата: Суббота, 23 Октября 2010, 14:08 | Сообщение # 44 | Тема: [2D] - Зверобой
почетный гость
Сейчас нет на сайте
Спасибо)
Вчера наконец то связался с моделлером, думаю на следующей недели будет более менее функциональная демка, с стреляющими врагами и возможно плюшками... Хотя изменения скорее больше коснуться механики игры чем внешнего вида...
RenusДата: Пятница, 22 Октября 2010, 20:10 | Сообщение # 45 | Тема: Начальные параметры объектов, кто как?
почетный гость
Сейчас нет на сайте
Всем привет, это снова Я)
Задам не большой легкий вопросик, просто интересно кто как делает.
Как вы задаете начальные параметры для создаваемых объектов(самолетов, плюшек и прочей игровой утвари)?
Создаете объект через конструктор копирования, задаете все переменные напрямую через конструктор объекта, загружаете из внешнего фала или еще как то?
Делитесь опытом коллеги happy
RenusДата: Среда, 20 Октября 2010, 19:21 | Сообщение # 46 | Тема: Простой двусвязный список
почетный гость
Сейчас нет на сайте
Quote (nilrem)
vector.insert(vector.begin,vector element);

Да, спасибо, помогло!
Code
Obj_List.insert(Obj_List.begin(), new CBullet(x, y-120, 0, bullet1, "bullet"));

Но ведь инсерт медленно работает в векторе?
Все таки, в качестве спортивного интереса и опыта, не могли бы помочь с моим шаблонизированным списком...?

RenusДата: Среда, 20 Октября 2010, 18:02 | Сообщение # 47 | Тема: Простой двусвязный список
почетный гость
Сейчас нет на сайте
Quote (Programmer_BIOMSOFT)
где ты учился С++? Зачем такой большой код?! И о ошыбке в спрвку заглянь.... Обьясни мне почему ты не используешь векторы?

Сам учу по книжкам...
Все обьекты занесены в список, у каждого есть функция Process которая вызывается на каждом кадре(собсно логика обьекта). К примеру, обрабатывается сущность игрока(самолетик), в это всремя зажат пробел, происходит выстрел(создаться пуля), так вот эта пуля должна добавляться перед обьектом ее создающим, дабы она не обрабатывалась в этом цикле(иначе ее первая отрисовка будет уже сдвинута на величину ее скорости), тоесть при привязки всех величин игры в dt(времени отрисовки) ее видимая точка появления будет смещать по оси Y в зависимости от FPS...
Решается это просто, нужно засунуть пулю в начало списка, но у вектора нету такой функции. А почему я не использую list написано в моем первом посте!
Вообщем прошу писать по теме...
P. S. Помогите с ошибкой пожалуйста...
RenusДата: Среда, 20 Октября 2010, 11:37 | Сообщение # 48 | Тема: Простой двусвязный список
почетный гость
Сейчас нет на сайте
Вообщем, в плане построения своей игры возникла необходимость использовать list, вместо vector, для хранения указателей на все игровые объекты. Не хватало всего одной функции - push_front, для того что бы созданные игровые объекты не обрабатывались в текущем цикле(это не правильно логически, один кадр конечно не смертельно, но шедевры собираются из мелочей...), и успевали отрисоваться в своих начальных координатах.
Попробовал просто сменить vector на list и по вылазила куча ошибок) И тут я задумался, а почему бы не попробовать написать подобный контейнер самому, только уже без десятков не нужных мне функций. Для половины критиков скажу сразу, Я не собираюсь спорить с STL и изобретать велосипед. У меня есть время и я хочу разобраться, как этот велосипед работает))
Как говорил мой школьный учитель физики:"С готовой формулой любой дурак сможет, а без слабо?" Короче хватит лирики, а то еще книгу напишу, "Как я писал на С++" tongue

Как устроены STL контейнеры я не читал, но думаю как и все шаблоны, включил логику и начал писать свой, иногда правда гуглил по форумам на счет динамических списков... Вот, то что я накидал за сегодня:

Code

//------------------------------------------------------------------------------
// Класс элемента
//------------------------------------------------------------------------------
template<class T> struct Element
{
  T   data;     // Хранимые данные элемента
  Element*    next, * prev;   // Указатели на соседние элементы
      
  Element<T>(T);      // Конструктор элемента
};

//------------------------------------------------------------------------------
// Класс листа
//------------------------------------------------------------------------------
template<class Type> class CList
{
public:
  int     size;   // Колличество элементов в листе
  Element<Type>*  first, * last;    // Указатели на крайние элементы

  void push_front(Type);    // Добавление в начало
  void push_back(Type);    // Добавление в конец
  void del_elem(int);     // Удаление элемента по номеру
  Type* get_data(int);    // Получение данных

  CList<Type>();      // Конструктор списка по умолчанию
};

// Конструктор элемента
template<class T> Element<T>::Element(T pdata) {data=pdata;}

// Конструктор листа по умолчанию
template<class Type> CList<Type>::CList()
{
  size=0;
  first=NULL;
  last=NULL;
}

// Добавление элемента в начало списка
template<class Type> void CList<Type>::push_front(Type pdata)  
{
  if (size==0)
  {
   first=new Element<Type>(pdata);
   first->next=NULL;
   first->prev=NULL;
   last=first;
   size+=1;
  }
  else
  {
   Element<Type>* temp=new Element<Type>(pdata);
   temp->next=first;
   temp->prev=NULL;
   first->prev=temp;
   first=temp;
   size+=1;  
  }
}

// Добавление элемента в конец списка
template<class Type> void CList<Type>::push_back(Type pdata)
{
  if (size==0)
  {
   last=new Element<Type>(pdata);
   last->next=NULL;
   last->prev=NULL;
   first=last;
   size+=1;
  }
  else
  {
   Element<Type>* temp=new Element<Type>(pdata);
   temp->prev=last;
   temp->next=NULL;
   last->next=temp;
   last=temp;
   size+=1;  
  }
}

// Удаление элемента из списка по номеру
template<class Type> void CList<Type>::del_elem(int num)
{
  if (num==0)
  {
   Element<Type>* temp=first;
   first->next->prev=NULL;
   first=first->next;
   delete temp;
   size-=1;
  }
  if (num==size-1)
  {
   Element<Type>* temp=last;
   last->prev->next=NULL;
   last=last->prev;
   delete temp;
   size-=1;
  }
  if (num>0 && num<size-1)
  {
   Element<Type>* temp=first;
   for (int i=0; i<num; i++)
   {
    temp=temp->next;
   }
   temp->prev->next=temp->next;
   temp->next->prev=temp->prev;
   delete temp;
   size-=1;
  }
}

// Получение данных из элемента
template<class Type> Type* CList<Type>::get_data(int num)
{
  if (num==0) {return &first->data;}
  if (num==size-1) {return &last->data;}
  if (num>0 && num<size-1)
  {
   Element<Type>* temp=first->next;
   for (int i=1; i<num; i++)
   {
    temp=temp->next;
   }
   return &temp->data;
  }
  else {return NULL;}
}

P.S. Поскольку пишу я быдлокодом, то попрошу вас товарищи, указывать на все мои ошибки, даже которые не касаются работоспособности кода.
Скажите что не правильно и что можно сделать лучше, пока я не начал писать дальше...
Всем заранее спасибо!

Добавлено (20.10.2010, 11:37)
---------------------------------------------
Хм... так отдельно в своем проекте работает, а как добавляю в игру и разбиваю на 2 файлы сср и h. При попытке создать экземпляр выдает такую гадость:

Code
1>lists.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall CList<class CObject *>::CList<class CObject *>(void)" (??0?$CList@PAVCObject@@@@QAE@XZ) в функции "void __cdecl `dynamic initializer for 'MyList''(void)" (??__EMyList@@YAXXZ)

Помогите разобраться...(((

RenusДата: Вторник, 19 Октября 2010, 00:26 | Сообщение # 49 | Тема: [2D] - Зверобой
почетный гость
Сейчас нет на сайте
Quote (67boy)
Было б 3Д, тогда б не игра а ЗОЛОТО.

НУ мне еще то 3Д как до... Но в мечтах 3Д космосим где все работает на физике, у корабля есть маршевые и маневровые двигатели, если разогнались до 0.99С, извините тормозите еще столько же что бы остановиться))) А не так, как во всех играх, кнопку отжал и остановился, на каком законе физики... dry
Quote (minimog)
а нельзя ли переместить кнопки замедления времени на другие места

Вот, специально для друга, как раз и скрины залью... смотрим управление в описании!
Демка и скрины перезалиты!
RenusДата: Понедельник, 18 Октября 2010, 11:10 | Сообщение # 50 | Тема: [2D] - Зверобой
почетный гость
Сейчас нет на сайте
Quote (NeZnayu)
Почему фон стоит на месте?
Почему все противники дохнут от одного выстрела?

Добавим в ближайшее время...

Добавлено (18.10.2010, 11:10)
---------------------------------------------
Пока что только динамический фон сделал, занят внутренними работами...
Демку перезалил.

RenusДата: Среда, 13 Октября 2010, 01:39 | Сообщение # 51 | Тема: [2D] - Зверобой
почетный гость
Сейчас нет на сайте
Ну, на самом деле, именно так я и хотел назвать...)
Это название всплыло из детства, году так наверное в 95 я игрался в подобную игру, еще на первых моделях х86)))

Добавлено (08.10.2010, 02:15)
---------------------------------------------
Написал упрощенную версию системы частиц, добавил звук.
Сделал бы больше, но был занят)))
Перезалил демку, качаем смотрим, критикуем!!!
Скрины пока не менял...

Добавлено (13.10.2010, 01:39)
---------------------------------------------
Доработал частицы, но еще отлаживаю...
Сделал изменение скорости воспроизведения звука. (для наглядности изменяется скорость фоновой музыки, вообще будут только игровые звуки)
Перезалил демку и скриншоты!

Люди не молчим, критикуйте, делитесь идеями!!!

RenusДата: Понедельник, 11 Октября 2010, 19:11 | Сообщение # 52 | Тема: Пятый конкурс от GcUp.ru! (#5)
почетный гость
Сейчас нет на сайте
Я б на такую критику не обиделся...
И тем более она не ко всем относиться.
RenusДата: Понедельник, 11 Октября 2010, 19:02 | Сообщение # 53 | Тема: Пятый конкурс от GcUp.ru! (#5)
почетный гость
Сейчас нет на сайте
Извините конечно, но стоящих игра там максимум две или три.
Честно, мне было бы стыдно выкладывать такие игры...
Я не выложил свою, потому что не успел сделать и половины, от того что запланировал, но тот обрубок игры который я сделал засунул бы далеко в *опу 2/3 выложенных на конкурс игр, при том что это моя первая игра и она пишется на Яп...
Ребята, не хочу никого обидеть, но пора расти, ведь ваши игры будут интересны вам и максимум вашим друзьям.
Еще раз извините за резкую критику.
P. S. А голосование советую провести, т. к. есть игры с очень интересной задумкой, которые почему то заняли низкие места.
RenusДата: Понедельник, 11 Октября 2010, 16:55 | Сообщение # 54 | Тема: Цвет и прозрачность в HGE
почетный гость
Сейчас нет на сайте
DekaSoft, nilrem Огромное спасибо!
Почитал, разобрался, все работает)
Если будут вопросы по AVR или другим чипам, обращайтесь, всегда помогу...
Обязательно напишу вам в титрах к игре благодарность tongue
RenusДата: Понедельник, 11 Октября 2010, 09:33 | Сообщение # 55 | Тема: Цвет и прозрачность в HGE
почетный гость
Сейчас нет на сайте
Quote (DekaSoft)
Или научить как логическими операциями установить/сбросить бит? Чего-то я плохо понял вопрос кажется...

Ага happy
Кинь инфу или ссылку, а то я искал с двордом ниче не нашел...
RenusДата: Понедельник, 11 Октября 2010, 09:07 | Сообщение # 56 | Тема: Цвет и прозрачность в HGE
почетный гость
Сейчас нет на сайте
Да это я читал, я имел ввиду побитовую установку значений(в отдельности) каждой из четырех оставляющих.
Еще и работа с шестнадцатеричной системой, не очень быстро получается...
RenusДата: Понедельник, 11 Октября 2010, 02:30 | Сообщение # 57 | Тема: Цвет и прозрачность в HGE
почетный гость
Сейчас нет на сайте
Посмотрев на родную систему частиц HGE я немножко по плевался, нет все красиво выглядит, но в моей игре есть изменение течения времени и подобные выкрутасы, которые толкнули к написанию своей системы частиц...
Написал уже довольно много, все работает и довольно красиво, не могу только с одной вещью разобраться.
Как изменить цвет и прозрачность спрайта, как обратиться к определенному биту DWORDа отвечающему за цвет, можно ли как то обойти переводы с шестнадцатеричной системой?
Понимаю что возможно не корректно сформулировал вопрос, но лучше не получаеться)))
Расскажите кто как работает с цветом спрайтов в HGE плз...
RenusДата: Понедельник, 11 Октября 2010, 01:41 | Сообщение # 58 | Тема: Пятый конкурс от GcUp.ru! (#5)
почетный гость
Сейчас нет на сайте
Ну что там, кто выиграл?!)))
RenusДата: Суббота, 09 Октября 2010, 19:29 | Сообщение # 59 | Тема: Пятый конкурс от GcUp.ru! (#5)
почетный гость
Сейчас нет на сайте
Quote (vicu2010)
А я не соглашусь!
Кто напишет двиг,нарисует декораций, зделает музыку и всё за месяц?
А конструктор вам в помощь!

Так я и говорю что для подобных конкурсов конструктор вполне подходит...
Но сам я пишу на VS 2008(C++) + HGE +Squall
И еще я музыкант, и всякое подобие клубняка могу наклацать левой ногой в темноте)))
Это вам не Баха с Вивальди играть...

RenusДата: Суббота, 09 Октября 2010, 18:39 | Сообщение # 60 | Тема: Пятый конкурс от GcUp.ru! (#5)
почетный гость
Сейчас нет на сайте
Quote (vicu2010)
Кто на каком Кострукторе/Движке делал игру?

Конструкторы для детей или для подобных конкурсов, когда нужно реализовать что то простое и быстро...
А когда речь идет о сложном проекте, большой игре и быстрой производительности, взлетает только Яп.
По этому тяжело сравнивать игры "склацанные" на конструкторе и написанные ручками, при внешней схожести это задачи совершенно разной сложности...(хотя игроку пофигу, ему главное геймплэй)
Но, уважающий себя программист, для решения подобной задачи, конструктором пользоваться вряд ли будет...
А вообще, вопрос интересный, колитесь граждане!)))


Сообщение отредактировал Renus - Суббота, 09 Октября 2010, 18:41
Форум игроделов » Записи участника » Renus [113]
  • Страница 3 из 6
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск:

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