Vb.net Visual basic-菜单类型语句

Vb.net Visual basic-菜单类型语句,vb.net,Vb.net,我正在用visualbasic以控制台的形式启动一个基于文本的游戏,我想要一些可以在任何时候输入的东西。例如,在程序的任何一点上,如果播放机键入“菜单”,则会打开菜单选项并清除当前控制台。我不知道如何在程序的任何时候设置要询问的内容。我不知道我是否解释得足够清楚,如果我不清楚,请说出来,我非常感谢您的反馈。您应该有一个可以输入的关键字列表。还可以保存一个以空开头的字符串。如果用户按键,则将此字母添加到字符串中。然后检查列表中的所有单词是否与字符串相等。如果单词匹配,则将字符串重置为空,并对键入的

我正在用visualbasic以控制台的形式启动一个基于文本的游戏,我想要一些可以在任何时候输入的东西。例如,在程序的任何一点上,如果播放机键入“菜单”,则会打开菜单选项并清除当前控制台。我不知道如何在程序的任何时候设置要询问的内容。我不知道我是否解释得足够清楚,如果我不清楚,请说出来,我非常感谢您的反馈。

您应该有一个可以输入的关键字列表。还可以保存一个以空开头的字符串。如果用户按键,则将此字母添加到字符串中。然后检查列表中的所有单词是否与字符串相等。如果单词匹配,则将字符串重置为空,并对键入的单词执行任何命令。如果字符串是单词开头的一部分,则不执行任何操作。如果字符串不属于任何单词,则将字符串重置为空

你只需要确保一个长单词永远不会以你列表中的短单词开头。例如,如果你有一个“装备”命令,让你装备一个新物品,还有一个“装备”命令,显示你的库存,这将不起作用

Module Module1
Private Delegate Sub deleDoSomething()
Private Sub HandleMenu()
    Console.WriteLine("MENU")
End Sub
Private Sub HandleWalk()
    Console.WriteLine("WALKING")
End Sub
Private Sub HandleExit()
    End
End Sub

Sub Main()
     Dim words As New Dictionary(Of String, deleDoSomething)
    words.Add("menu", AddressOf HandleMenu)
    words.Add("walk", AddressOf HandleWalk)
    words.Add("exit", AddressOf HandleExit)
    Dim currs As String = ""
    Do
        While Console.KeyAvailable = False
        End While
        Dim bla As ConsoleKeyInfo = Console.ReadKey(True)
        currs &= bla.KeyChar
        Dim found As Boolean = False
        For Each s As String In words.Keys
            If s = currs Then
                words(s)()
                currs = ""
            ElseIf currs.Length < s.Length Then
                If Strings.Left(s, currs.Length) = currs Then found = True
            End If
        Next
        If found = False Then currs = ""
    Loop
End Sub
End Module
模块1
私有委托子委托某物()
专用子处理菜单()
Console.WriteLine(“菜单”)
端接头
私有子HandleWalk()
控制台。WriteLine(“行走”)
端接头
私有子HandleExit()
终点
端接头
副标题()
作为新词典的模糊单词(字符串、deleDoSomething)
words.Add(“菜单”,HandleMenu的地址)
添加(“步行”,HandleWalk的地址)
添加(“退出”,HandleExit的地址)
Dim currs As String=“”
做
而Console.KeyAvailable=False
结束时
将bla调暗为ConsoleKeyInfo=Console.ReadKey(真)
currs&=bla.KeyChar
发现Dim为布尔值=False
对于每个字符,将其作为words.Keys中的字符串
如果s=currs,则
字()
currs=“”
其他当前长度<当前长度
如果Strings.Left(s,currs.Length)=currs-Then-found=True
如果结束
下一个
如果find=False,则currs=“”
环
端接头
端模块
我将单词列表实现为一个字典(字符串、委托),因此我可以通过调用
单词()
来调用相应的Sub。其余部分如我上面所写