title: 'Rock, Paper, scissor' logic to get result 'Win, Lose, Draw' in vb.net using loop or If Statements
body: <p>Im head is spinning right now, and its probably because I've missed out some basic logic.</p>
  
  <p>I have a 'Rock, Paper, scissor' program in VB.NET which gives the correct results for each individual game/round. The problem that I have is when trying to determine the result for a MATCH which can also be a 'Win, Loose, Draw'. Matches are Best-of-3 (first to 2) and Best-of-5 (first to 3). As the outcome of the match can be a draw, this has various combinations/permutations such as:</p>
  
  <ol>
  <li>W, L, D</li>
  <li>L, W, D</li>
  <li>L, D, W</li>
  <li>D, L, W</li>
  <li>W, D, L, .... etc...</li>
  </ol>
  
  <p>I have the following code so far:</p>
  
  <pre><code>    Public Class GameForm
      Private humanScore As Integer = 0
      Private compScore As Integer = 0
      Private drawScore As Integer = 0
      Private totalGames As Integer = 0
      Private totalGamesForWin As Integer = 0
      Private totalGamesPlayed As Integer = 0
      Private player1 = New PlayerHumanPlayer()
      Private player2 = New PlayerComputerRandom()
  
  
      Private Sub GameForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
          If GameTypeForm.cmboMatchDuration.SelectedItem = 0 Then
              totalGames = 3
              totalGamesForWin = 2
              lblMatchInfor.Text = GlobalVariables.MatchTypeBestOf3Message
          ElseIf (GameTypeForm.cmboMatchDuration.SelectedItem = 1) Then
              totalGames = 5
              totalGamesForWin = 3
              lblMatchInfor.Text = GlobalVariables.MatchTypeBestOf5Message
          End If
  
      End Sub
  
      Private Sub btnRock_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRock.Click
          findGameWinner("HumanPlayer", "Rock", "RandomComputer")
      End Sub
  
      Private Sub btnPaper_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPaper.Click
          findGameWinner("HumanPlayer", "Paper", "RandomComputer")
      End Sub
  
  
      Private Sub btnScissors_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnScissors.Click
          findGameWinner("HumanPlayer", "Scissors", "RandomComputer")
      End Sub
  
      Public Sub findGameWinner(ByVal p1name As String, ByVal p1WeaponSelected As String, ByVal p2Name As String)
  
          player1.Name = p1name
          player1.pickWeapon(p1WeaponSelected)  ' Should I be using the Rock Class???
  
          player2.Name = p2Name
          player2.pickWeapon()
  
          Dim winner As Integer = player1.getWeapon().compareTo(player2.getWeapon())
  
          Select Case winner
              Case 1
                  updateScores(True, False)
                  findMatchWinner()
              Case -1
                  updateScores(False, True)
                  findMatchWinner()
              Case 0
                  updateScores(False, False)
                  findMatchWinner()
          End Select
      End Sub
  
      Public Function updateScores(ByVal humanWon As Boolean, ByVal compWon As Boolean) As Integer
  
          If humanWon = True Then
              humanScore = humanScore + 1
  
              'Update Human labels
              lblPlayerScore.Text = humanScore.ToString()
              'txtCompChoice.Text = txtCompChoice.Text + Environment.NewLine + Type.GetType(player2.pWeapon.ToString()).ToString()
              txtCompChoice.Text = txtCompChoice.Text + Environment.NewLine + player2.pWeapon.ToString()
              txtGameStatus.Text = txtGameStatus.Text + Environment.NewLine + player1.Name() + " wins!"
  
          ElseIf compWon = True Then
              compScore = compScore + 1
  
              'Update Computer labels
              lblCompScore.Text = compScore.ToString()
              'txtCompChoice.Text = txtCompChoice.Text + Environment.NewLine + Type.GetType(player2.pWeapon.ToString()).ToString() 
              txtCompChoice.Text = txtCompChoice.Text + Environment.NewLine + player2.pWeapon.ToString()
              txtGameStatus.Text = txtGameStatus.Text + Environment.NewLine + player2.Name() + " wins!"
  
          Else
              drawScore = drawScore + 1
  
              'Update Draw labels
              lblDrawGame.Text = drawScore.ToString()
              'txtCompChoice.Text = txtCompChoice.Text + Environment.NewLine + Type.GetType(player2.pWeapon.ToString()).ToString()
              txtCompChoice.Text = txtCompChoice.Text + Environment.NewLine + player2.pWeapon.ToString()
              txtGameStatus.Text = txtGameStatus.Text + Environment.NewLine + "Draw!"
  
          End If
  
          totalGamesPlayed = totalGamesPlayed + 1
  
          Return totalGamesPlayed
      End Function
  
  
      Public Function findMatchWinner() As String
  
          If totalGamesPlayed &lt;&gt; totalGames Then
              If humanScore = totalGamesForWin Then
                  lblMatchInfor.Text = GlobalVariables.HumanMacthWinMessage
                  clearForm()
              ElseIf compScore = totalGamesForWin Then
                  lblMatchInfor.Text = GlobalVariables.CompMacthWinMessage
                  clearForm()
              ElseIf totalGamesPlayed = totalGames - 1 Then
                  lblMatchInfor.Text = GlobalVariables.DeciderGameMessage
              End If
          ElseIf humanScore = totalGamesForWin Then
              lblMatchInfor.Text = GlobalVariables.HumanMacthWinMessage
              clearForm()
          ElseIf compScore = totalGamesForWin Then
              lblMatchInfor.Text = GlobalVariables.CompMacthWinMessage
              clearForm()
          ElseIf (drawScore = totalGamesPlayed) Then
              lblMatchInfor.Text = GlobalVariables.DrawMacthWinMessage
              clearForm()
          End If
  
          Return "Human OR Computer"
      End Function
  
      Public Sub clearForm()
  
      End Sub
  
  End Class
  </code></pre>
  
  <p>I thought I was doing good until I remembered that I completely forgot about the Draw/Tie. Since then my head has been looping so could someone kindly shed some light on how to get findMatchWinner() function working properly?</p>
  
  <p>Any help would be greatly appreciated.</p>
  
  <p>Manys thanks in advance</p>