制作一款基于文本的游戏。我有一个命令提示符,它由richtextbox作为outputbox和用于输入的文本框文本框。我需要制作一些命令,比如"cls"dir"config"。我的列表中还有很多命令。我只是坚持如何做到这一点以及如何找到解决方案。这是我的代码,我用select case方法移植了一些,但它太原始了。
Private Sub Output(s As String)
If s <> "" Then
nCounter = nCounter + 1
sCounter = Convert.ToString(nCounter)
consoleoutputbox.AppendText(vbCrLf & sCounter & " " & s)
End If
End Sub
Private Sub consoleinputbox_KeyDown(sender As Object, e As KeyEventArgs) Handles consoleinputbox.KeyDown
Dim Command As String = consoleinputbox.Text
If e.KeyCode = Keys.Enter Then
If Command <> "" Then
Select Case Command
Case "cls"
consoleoutputbox.Clear()
consoleinputbox.Clear()
consoleinputbox.Focus()
nCounter = 0
Case "help"
Output("Welcome to help section. Avaliable commands:")
Output("help, cls")
Case Else
Output(Command)
consoleinputbox.Clear()
consoleinputbox.Focus()
End Select
End If
End If
End Sub
也许Dictionary(Of String, Action)
会有所帮助。把你想做的每一件事都放入子程序中,并将它们添加到字典中,命令是关键:
Dim Commands As New Dictionary(Of String, Action)
Commands.Add("test1", New Action(AddressOf test))
然后将字符串作为索引传递给字典,并调用子程序
Commands("test1").Invoke()
一个选项可能是定义一个模块并添加以命令命名的方法。然后,您可以使用Reflection查找并调用用户作为命令输入的名称的方法。