|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.12.2009, 18:34 | #1 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Движок для текстового квеста
Я самоучка. Вообще-то учусь на факультете лигвистики, ну а С++ - тоже ж ведь язык ))) Вот и интересуюсь.
Горит энтузиазм, изучаются библиотеки Qt и SDL. Но толку-то, если, зная синтаксис, спотыкаешься на простых вещах? Я пытаюсь написать движок для текстового квеста. Мысль пришла на фонетике, мне она показалась довольно здравой. Значит, излагаю. Команда делится на две части - action (действие) и object (предмет, над которым это действие совершается) Есть несколько функций, обозначающих какое-либо действие: void Take(object); //Взять предмет void Look(object); //Посмотреть на предмет Сами части команды представляют собой символьные массивы: char action[]; char object[]; Мы их вводим, и после ввода вызывается функция void Analysis(action), которая анализирует действие с помощью оператора switch и выбирает то, что подходит. switch(action){ case "возьми": {Take(object); break;} case "посмотри": {Look(object);break;} default: {cout << "Неправильная команда"; break;} Затем в соответствие с действием вызывается одна из вышеописанных функций действия, которая совершает надругательство над предметом, тем же образом при помощи switch: void Take(object){ switch(object){ case "гитара": {cout << "Вы взяли гитару."; break;} case "медиатор": {cout << "Вы взяли медиатор."; break;} default: {cout << "Неверная команда.";break;} } Всё это, конечно, схематично, но в любом случае я написал исходник правильно с точки зрения синтаксиса. Но не работает. Ошибки при компиляции. Все перечилсять лень, честное пионерское. Здесь я полагаюсь на ваш здравый смысл. Ошибка в алгоритме, быть может, неправильное использование операторов и т.д. Скажите, в чём я ошибаюсь? |
17.12.2009, 18:56 | #2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Действительно есть ошибки )
Во-первых нельзя объявлять массив без размера Код:
Код:
|
17.12.2009, 19:24 | #3 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
С классами я хотел бы повременить пока. а точнее, реализовать с помощью них инвентарь.
Возвращаясь к switch, выходит, что только один символ может в нём учавствовать? |
17.12.2009, 19:25 | #4 |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
#2 А я думал что, например,
case "гитара": {cout << "Вы взяли гитару."; break;} Это тоже схематика, в смысле именно "Гитара", что в реальном коде это заменит какое - нибудь перечисление, потому что это совсем несерьезно ...
Если я помог вам - порадуйте меня, нажмите на весы слева
|
17.12.2009, 21:56 | #5 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Да, один символ, или ещё какое-нибудь число. По-моему тут нужно классами реализовывать и инвентарь и объект и ГГ(главного героя), у которого будут методы "подобрать", "бросить" и т.д. Хотя играми я не занимался, может кто-то другой посоветует чего лучше, можете обратится в соответствующий раздел этого форума в поисках других идей )
|
18.12.2009, 06:08 | #6 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Хм... Весьма интересно. Оставим пока обсуждение классов, обратимся к их методам.
Возможно ли при помощи enum пронумеровать, преположим, предметы и команды, а потом заставить программу распозновать уже цифры вместо этих команд? Если можно, можете подсказать, как правильно это реализовать? |
18.12.2009, 17:19 | #7 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Безусловно можно
Код:
|
18.12.2009, 18:22 | #8 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Да, я сегодня на экономике учебник листал, сам понял, что можно. Но вот в чём беда. Я хочу реализовать предметы в игре с помощью класса:
class Item{ char* name[]; //Название char* description[]; Описание предмета }; Возможно ли, если объект уже пронумерован в enum, чтобы он обладал ещё какими-то полями? |
18.12.2009, 18:32 | #9 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
То есть? enum, на деле, это лишь численные константы, то есть
Код:
Код:
char* name[] - массив указателей. Пишите просто: Код:
|
18.12.2009, 19:24 | #10 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
Если честно, я подзабыл, что значит "абстрактный". Это класс-прародитель, сам по себе ничего не значащий, но ведущий целую цепочку наследников, имеющих уже определённые свойства?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Движок для игрового портала. | Extreme | WordPress и другие CMS | 5 | 07.01.2011 18:46 |
Движок для сайта. | artem1989 | Помощь студентам | 1 | 05.10.2009 20:25 |
код для текстового редактора | Михаил Юрьевич | Общие вопросы Delphi | 9 | 08.03.2008 20:11 |
Бесплатный движок для САЙТА на Java Script для Бесплатных Хостингов | антигерой | HTML и CSS | 0 | 15.04.2007 21:39 |