2015-10-09 3 views
-1

Как вызвать функцию public из другой функции? Это синтаксическая ошибка в моем проекте VB rock paper scissors. (Я назвал государственные функции из других государственных функций в VBA, но это, по-видимому, отличается в VB.)VB вызов публичной функции от другой функции

Public Class Form1 
Public playerchoice, strexplanation, strwinner, computerchoice 

Public Sub computerchoice() 
    Dim randomgenerator As New Random 
    Dim intcomputerchoice As Integer = randomgenerator.Next(1, 4) ' number from 1-3 
    If intcomputerchoice = 1 Then intcomputerchoice = "rock" 
     Else if intcomputerchoice = 2 Then intcomputerchoice = "paper" 
     ElseIf intcomputerchoice=3 Then intcomputerchoice="scissors" 
    End If 
End Sub 
Public Sub winner() 
    If playerchoice = rock Then 
     If computerchoice = rock Then 
      strexplanation = "Tie" 
     ElseIf computerchoice = paper Then 
      strexplanation = "Computer wins. Paper covers rock." 
     ElseIf computerchoice = scissors Then 
      strexplanation = "Player wins. Rock crushes scissors." 
     End If 
    End If 
    If playerchoice = paper Then 
     If computerchoice = paper Then 
      strexplanation = "Tie" 
     ElseIf computerchoice = scissors Then 
      strexplanation = "Computer wins. Paper cuts scissors." 
     ElseIf computerchoice = rock Then 
      strexplanation = "Player wins. Paper covers rock." 
     End If 
    End If 
    If playerchoice = scissors Then 
     If computerchoice = scissors Then 
      strexplanation = "Tie" 
     ElseIf computerchoice = rock Then 
      strexplanation = "Computer wins. Rock crushes paper." 
     ElseIf computerchoice = paper Then 
      strexplanation="Player wins. Scissors cut paper."S 
     End If 
    End If 
End Sub 

Private Sub exitButton_Click(sender As Object, e As EventArgs) Handles exitButton.Click 
    Me.Close() 
End Sub 

Public Sub rock_Click(sender As Object, e As EventArgs) Handles rock.Click 
    Call Function computerchoice 
    playerChoice = rock 
    Call Function winner 
End Sub 

Public Sub paper_Click(sender As Object, e As EventArgs) Handles paper.Click 
    Call function computerchoice() 
    playerChoice = paper 
    Call Function winner 
End Sub 

Public Sub scissors_Click(sender As Object, e As EventArgs) Handles scissors.Click 
    Call Function computerchoice 
    playerChoice = scissors 
    Call Function winner 
End Sub 

End Class 

Troublesome часть кода:

Public Sub rock_Click(sender As Object, e As EventArgs) Handles rock.Click 
    Call Function computerchoice 
    playerChoice = rock 
    Call Function winner 
End Sub 

я получаю синие линии вокруг «Вызов функции «строки в VS Express 2012, указывающие на ошибку.

+2

удалить слова «вызова функции» , просто используйте computerchoice() или winner() – Jeremy

+1

Я также использовал gogled термин «функция вызова vb», и эта удобная статья появляется. https://msdn.microsoft.com/en-us/library/sxz296wz.aspx – Jeremy

+0

Кстати, технически «Sub» - это метод, а не функция. Вы вызываете методы из других методов. – Alexander

ответ

0

Для вашего конкретного сценария вы можете изменить сигнатуру метода, как, как следующее:

Public Sub computerchoice() 
    Dim randomgenerator As New Random 
    Dim intcomputerchoice As Integer = randomgenerator.Next(1, 4) ' number from 1-3 
    If intcomputerchoice = 1 Then intcomputerchoice = "rock" 
     Else if intcomputerchoice = 2 Then intcomputerchoice = "paper" 
     ElseIf intcomputerchoice=3 Then intcomputerchoice="scissors" 
    End If 
    winner() 'Calling winner function inside computerchoice 
End Sub 

Следовательно, нажатие кнопки будет иметь следующий вид:

Public Sub rock_Click(sender As Object, e As EventArgs) Handles rock.Click 
    computerchoice() 
End Sub 
Смежные вопросы