Allora fai due cose
1) Prima che la PictureBox cambi colore assicurati che il Form sia attivo.
codice:
If b = a Then
Me.Activate 'attiva il form **********
PictureBox3.BackColor = Color.LawnGreen
v = True
End If
2) Metti una marea di Debug.Print nella Sub Key_Down per vedere se il codice viene letto (ovviamente lanci in modalità Debug)
codice:
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Debug.Print("KeyCode: " & e.KeyCode.ToString)
'payer 1
If e.KeyCode = Keys.Left Then
'se è partito
Debug.Print("v è " & v.ToString)
If v = True Then
'se è attivato l'altro
If p1 = True Then
' se non è attivato l'altro
ElseIf p1 = False Then
p2 = True
PictureBox1.BackColor = Color.LawnGreen
End If
'se non è partito
ElseIf v = False Then
Timer1.Stop()
PictureBox3.BackColor = Color.Silver
Label1.Text = "FALSA PARTENZA"
a = 0
b = 0
End If
'player 2
ElseIf e.KeyCode = Keys.Right Then
Debug.Print("Sono in player 2... v è: " & v.ToString)
'se è partito
If v = True Then
'se l'altro è attivato
If p2 = True Then
'se non è attivato l'altro
ElseIf p2 = False Then
p1 = True
PictureBox2.BackColor = Color.LawnGreen
End If
'se non è partito
ElseIf v = False Then
Timer1.Stop()
PictureBox3.BackColor = Color.Silver
Label1.Text = "FALSA PARTENZA"
a = 0
b = 0
End If
End If
End Sub