Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подскажите как реализовать

2.0K
03 мая 2007 года
BroKeR
163 / / 04.05.2006
Доброго всем времени суток.Объясню ситуацию.
Это пока все умозаключительно,в мыслях так сказать,хочу услышать Ваши советы по поводу всего этого.

Итак:
Код:
Существует игровой мир,просто статичная картинка,
на которой нарисовано 10 дверей,входы в локации.
Открыта только первая дверь,куда и может(пока)зайти
 главный герой.Каждая локация населена 1 персонажем,
который может,согласно сценария давать ГГ предметы.
После посещения ГГ локации,он выходит из нее с
какими-то предметами,на главный экран(тот что с
дверьми),причем в зависимости от полученных предметов
открываются дополнительные локации.Потом мы заходим
в любую открытую локацию,и начинаем общение с
персонажем.Мы можем как дать ему предмет(если он в
нем нуждается),так и получить от него предмет(ну
например поменять на какой либо из своих либо
уговорить отдать).



Вот в кратце игровой мир и процесс.Все поведение персонажей прописывается в текстовом файле,причем для каждой локации он свой.

Что я думаю.

Мне нужно загрузить эти текстовые файлы в,например, массив loc[10];где они будут у меня храниться и куда я в зависимости от локации смогу обращаться по индексу.
В каждом из текстовых файлов будет стоять метка на выполнения того или иного действия в зависимости от того,какие предметы есть у ГГ.Тоесть,например у ГГ есть топор,и он находится в локации 2,тогда я беру текст из loc[1]-и по тексту ползу до тега [topor/] после чего происходит разговор,обмен предметами,снова разговор до такого тега[/topor].Если же в тексте loc[1] тега [topor/] не встречается то перс говорит фразу по умолчанию.Если у нас например 10 предметов из которых 3 встречаются,то начинается произвольный диалог из этих 3-х.

Посему нам нужен как минимум класс Hero:
Код:
#ifndef HERO_H
#define HERO_H

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <map>

class CHero
{
public:
    CHero();
    ~CHero();

    bool GetFlag(std::string name_item);        //получить значение флага для предмета
   
    void Display();
    void AddItem(std::string name_item);        //добавить предмет
    void PutItem(std::string name_item);        //отдать предмет

    void AddLoc(int num_loc);                   //открытые локации
private:
    std::map<std::string,bool,std::less<std::string> > map_hero_item;

    std::vector<int> loc_open;
};
#endif

и его реализация
Код:
#include "Hero.h"

CHero::CHero():loc_open(10,0)
{
    loc_open[0]=1;
   
    std::ifstream file("item.txt");
    if(file)
    {
        // пока не конец
        while(!file.eof())
        {
            // читаем строку
            std::string line;
            file >>line;

            // ищем разделитель
            std::string::size_type off = line.find('=');
            if(off != std::string::npos)
            {
                // пишем в map пару имя/флаг
                map_hero_item[line.substr(0, off)] = false;
            }
        }
    }
}

CHero::~CHero()
{}

bool CHero::GetFlag(std::string name_item)
{
    return map_hero_item[name_item];   
}
void CHero::Display()
{
    for(int i=0;i<loc_open.size();i++)
        std::cout<<loc_open;
}
void CHero::AddItem(std::string name_item)
{
    map_hero_item[name_item]=true;
}

void CHero::PutItem(std::string name_item)
{
    map_hero_item[name_item]=false;
}

void CHero::AddLoc(int num_loc)
{
    loc_open[num_loc]=1;
}


я его написал вот так,но думаю что у умных людей будут мысли как улучшить.
Затем нам нужна какая-то структура данных что бы в ней хранить все эти 10 текстовых файлов(ужос)какая - ума не приложу.
С остальным вроде просто,потому как,если заходим в локацию с нужным предметом,то в сценарии получим то что надо,а если пока такового нет,то все равно ничего не получим.
В общем очень нужны Ваши дельные и не очень советы.Голову ломаю уже неделю,не знаю как реализовать.
C++ язык.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог