我正在 VB.NET 2010 中设计一个基于选择的冒险游戏,在那里你会看到一个故事标签,你可以在 2 个按钮之间进行选择,你想要做出的选择。
我的目标是将按钮和故事的标签存储在某种形式的数据结构中,现在暂时是一个哈希表,以及某种形式的选择结构。现在我正在使用一个自定义类,它引用接下来的 2 个选择的索引及其各自的标签索引,这些索引将类实例存储在哈希表中。我已经研究了数组,字典,列表和集合,但是我不确定哪个数组最适合我之后的数据结构。
这是我如何定义结构(假设 VB.Net-fu 没有让我失望):
Public Class Decision
Public Property Title As String
Public Property Description As String
Public Property FirstChoice As Decision
Public Property SecondChoice As Decision
End Class
Title
是您在按钮上或上方显示的内容,用于选择该选项。
Description
是您提交该选择后显示的内容,并将做出下一个决定。
如果FirstChoice
或SecondChoice
为 null,则可以选择隐藏按钮。这将使您只能选择一个选项,并将其倾斜到框架的一侧,以获得戏剧性的效果。例如:
You've found yourself in a narrow corridor
[Go Right]
如果你想启用两个以上的选择,或者至少让自己在将来自由地这样做,你可以像这样定义你的数据结构:
Public Class Decision
Public Property Title As String
Public Property Description As String
Public Property Decisions As New List(Of Decision)
End Class
您可以使用ListBox
或GridView
样式控件将其显示给用户,或者根据列表中的项目数量在列表框和按钮之间切换。
顺便说一句,数据结构是有意递归的。这变成了一个树结构,在树的每个节点上,您都有一个决策,并且可能是子决策。
通常情况下,你不会循环这样的结构,但没有理由你不能在这种情况下,如果你打一个“游戏结束”风格的情况,你的选择可以简单地回到开始,这将被链接到根实例(因此是一个“循环图”)。
Edit是一个代码示例,向您展示如何将这些连接在一起:
Dim darkAlley = New Decision With
{
.Title = "Dark Alley",
.Description = "You are in a deep dark alley." _
+ " The night surrounds you and you feel a bit claustrophobic." _
+ " Obvious exits are east and Salisbury street."
}
Dim eastOfDarkAlley = New Decision With
{
.Title = "East of Dark Alley",
.Description = "You are mauled by a bear!" _
+ " He was a dire bear, so he had rabies. Start over?"
}
Dim salisburyStreet = New Decision With
{
.Title = "Salisbury street",
.Description = "Mmm... Ground beef... Blarrghlhlap (*tongue hangs out*)"
}
darkAlley.FirstChoice = eastOfDarkAlley
darkAlley.SecondChoice = salisburyStreet
eastOfDarkAlley.FirstChoice = darkAlley
salisburyStreet.FirstChoice = darkAlley
你的游戏很明显是一个决策树。如果只有两个选择,二叉树的一些修改形式将是完美的。否则,一个更复杂的 n-ary 树会做到这一点。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(57条)