This is driving my absolutely crazy:

VB Code:
  1. Private cardPlayed(4) As Card
  2.  
  3.     ...
  4.  
  5.     Private Function getHighestCardOnTable() As String
  6.         Dim backupCards(4) As Card
  7.  
  8.         For i As Int16 = 1 To 4
  9.             If cardPlayed(i) Is Nothing Then
  10.                 backupCards(i) = New Card(0)
  11.             Else
  12.                 backupCards(i) = cardPlayed(i)
  13.  
  14.                 Dim sumToAdd As Int32 = 0
  15.                 If backupCards(i).SuitCard = troef.SuitCard Then sumToAdd += 5000
  16.                 If backupCards(i).SuitCard = suit Then sumToAdd += 1000
  17.  
  18.                 backupCards(i).ValueCard += sumToAdd
  19.             End If
  20.         Next
  21.  
  22.         ...
  23.  
  24.         return ...
  25.     End Function

The function uses an array of 4 cards to calculate which one is the highest.
If a card belongs to trumps, its value is raised by 5000.
If a card belongs to the suit that came out first, its value is raised by 1000.

I'm using backupCards(4) so I still retain the old value (without the raises).
Or at least that's what I hoped...

On this line:

VB Code:
  1. backupCards(i).ValueCard += sumToAdd

.. where I want the value of backupCards() to raise... it raises both the values of backupCards and cardPlayed()