2013-06-13 2 views
0

https://github.com/addrum/TextGameНесколько путей в текстовой игре

У меня есть эта игра. То, что я достиг до сих пор, заключается в том, что если пользователь вводит правильный ответ, он возвращает следующее сообщение для них, чтобы затем выяснить, что делать с массивом. Теперь мне нужно добиться того, что программа возвращает другое сообщение в зависимости от того, что их вход. Идите налево, вы доберетесь до двери, идите направо, вы подберете ключ. Я очень смущен тем, как это сделать. Я думал о том, чтобы группировать сообщения вместе в определенный момент. Таким образом, вы достигаете перекрестка - и выходы для перехода налево, идут вправо и идут вперед, в массив вместе, но потом я не знаю, как получить программу для получения следующей группы сообщений. У меня также возникла идея сделать правильный ввод индексом [0], чтобы затем вернуть индекс текущей группы сообщений [0], чтобы это совпало, но это также смутило меня. Если я смогу сделать это ясно, просто спросите, потому что у меня нет простого способа объяснить это. Любая помощь будет оценена!

+0

Здесь был какой-то смежный вопрос, идея заключалась в том, чтобы использовать дерево с решениями как узлы. Я не могу найти его D: – arynaq

ответ

0

Если вам интересно написать текстовую приключенческую игру («Интерактивная фантастика» или «IF»), вам следует рассмотреть некоторые из многих инструментов, предназначенных для этого.

  • Составители текстовых приключений с традиционными линиями можно найти у IFWiki. Например, здесь используется интерпретатор пергамента Spider and Web (один из моих избранных). В вики также много написано о том, как писать весело.
  • Choice of Games - компания, которая делает межплатформенный IF, в основном ориентируясь на мобильные устройства. У них есть собственный скриптовый язык для написания IF, и если вы хотите продать свою игру, они предлагают управлять этим.
  • Twine - это IDE для создания web-IF. Это выглядит легко, но я сам не пробовал.

Если это просто своего рода проект Самоучитель-Java, то я рекомендую следующий подход:

/** 
    * Represents one location or one state in the game. 
    */ 
public class DecisionTreeNode { 
    /** Text that gets printed when the user lands on this node */ 
    private final String nodeText; 

    /** Maps text that the user can enter to the node that they reach by typing that text */ 
    private final Map<String,DecisionTreeNode> choices; 
} 

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

  • Start
    • nodeText: «Вы находитесь в коридоре, что ветви левой и правой»
    • ВЫБОР :
      1. "влево" ->Door_no_key
      2. "вправо" ->Dead_end_no_key
  • Door_no_key
    • nodeText: "есть дверь, но вы не имеете ключ"
    • выбора:
      1. "вправо" ->Start
  • Dead_end_no_key
    • nodeText: «Это тупик. Существует ключ здесь «
    • выбор:
      1. "получить ключ" ->Dead_end_key
      2. "влево" ->Start
  • Dead_end_key
      !
    • nodeText: «Это тупик. Вы носите ключ «
    • выбор:
      1. " левый" ->Start_key

И так далее Вы можете увидеть, что отслеживание состояния игрока делает. дизайн игры выходит из-под контроля довольно быстро, поэтому я рекомендую использовать IF-инструменты для серьезной игры IF. Но это может быть хорошим способом научить себя указателям на программирование.

Смежные вопросы