Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерфейс для персонажей, (Делаю игру) 
:(
    Опции темы
Bogdan1024
  Дата 28.6.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: нет
Всего: 13



Хочу сделать кучу персонажей с разными классами так, чтобы можно было хранить ссылки на объекты персонажей в одном массиве и потом просто поочерёдно их оттуда извлекать и обращаться с ними по какому-то общему для них всех интерфейсу чтобы мне было всё равно какой у них класс. Как это реализовать на с++? 


--------------------
user posted image
PM MAIL   Вверх
Xenon
Дата 28.6.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Ну, я так понимаю, сделать какой-то базовый класс, от него наплодить классов перссонажей конкретезированных уже.
Затем создавать массив указателей на объекты типа базовой класса.
Код

class base {};
class character:public base {};
base* pTr[100];

А дальше
Код

ptr[0]=new character; //создадим персонажа
ptr->deploy(); //что угодно кароче
  

Это сообщение отредактировал(а) XenonSk - 28.6.2006, 16:08


--------------------
user posted image  
PM MAIL   Вверх
NextAlex
Дата 28.6.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 10.8.2005
Где: Украина, г. Одесс а

Репутация: 2
Всего: 3



Например так:

Код

Base.h

class Base{
protected:
int ID;
public:
Base(){
ID = 0;
}

virtual void func1(){}

virtual int func2(double arg){}

void setID(int id){
this->ID = id;
}

int getID(){
return this ID;
}

};


Obgect1.h
#include "Base.h"

class Object1:public Base{
public:
Object1(int id){
this->setID(id);
}

void func1(){
printf("functin 1. ID = %i \n", this->ID);
}

int func2(double arg){
printf("functin 2. ID = %i, arg = %d \n", this->ID, arg);
return this->ID + 10;
}

void 
};


main.cpp

#include "Base.h"
#include "Object1.h"


int main(int argc, char* argv[]){
Object1 ob(32);
Base* base = &ob;

base->func1();
ob.setID(base->func2((double)ob.getID()));
ob.func1();
ob.func2(251.2);

return 0;
}

ну и дальше в том же духе smile
В общем делаешь базовый класс, в котором объявляешь базовые функции, единые для всех персонажей, а классы персонажей - потомками своего базового класса. Код набирал прямо здесь посему за работоспособность smile не ручаюсь, но общий смысл думаю уловишь. А вообще почитай про родителей,потомков и виртуальные функции. Кстати здесь это уже не раз проскакивало. 
--------------------
Говорила мама: "Учись играть на скрипке". Не хотел носить ноты - будешь носить пианино ...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0902 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.