这是我正在使用的代码。我试图通过将程序分解为程序和功能来组织程序。代码在未拆分时工作,但是当我以下面的格式使用时,当前数字变为0.我是否需要将UserInput更改为函数而不是过程?我需要更新多个值并返回到主程序,因此我不知道如何将其用作函数。在此先感谢您的帮助,我为我的小说道歉,我仍处于学习编程的早期阶段。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call ExplanationOfGame()
CurrentNumber = RandomNumber()
Label2.Text = CurrentNumber
While CurrentNumber <> 0
Call UserInput(UserNumber, CurrentNumber, Answer)
Call ComputerInput(ComputerNumber, CurrentNumber, Answer)
End While
Call DecideWinner(CurrentNumber, Answer)
End Sub
Sub UserInput(ByVal CurrentNumber As Integer, ByVal UserNumber As Integer, ByVal Answer As Integer)
Answer = 1
Do
UserNumber = InputBox("Enter number to minus from the current number (1, 2 or 3). The current number is: " & CurrentNumber)
Loop Until (CurrentNumber - UserNumber) >= 0
CurrentNumber = CurrentNumber - UserNumber
Label2.Text = CurrentNumber
MsgBox("You took " & UserNumber & " away from the current number. The new current number is " & CurrentNumber)
End Sub
答案 0 :(得分:1)
在UserInput函数中,使用ByRef而不是ByVal作为参数。 ByVal只传入变量的值,因此您实际上并没有修改原始变量。
另一个选项是将其更改为函数并仅返回CurrentValue。您似乎传递了两个参数 - UserNumber和Answer - 不需要传递。
您可以将其更改为:
Function UserInput(CurrentNumber As Integer) As Integer
...
End Function
然后使用:
调用它CurrentNumber = UserInput(CurrentNumber)