![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#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;} } Всё это, конечно, схематично, но в любом случае я написал исходник правильно с точки зрения синтаксиса. Но не работает. Ошибки при компиляции. Все перечилсять лень, честное пионерское. Здесь я полагаюсь на ваш здравый смысл. Ошибка в алгоритме, быть может, неправильное использование операторов и т.д. Скажите, в чём я ошибаюсь? |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Действительно есть ошибки )
Во-первых нельзя объявлять массив без размера Код:
Код:
![]() |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
С классами я хотел бы повременить пока. а точнее, реализовать с помощью них инвентарь.
Возвращаясь к switch, выходит, что только один символ может в нём учавствовать? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 13.12.2009
Сообщений: 272
|
![]()
#2 А я думал что, например,
case "гитара": {cout << "Вы взяли гитару."; break;} Это тоже схематика, в смысле именно "Гитара", что в реальном коде это заменит какое - нибудь перечисление, потому что это совсем несерьезно ...
Если я помог вам - порадуйте меня, нажмите на весы слева
![]() |
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Да, один символ, или ещё какое-нибудь число. По-моему тут нужно классами реализовывать и инвентарь и объект и ГГ(главного героя), у которого будут методы "подобрать", "бросить" и т.д. Хотя играми я не занимался, может кто-то другой посоветует чего лучше, можете обратится в соответствующий раздел этого форума в поисках других идей )
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Хм... Весьма интересно. Оставим пока обсуждение классов, обратимся к их методам.
Возможно ли при помощи enum пронумеровать, преположим, предметы и команды, а потом заставить программу распозновать уже цифры вместо этих команд? Если можно, можете подсказать, как правильно это реализовать? |
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Безусловно можно
Код:
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 17.12.2009
Сообщений: 101
|
![]()
Да, я сегодня на экономике учебник листал, сам понял, что можно. Но вот в чём беда. Я хочу реализовать предметы в игре с помощью класса:
class Item{ char* name[]; //Название char* description[]; Описание предмета }; Возможно ли, если объект уже пронумерован в enum, чтобы он обладал ещё какими-то полями? |
![]() |
![]() |
![]() |
#9 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
То есть? enum, на деле, это лишь численные константы, то есть
Код:
Код:
char* name[] - массив указателей. Пишите просто: Код:
|
![]() |
![]() |
![]() |
#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 |