Salve a tutti, sto creando con Visual Basic un programma che simula il passaggio di 4 macchine in un incrocio, sincronizzate con i semafori.
Il problema é che non si muovono molto bene, ogni tanto si spostano in modo errato (col rosso vanno avanti o cose del genere).
qui c'é il disegno della form http://sentinella.altervista.org/semaforo.JPG
Qualcuno potrebbe provarlo e dirmi come mai non funziona al meglio ? oppure, se qualcuno ne ha uno fatto da lui che funziona, potrebbe passarmelo? grazie ^__^
Spero di esser stato chiaro, anche se mi sa proprio di no ^^"
codice:Dim stato1 As Integer Dim sec As Integer Dim i As Single Private Sub rosso2() v2.BackColor = &H8000& g2.BackColor = &H4080& r2.BackColor = &HFF& v4.BackColor = &H8000& g4.BackColor = &H4080& r4.BackColor = &HFF& End Sub Private Sub verde2() v2.BackColor = &HFF00& g2.BackColor = &H4080& r2.BackColor = &H80& v4.BackColor = &HFF00& g4.BackColor = &H4080& r4.BackColor = &H80& End Sub Private Sub giallo2() v2.BackColor = &H8000& g2.BackColor = &HFFFF& r2.BackColor = &H80& v4.BackColor = &H8000& g4.BackColor = &HFFFF& r4.BackColor = &H80& End Sub Private Sub rosso() v1.BackColor = &H8000& g1.BackColor = &H4080& r1.BackColor = &HFF& v3.BackColor = &H8000& g3.BackColor = &H4080& r3.BackColor = &HFF& End Sub Private Sub verde() v1.BackColor = &HFF00& g1.BackColor = &H4080& r1.BackColor = &H80& v3.BackColor = &HFF00& g3.BackColor = &H4080& r3.BackColor = &H80& End Sub Private Sub giallo() v1.BackColor = &H8000& g1.BackColor = &HFFFF& r1.BackColor = &H80& v3.BackColor = &H8000& g3.BackColor = &HFFFF& r3.BackColor = &H80& End Sub Private Sub Form_Load() stato1 = 1 Call rosso Call rosso2 End Sub Private Sub Timer1_Timer() Dim i As Single If (stato1 = 1) Then Select Case sec Case 1 Call verde Case 3 Call giallo Case 5 Call rosso End Select Else Select Case sec Case 1 Call verde2 Case 3 Call giallo2 Case 5 Call rosso2 End Select End If sec = sec + 1 If (sec = 6) Then stato1 = stato1 + 1 stato1 = stato1 Mod 2 sec = 0 End If End Sub Private Sub Timer2_Timer() 'Caso 1 If (v1.BackColor = &HFF00&) Then macchina1.Top = macchina1.Top + 200 macchina3.Top = macchina3.Top - 200 End If If (g1.BackColor = &HFFFF&) Then macchina1.Top = macchina1.Top + 200 macchina3.Top = macchina3.Top - 200 End If If (r1.BackColor = &HFF&) Then If ((macchina1.Top < (Line5.Y1 - macchina1.Height - 750)) Or (macchina1.Top > (Line5.Y2 - 750))) Then macchina1.Top = macchina1.Top + 200 End If If ((macchina3.Top > (Line7.Y1 + 950)) Or (macchina3.Top < Line7.Y2)) Then macchina3.Top = macchina3.Top - 200 End If End If If (macchina1.Top > 10200) Then macchina1.Top = -macchina1.Height End If If (macchina3.Top <= 0) Then macchina3.Top = Form1.Height End If 'Caso 2 If (v2.BackColor = &HFF00&) Then macchina2.Left = macchina2.Left - 200 macchina4.Left = macchina4.Left + 200 End If If (g2.BackColor = &HFFFF&) Then macchina2.Left = macchina1.Left - 200 macchina4.Left = macchina4.Left + 200 End If If (r2.BackColor = &HFF&) Then If ((macchina4.Left < Line6.X2 - macchina4.Width - 855) Or (macchina4.Left > Line6.X2 - 855)) Then macchina4.Left = macchina4.Left + 200 End If If ((macchina2.Left > Line8.X2 + 820) Or (macchina2.Left < Line8.X2)) Then macchina2.Left = macchina2.Left - 200 End If End If If (macchina2.Left <= 0) Then macchina2.Left = Form1.Width End If If (macchina4.Left > Form1.Width) Then macchina4.Left = -macchina4.Width End If End Sub