我遇到了我的代碼問題。Visual Basic:我如何同時運行2個循環?
我試圖讓菜單屏幕上的選項閃爍圖標兩側,以表示用戶當前所做的選擇。問題是我希望能夠同時閃爍光標並讀取用戶輸入移動光標位置的按鍵。有沒有一種方法可以做到這一點,或者比我目前的設置更簡單。
任何幫助非常感謝,因爲我還在學習,謝謝。
Sub Main()
Dim KeyPressed As String
Dim Pos As Integer
Dim MenuSelection As Integer = 1
PreStuff()
DisplayMenu()
Cursor(MenuSelection, False)
Do
KeyPressed = GetKeyPressed()
If KeyPressed = "ConsoleKey.DownArrow" And Pos = 1 Then
MenuSelection = 2
ElseIf KeyPressed = "ConsoleKey.DownArrow" And Pos = 2 Then
MenuSelection = 1
ElseIf KeyPressed = "ConsoleKey.UpArrow" And Pos = 1 Then
MenuSelection = 2
ElseIf KeyPressed = "ConsoleKey.UpArrow" And Pos = 2 Then
MenuSelection = 1
End If
Loop Until KeyPressed = "ConsoleKey.Enter"
Cursor(0, True)
End Sub
Sub PreStuff()
Console.Title = "Populatio - Pre Alpha"
Console.SetWindowSize(80, 25)
Console.CursorVisible = False
End Sub
Function GetKeyPressed()
Dim KeyChoice As String
KeyChoice = Console.ReadKey().ToString
Return KeyChoice
End Function
Sub Cursor(ByVal Op As Integer, ByVal State As Boolean)
Do
Select Case Op
Case 1 And State = False
Console.SetCursorPosition(32, 5)
Console.Write("►")
Console.SetCursorPosition(43, 5)
Console.Write("◄")
State = True
Case 1 And State = True
Console.SetCursorPosition(32, 5)
Console.Write(" ")
Console.SetCursorPosition(43, 5)
Console.Write(" ")
State = False
Case 2 And State = False
Console.SetCursorPosition(34, 7)
Console.Write("►")
Console.SetCursorPosition(41, 7)
Console.Write("◄")
State = True
Case 2 And State = True
Console.SetCursorPosition(34, 7)
Console.Write(" ")
Console.SetCursorPosition(41, 7)
Console.Write(" ")
State = False
End Select
System.Threading.Thread.Sleep(500)
Loop Until Op = 0
Console.SetCursorPosition(32, 5)
Console.Write(" ")
Console.SetCursorPosition(43, 5)
Console.Write(" ")
Console.SetCursorPosition(34, 7)
Console.Write(" ")
Console.SetCursorPosition(41, 7)
Console.Write(" ")
End Sub
Sub DisplayMenu()
Console.WriteLine("╔═════════════════════════════════════════════════════════════════════════════╗")
Console.WriteLine("║ Populatio! By Alx ║")
Console.WriteLine("╠═════════════════════════════════════════════════════════════════════════════╣")
Console.WriteLine("║ ║")
Console.WriteLine("║ New Game ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ Exit ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.WriteLine("║ ║")
Console.Write("╚═════════════════════════════════════════════════════════════════════════════╝")
End Sub
凡在'待辦事項Loop'呢'Op'爲了在'Op = 0'時終止而改變? – ja72 2013-03-27 17:33:12
我認爲限制是用'Console.ReadKey()'來暫停執行,直到讀取一個鍵。不幸的是,我沒有解決方法。 – ja72 2013-03-27 17:54:08
幫你一個忙,把Option Strict On放在代碼的頂部,或者把它設置在項目屬性中。一些函數定義甚至沒有指定返回類型。 – 2013-03-27 20:03:40