Oppure

Loading
17/11/08 15:17
dany92
Ciao a tutti ragazzi. Devo fare un programmino che mi permetta di muovere una shape (cerchio) tramite 4 pulsanti nelle 4 direzioni e cambiarne la dimensione tramite una scrollbar all'interno di un form. A fare questo ho già provveduto ma ora mi è sorto un bel dubbio. Devo fare in modo che quando la shape arrivi ad un estremo del form ricominci il suo cammino dall'estremo opposto del form...non so se mi sono spiegato bene... ecco comunque il codice del programmino:

Private Sub cmdDx_Click()
shpPallina.Left = shpPallina.Left + 100
End Sub

Private Sub cmdGiu_Click()
shpPallina.Top = shpPallina.Top + 100
End Sub

Private Sub cmdSu_Click()
shpPallina.Top = shpPallina.Top - 100
End Sub

Private Sub cmdSx_Click()
shpPallina.Left = shpPallina.Left - 100
End Sub

Private Sub hsbDimensione_Change()
shpPallina.Width = hsbDimensione.Value * 10
shpPallina.Height = hsbDimensione.Value * 10
End Sub


Grazie anticipatamente a tutti coloro che mi aiuteranno:k:
Ultima modifica effettuata da dany92 17/11/08 15:18
aaa
17/11/08 20:10
GrG
Bè dovresti utilizzare degli if e controllare che i tuoi valori non superino il width e l'heigth del form...
aaa
17/11/08 21:25
antometal
ho avuto lo stesso problema per un mio programma
2 shape dovevano rimbalzare sullo schermo
il prog è qui
pierotofy.it/pages/…
aaa
18/11/08 15:08
dany92
Grazie prenderò qualche spunto :k::k:
aaa
18/11/08 15:10
P4p3r0g4
beh se il movimento e` un avanzamento lineare in x,y
x = x + k
y = y + w
basterebbe invertire il segno di k quando si supera il limite destro o sinstro
mentre invertire il segno di w quando si supera il limite superiore o inferiore.
aaa
19/11/08 17:13
dany92
Grazie a tutti ragazzi è riuscito tutto bene grazie a voi...evito di aprire un altro topic e quindi vi faccio un'altra domanda sempre qui che riguarda lo stesso argomento.: devo fare un programmino nel quale sia presente una shape (shpCircle) che in pratica deve muoversi linearmente (da sinistra a destra) nel form e quando tocca uno dei bordi deve "rimbalzare". La velocità di movimento della shape la definisco io per mezzo di una scrollbar. Ho dichiarato una variabile booleana (avanti) che dovrebbe essere vera all'avvio del form e appena tocca il bordo destro del form stesso deve diventare falsa e far variare quindi il movimento della pallina nel verso opposto e così via...ora ho fatto il programma ma il problema è che quando tocca il bordo destro del form fa un passetto indietro e poi ritorna ad andare avanti facendo questo movimento all'infinito....come potrei risolvere??

ecco il codice intanto:


Option Explicit
Dim Avanti As Boolean

Private Sub cmdStart_Click()
tmrTempo.Enabled = True
End Sub

Private Sub cmdStop_Click()
tmrTempo.Enabled = False
End Sub

Private Sub Form_Load()
tmrTempo.Interval = hsbTempo.Value
Avanti = True
End Sub

Private Sub hsbTempo_Change()
tmrTempo.Interval = hsbTempo.Value
End Sub

Private Sub tmrTempo_Timer()
If (shpCircle.Left + shpCircle.Width) = (Form1.ScaleLeft + Form1.ScaleWidth) Then
Avanti = True
Else
Avanti = False
End If

If Avanti = True Then
shpCircle.Left = shpCircle.Left + 100
Else
shpCircle.Left = shpCircle.Left - 100
End If
End Sub

Ultima modifica effettuata da dany92 19/11/08 17:14
aaa
19/11/08 17:33
GrG
Per capire gli errori devi "leggere" il codice...nelle ultime righe tu dici:

se la pallina supera i bordi:
avanti = true
altrimenti
avanti = false

poi dici...

se avanti = true allora
muovi + 100 (avanti)
altrimenti
muovi - 100 (indietro)

allora la pallina tocca il bordo e avanti diventa falso, poi tornando indietro però non tocca più il bordo e quindi avanti ridiventa true allora avanza ma c'è di nuovo il bordo e quindi va indietro ma andando indietro non c'è più il bordo così va avanti...e così via, ora capisci il perchè?
Riesci a cavartela da solo o hai bisogno di aiuto?
aaa
20/11/08 15:43
dany92
sisi l'errore lo capisco ma il fatto è che non so come continuare in modo da far restare avanti = falso...se potessi aiutarmi mi faresti un grosso favore...grazie:k:
aaa