0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 19
|
|||||||||||
1 | |||||||||||
Консольная РПГ. (MUD-подобная).29.04.2012, 23:38. Показов 8683. Ответов 19
Метки нет (Все метки)
Здравствуйте. Недавно я начал изучать C++. И для хорошего усвоения пройденного материала решил написать консольную MUD-подобную РПГ. Кто не знаком с таковыми, и лень читать на wiki, объясню На примере:
Вы очнулись в страшной темной комнате. Что предпринять? 1. Выйти через дверь. 2. Вылезти через окно. Так вот, все это дело что написано курсивом отображается в консоли. Человек вводит цифру выбранного им варианта и переходит в новую "локацию", в которой также несколько вариантов действий. И таким образом мне хотелось бы описать целый мир. Вот код который я написал:
0
|
29.04.2012, 23:38 | |
Ответы с готовыми решениями:
19
Разработка MUD игры Mud: жанр текстовых игр, использующих Telnet MUD Игра на Delphi... Реальность или фантастика? О_о РПГ |
Заблокирован
|
|
30.04.2012, 00:46 | 2 |
Напиши двухмерный массив, который будет твоей картой. Каждая ячейка массива = локация.
Каждая ячейка уже имеет уникальный индекс массива, если надо больше чем индекс - сделай массив на базе структуры, содержащий все необходимые данные при движении на север индекс по вертикали декрементируется на юг инкрементируется при движении на запад индекс по горизонтали декрементируется на восток инкрементируется по аналогии северо-запад и так далее. потом можно все одним switch описать, который будет только определять в каком направлении решил пойти игрок. Попдаешь в локацию - получаешь новые условия для направления Ну это так, в общих чертах. Короче, фантазируй и все получится!!! Добавлено через 6 минут И вообще пользуйся золотым правилом информатики, которое я придумал: Математика пытается сделать сложное простым Инофматика пытается сделать простое элементарным Короче, не усложняй. Делай как можно проще!!!
2
|
Заблокирован
|
|
30.04.2012, 00:47 | 3 |
Что такое "локация" с точки зрения ООП?
Это объект, который имеет свойства: описание локации, список возможных действий внутри локации, и тп. Каждое "действие", которое может выбрать пользователь, находясь внутри локации на самом деле так же является объектом, имеющим свойства: идентификатор локации, которая будет запущена в случае, если пользователь выберет это действие. Локаций может быть множество, но принцип их обработки один и тот же. Что такое мир? Мир, это объект, который по сути является массивом локаций. Где локации имеют текстовые описания, и наборы действий (содержат массивы действий). Активация действия приводит к тому, что персонаж оказывается в другой локации.
0
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
|
30.04.2012, 02:47 | 4 |
Если честно, то я не понял, зачем для одного cout создавать целый метод класса.
0
|
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 19
|
|
30.04.2012, 02:51 [ТС] | 5 |
Как то думал о том что бы локации расписывать в массивах. Спасибо большое за подсказку. Начал реализовывать - и сразу же столкнулся с проблемой. Создал массив map[10][10], в нем элементу map[5][5] пытался присвоить функцию локации. Не получилось, так как тип массива - int, а тип функции void. Как с этим быть? Может быть это глупые вопросы, но я ещё совсем новичек.
0
|
5 / 5 / 0
Регистрация: 04.01.2012
Сообщений: 41
|
|
30.04.2012, 02:57 | 6 |
Сделайте map классом, а не переменной.
0
|
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 19
|
||||||
30.04.2012, 03:07 [ТС] | 7 | |||||
В учебнике по плюсам - был пример того что в методе класса находится cout. Вот я от туда идею и подцепил.
Помогите: Сделал массив не переменной а классом. Теперь компилятор ругается на что то другое. Вот, делал этот пример:
0
|
Заблокирован
|
||||||
30.04.2012, 03:13 | 8 | |||||
Концепт идеи может быть таким:
map[x][y]; //где x и y - координаты локации, тогда значение ячейки массива - это индекс локации в массиве локаций. Итого: location[количество_локаций]; //массив локаций map[x][y]; //карта А работа с этими двумя массивами выполняется следующим образом:
Если вернется -1, значит игрок решил закончить игру. В цикле тупо запускается та, или иная локация, которая тупо возвращает индекс следующей локации, которая будет запущена при очередной итерации цикла. Данный подход прост, но не вполне корректен. При этом подходе, каждая конкретная локация знает индексы соседних локаций. Что не есть хорошо. Но для начального уровня вполне приемлемо. И главное - очень просто реализуется. Добавлено через 4 минуты Что именно ты пытался добиться этой записью?
0
|
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 19
|
|
30.04.2012, 03:24 [ТС] | 9 |
Хах. Пытался присвоить функцию элементу массива.
Буду разбираться с вашими наставлениями. Спасибо.
0
|
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 19
|
|
30.04.2012, 03:57 [ТС] | 11 |
По моей логике это должно было сработать. Увы, не вышло. Видимо у меня не самая лучшая логика.
0
|
Заблокирован
|
|
30.04.2012, 04:06 | 12 |
Есть такая штука, называется "правила языка". Вот в русском языке есть свои правила правописания, и в английском. И у языков программирования так же.
Рекомендую тебе начать писать свою игру с изучения правил правописания языка с++. Особенное внимание удели теме "массивы на языке с++". Потом "структуры на языке с++", затем "классы на языке с++".
0
|
0 / 0 / 0
Регистрация: 29.04.2012
Сообщений: 19
|
|
01.05.2012, 14:06 [ТС] | 13 |
Да, я понимаю что ошибся. Особое внимание уделяю всему что встречается в учебнике. Объясняете как маленькому, зачем так тонко троллить?) И спасибо за помощь. Буду разбираться.
Добавлено через 22 часа 4 минуты Все пытаюсь разобраться в наставлениях. Никак не получается сделать это передвижение по локациям. Не понимаю где хранить все описание локаций. В массиве не получается. Я начинаю все больше путаться. Дайте пример люди добрые.
0
|
Заблокирован
|
||||||
02.05.2012, 00:25 | 14 | |||||
TrueOman, вот, я тебе по быстрому нацарапал простейший рабочий пример на чистом С
Это только костяк, чтобы тебе был понятен принцип. А дальше - просто фантазируй. Как простые функции можно комбинировать для твоих задач.
Когда с С++ разберешься, сделаешь вместо стуктуры класс. Хотя стуктуры экономнее по памяти. И в структуру можешь еще кучу всяких функций напихать и вызывать по мере необходимости как в примере показано. Потом когда перейдешь к перехвату событий будешь тоже самое уже по стрелкам делать. Добавлено через 10 минут Правда забыл добавить, что там в коде нет проверки выхода за пределы массива. Это вообщето обязательная штука. А то будет ошибками тебя валить. Ну это то ты и сам можешь написать. Придумаешь еще к этому какое-нибудь ограничение локаций. Типа: "Ты дошел до дремучего леса, дальше живут только тонкие толли. Они запарят своими занудными высказываниями до смерти" Добавлено через 9 часов 1 минуту Ну дык что? Получается у тебя что-то? Или как?
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
02.05.2012, 16:37 | 15 |
IFree Host,
0
|
Заблокирован
|
|
02.05.2012, 19:09 | 16 |
Давно при давно. И даже не требуется объяснения почему! “Куча”, “сборщик мусора”, “неопределенные временные интервалы прохода”, сложность “ручного” управления кучей и сборщиком мусора. Про такое слышал когда-нибудь?
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
02.05.2012, 20:41 | 17 |
IFree Host,
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
02.05.2012, 22:10 | 18 |
Ну это просто бред. Позволю себе сделать предположение, что Вы, совсем недавно, где то, возможно случайно, прочитали данные термины и решили "блеснуть".
2
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
02.05.2012, 23:33 | 19 | |||||
А вот пример как это вижу я.
0
|
silent_1991
|
||||||
03.05.2012, 06:45
Консольная РПГ. (MUD-подобная).
#20
|
||||||
0
|
03.05.2012, 06:45 | |
текстовая рпг Текстовый рпг-квест Задача на создание игры РПГ Разработка кроссплатформенной простой РПГ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |