Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Консольная РПГ. (MUD-подобная). - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массивы, поиск последовательных элементов, создающих прогрессию http://www.cyberforum.ru/cpp-beginners/thread561812.html
Привет! Программа заключается в том, что она ищет в массиве три последовательных элемента которые создают арифметическую или геометрическую прогрессию. Но у меня вылетает ошибка при запуске...
C++ что плохого если я делаю ф-ю main типа void привет всем, кто может объяснить, что плохого если я делаю ф-ю main типа void ? http://www.cyberforum.ru/cpp-beginners/thread561797.html
C++ синхронизация в windows
есть два консольных приложения, родительского и дочернего процесса (должны ли они быть консольными), хочу обменяться между ними данными.Выбрал самый сложный путь. Использую пейпы в комментариях я...
C++ Функции
Здравствуйте!!! =) помогите пожалуйста с одной задачкой!)) Написать программу для вычисления суммы четных положительных элементов массивов А(30), В(30), С(30), используя прототип функции.
C++ Пытаюсь вывести латинские буквы но не могу реализовать затею http://www.cyberforum.ru/cpp-beginners/thread561760.html
Доброе время суток необходимо сделать лабораторную работу но не могу понять как составить условие. Дана строка из 20 символов. Вывести из нее на печать только строчные буквы латинского алфавита ...
C++ Удаление элементов Помогите пожалуйста надо из одномерного динамического массива удалить n элементов начиная с номера к, ниже программа на формирование и вывод одном динамич массива....буду очень признателен, нужно... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
02.05.2012, 23:33
А вот пример как это вижу я.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <iostream>
#include <string>
#include <map>
#include <memory>
 
class Location;
 
class NextLocations
{
public:
    typedef std::shared_ptr<Location> location_t;
    typedef std::map<int, location_t> locations_t;
    NextLocations(const locations_t& locs):locations(locs)
    {
    }
    location_t get_next(const int choice)
    {
        locations_t::iterator iter = locations.find(choice);
        if (iter != locations.end())
        {
            return iter->second;
        }
        return location_t();
    }
    bool empty() const { return locations.empty(); }
private:
    locations_t locations;
};
 
class Location
{
public:
    Location(const std::string& desc, const NextLocations& locs):
        description(desc), locations(locs)
    {
    }
    const std::string get_description() const { return description; }
    bool has_next() const { return !locations.empty(); }
    NextLocations::location_t get_next(const int choice)
    {
        return locations.get_next(choice);
    }
private:
    std::string description;
    NextLocations locations;
};
 
class World
{
public:
    World(Location& start_loc):start_location(start_loc)
    {
    }
    virtual ~World()
    {
    }
    virtual void start() = 0;
protected:
    Location& start_location;
};
 
class ConsoleInterfaceWorld : public World
{
public:
    ConsoleInterfaceWorld(Location& start_loc):World(start_loc)
    {
    }
    virtual ~ConsoleInterfaceWorld()
    {
    }
    virtual void start() 
    {
        Location& current_loc = start_location;
        std::cout << current_loc.get_description() << std::endl;
        while (current_loc.has_next())
        {
            std::cout << "Enter your decision: ";
            int choice = 0;
            std::cin >> choice;
            NextLocations::location_t loc = current_loc.get_next(choice);
            if (!loc)
            {
                std::cerr << "Invalid choice. No such location" << std::endl;
                continue;
            }
            current_loc = *loc;
            std::cout << current_loc.get_description() << std::endl;
        }
    }
};
 
int main()
{
    NextLocations::locations_t locations;
    locations.insert(std::make_pair(1, NextLocations::location_t(new Location("end of path1", NextLocations::locations_t()))));
    locations.insert(std::make_pair(2, NextLocations::location_t(new Location("end of path2", NextLocations::locations_t()))));
    Location loc("1 for go ahead, 2 for go right", locations);
    ConsoleInterfaceWorld world(loc);
    world.start();
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru