Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
10.06.2002 18:16

sereg@
Участник
Зарегистрирован: 10.06.2002
Сообщений: 6

Посморишь на него - человек, как человек, а внутри - город, дымящийся в руинах

Люди-люди, человеки!!!!!!

Всем привет! Поиграл тут недавно в игру Вася-2. И захотел сделать нечто подобное, но не знаю с чего начать. Кто нибудь, подскажите плиз, где взять информацию о том как пишутся игрушки, или совет дайте, ведь есть же здесь люди, которые сами до всего додумались, помогите други пожааааааааалуйста!!!! %))))))))

Неактивен

0    0    #2
14.06.2002 21:04

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

Что тебе конкретно не понятно?

Обычно в программе организуется псевдо-бесконечный цикл. В котором:
1) проверяются флаги,
2) отрабатывают демоны (отложенные события)
3) увеличиваются счетчики
4) анализируется команда игрока и реакция на нее
5) ожидается ввод очередной команды после идем на пункт 1).

Тебе не понятно как на С++ это писать?

Неактивен

0    0    #3
16.06.2002 10:22

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

serega написал:

В том то все и дело не понимаю как это реализовать в программе

начнем с самого начала:

псевдо бесконечный цикл

Код:

void main()
{
  boolean flag_of_exit = TRUE;
  while (flag_of_exit)
  {
     // получаем команду из устройства ввода
     // обрабатываем ее
     if (you_are_deadman) { flag_of_exit = FALSE }
  }
  printf("%s","Хо-хо-хо! Вот ты и помер, дружище!");
}

smile smile smile

Неактивен

0    0    #4
16.06.2002 22:02

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

Я думаю, что можно сделать например так:

заводишь массив или список структур для комнат, предметов.

Например:
struct room{
room* if_go_north,if_go_south,...;
char* short_desc;
char* long_desc;
}

аналогично создаешь свойства предметов и их структуры, можешь выделить разные структуры (или объекты) для разнотипных предметов и т.п.

А дальше в игре просто оперируешь нужными тебе структурами или объектами.

Неактивен

0    0    #5
17.06.2002 11:09

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

Согласен ООП (Объектно Ориентированный Подход smile ) в данном случае оптимален. А по поводу текстового ввода тут задачу нужно разбить на несколько частей:

1. получение команды от пользователя (собственно работа с устройством ввода)
2. разбиени команды на части с предварительным анализом введенной информации (парсинг)
3. реакция игры на команду

Вот и решать нужно эти задачи отдельно и обстоятельно.

Неактивен

0    0    #6
17.06.2002 11:54

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

Согласен. Ты на чем пишешь ? Я вот хочу на object pascal - оно же Delphi, накатать библиотеку классов облегчающую создение своей игрушки.

Неактивен

0    0    #7
17.06.2002 12:18

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

А я вот подумал, что писать все одному будет стремно, скорее всего брошу из-за природной лени, я вот с переводом TADS уже больше года сижу и не очень далеко сдвинулся. smile На ++ писать тоже можно, только мне трудновато будет, не писал на нем серьезных проектов.

Неактивен

0    0    #8
17.06.2002 14:50

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

Не согласен. Нельзя объединять и так довольно общие пункты, нужно дробить-дробить и еще раз дробить.  8)

Например:

1. Интерфейс
1.1. Получение информации с устройства ввода
1.2. Разбить команду на составляющие
1.3. Составить шаблон для дальнейшей обработки
....

и т.д.

Подсказки по словарю не делают из соображений "секретности"  wink Т.е. да бы исключить прямой перебор. Хотя, в принципе, я считаю, что при достаточно большом словаре в этом нет необходимости. Некоторы, возможно, таким образом скрывают бедность словаря.

Моделирование состояний различных объектов - это сама жизнь. smile Любую систему можно представить совокупностью объектов и взаимосвязей между ними (практически одно из определений системы в системном анализе).

Создать среду для работы с такими объектами и их связями и есть задача "движка".

Собственно можно начать с продумывания интерфейса, парсера, объектного пространства, объектов (комнат, предметов, персонажей и т.п.).

Неактивен

0    0    #9
18.06.2002 21:31

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

Что хочется иметь на выходе подпрограммы анализа (того, что я называю интерфейсом в целом?)

На мой взгляд на выходе мы в идеале должны получить ссылки на объекты. Глагол  и предметы упомянутые в команде. Т.е.  я ввожу "укусить змею с помощью вставной челюсти моей пра бабушки" - на выходе получаем:

объект - глагол - укусить, кусать, ...
объект - предмет - змея, аспид, гад ползучий, ...
объект - предмет - челюсть, вставная челюсть, ...

и еще нужно как-то связать объекты между собой. Т.е. выдать на выходе, что глагол применяется на объект1, а объект2 - это параметр.

Какую часть работы по взаимодействию с пользователем следует возложить на анализатор, а какую - моделингу?

ИМХО, они должны быть переплетены и взаимосвязаны, идея самодостаточного парсера, на мой взгляд ошибочна.

Наверно, возможно написать парсер, достаточно интеллектуально объясняющий игроку почему нельзя "открыть свечу" или "зажечь дверь" wink
Но, если уж приспичит big_smile вдруг сделать именно это - все прийдется переписывать.
Вообще, не стоит забывать про маштабируемость (и непредсказуемость творчества) big_smile.

Поэтому, нужно что бы парсер - парсил, а обработкой занимался автор, но нужно оставить и "стандартные" обработки для типовых действий и объектов, да бы исключить рутину.

Анализатор - занятная задачка.
Нужно ли учитывать порядок слов в обрабатываемой фразе?

учитывать порядок слов можно, это облегчит парсинг-анализ, но закрепостит игрока. Я бы пока остановился на ограниченном варианте ввода, т.е. с оговоренным порядком слов. Так проще.

А как на счет предлогов?

Нужны. Так же как и местоимения. Должны учитываться в действиях игрока.

"положить иголку на шкаф" и "положить иголку в шкаф"

Это разные вещи.

Можно ли допустить присутствие неопознанных слов?

На мой взгляд, нельзя.

Стоит ли замахиваться на сложные предложения или ограничиться короткими?

Для начала, думаю, что не обязательно.

Неактивен

0    0    #10
18.06.2002 21:39

stalker
Участник
Откуда: Сургут
Зарегистрирован: 09.05.2002
Сообщений: 41
Вебсайт

wbr.

Re: Люди-люди, человеки!!!!!!

Нужны ли на самом деле развесистые словестные конструкции ? (и какой минимальный набор необходим)?
Насколько целесообразно заставлять пользователя применять жесткие (like English) правила грамматики и следования слов?
Настолько ли действительно необходим этот идеальный парсер? Недоумеваю! :-/

На мой непосвященный взгляд, идеальный парсер приятен, но далеко не необходим. Вспомним времена Z80 - Spectrum, Commodore, Amga... Парсер никакущий, словарь маленький, НО какие игры!!!!  roll

Неактивен

Powered by PunBB
© copyright 2001–2026 iFiction.Ru