Garth J Lancaster
Допустим, узел " 0 "называется корневым узлом на вершине "дерева", "вы находитесь в прихожей".
Если бы у вас была реализация дерева, то вы могли бы пойти
корень.AddChild node1 'иди в салон'
корень.AddChild node2 'Go to the general store'
корень.AddChild node3 'иди в офис шерифа'
Итак, в node0, корневой / начальной точке, вы отображаете все дочерние элементы и получаете эти параметры ... Итак, допустим, игрок выбирает node2/ "универсальный магазин", и у вас есть это :-
Узел2.Метод addChild node20 'перейти на морозильник
node2.AddChild node21 'перейти в раздел мяса'
Узел2.Node22 метод addChild 'пойти в булочную'
затем у вас есть 3 варианта того, что делать в "универсальном магазине", вы показываете дочерние элементы node2, чтобы получить следующие доступные пути
вы также можете иметь только один путь, например,
node3.AddChild node30 'ты в камере'
или тупик, никаких детей/путей, если только не будет выполнено какое - то другое условие-например, для того, чтобы все пути в универсальном магазине появились, вам, возможно, придется забрать наличные деньги по пути
Очевидно, что вам нужно вывести дерево (не помню, есть ли в java древовидная структура данных) и иметь возможность читать дерево из файла, например, чтобы построить "пути"
Что-то вроде этого
public class TreeNode<T> implements Iterable<TreeNode<T>> {
T data;
TreeNode<T> parent;
List<TreeNode<T>> children;
public TreeNode(T data) {
this.data = data;
this.children = new LinkedList<TreeNode<T>>();
}
public TreeNode<T> addChild(T child) {
TreeNode<T> childNode = new TreeNode<T>(child);
childNode.parent = this;
this.children.add(childNode);
return childNode;
}
// other features ...
}
Может быть настроен вручную, например
TreeNode<String> root = new TreeNode<String>("You are in the entrance hall");
{
TreeNode<String> node1 = root.addChild("Go to the saloon");
TreeNode<String> node2 = root.addChild("Go to the general store");
{
TreeNode<String> node20 = node2.addChild("Go to the freezer");
TreeNode<String> node21 = node2.addChild("Go to the Meat section");
TreeNode<String> node22 = node2.addChild("Go to the bakery");
}
TreeNode<String> node3 = root.addChild("Go to the sheriff's office");
{
TreeNode<String> node30 = node3.addChild("You're in the Cell");
}
}
Видеть
GitHub - gt4dev/yet-another-tree-structure: пример древовидной структуры для C# / Java с итератором и поиском[
^] например
Я бы построил "игровое дерево" в отдельной программе и сериализовал его в файл, а затем в вашей реальной игре все, что вам нужно сделать, это прочитать дерево обратно, но сначала получить его с помощью жестко закодированного макета ...
Надеюсь, этого достаточно для начала