Newsgroup: it.comp.lang.visual-basic
Titolo: imagebox

Ciao a tutti,
sto creando un giochino spastico in vb5 e vorrei sapere se è possibile
controllare se 2 imagebox si toccano.
premetto che ho già provato con le coordinate ma non mi funziona (il motivo
non lo so sinceramente)....
Beh se sapete qualcosa fatemelo sapere. GRAZIE MILLE !
"GicK"

 non lo so sinceramente)....
Imagebox?? O Image o PictureBox!
Comunque se hai a che fare con oggetti quadrati o rettangolari le coordinate
_devono_ funzionare.
Crea un progetto nuovo. Sulla tua form inserisci un timer e 2 picturebox,
tutti  coi nomi di default (Timer1, Picture1 e Picture2). Poi copia e
incolla il seguente codice:
Option Explicit
Dim iDx(1) As Integer
Dim iDy(1) As Integer
Dim PosX(1) As Long
Dim PosY(1) As Long
Private Sub Form_Load()
   iDx(0) = Screen.TwipsPerPixelX
   iDy(0) = Screen.TwipsPerPixelY
   iDx(1) = -iDx(0)
   iDy(1) = -iDy(0)
   PosX(0) = Screen.TwipsPerPixelX * 40
   PosX(1) = Me.ScaleWidth - Screen.TwipsPerPixelX * 50
   PosY(0) = Screen.TwipsPerPixelX * 50
   PosY(1) = Me.ScaleHeight - Screen.TwipsPerPixelY * 50
   Picture1.Width = Screen.TwipsPerPixelX * 50
   Picture1.Height = Screen.TwipsPerPixelY * 50
   Picture2.Width = Picture1.Width
   Picture2.Height = Picture1.Height
   Timer1.Interval = 5
End Sub
Private Sub Timer1_Timer()
   Dim r As Integer
   Dim bRimbalzo As Boolean
   For r = 0 To 1
      PosX(r) = PosX(r) + iDx(r)
      PosY(r) = PosY(r) + iDy(r)
   Next
   Picture1.Move PosX(0), PosY(0)
   Picture2.Move PosX(1), PosY(1)
   If Picture1.Left + Picture1.Width >= Picture2.Left And _
      Picture1.Top + Picture1.Height >= Picture2.Top And _
      Picture1.Left <= Picture2.Left + Picture2.Width And _
      Picture1.Top <= Picture2.Top + Picture2.Height Then
      For r = 0 To 1
         iDx(r) = -iDx(r)
         iDy(r) = -iDy(r)
      Next
   Else
      If Picture1.Left <= 0 Then
         iDx(0) = Abs(iDx(0))
      ElseIf Picture1.Left >= Me.ScaleWidth - Picture1.Width Then
         iDx(0) = -Abs(iDx(0))
      End If
      If Picture1.Top <= 0 Then
         iDy(0) = Abs(iDy(0))
      ElseIf Picture1.Top >= Me.ScaleHeight - Picture1.Height Then
         iDy(0) = -iDy(0)
      End If
      If Picture2.Left <= 0 Then
         iDx(1) = Abs(iDx(1))
      ElseIf Picture2.Left >= Me.ScaleWidth - Picture2.Width Then
         iDx(1) = -Abs(iDx(1))
      End If
      If Picture2.Top <= 0 Then
         iDy(1) = Abs(iDy(1))
      ElseIf Picture2.Top >= Me.ScaleHeight - Picture2.Height Then
         iDy(1) = -Abs(iDy(1))
      End If
   End If
End Sub
Ciao
*Roby*
P.S.
Si poteva fare molto più breve usando un array di PictureBox, ma non ero
sicuro che poi tu sapessi utilizzarli.

Beh devo dire che sono stato molto vago,
Il giochino che sto facendo è molto simi a Space
Impact dei Nokia.
In pratica c'è una navicella che con i tasti A e Z
puo muoversi in su e in giù.
Poi c'è un timer che fa venire verso sinistra delle
navicelle nemiche.
(tutte le navicelle sono disegnate in pain e inserite
in delle imagebox)
Io avevo rpovato questo codice nell'evento di un timer
che ogni 250 millisecondi controllava se si toccavano.
(imgNav è la mia; imgNem è quella nemica)
if imgNem.left < 120 then 'perché la punta della mia
                          'navicella è a 120
 if imgNem.top = imgNav.top then
  msgbox"TI HANNO COLPITO"
 end if
end if
però non mi funzionava!!!
se per caso sai un modo che puo funzionare ti ringrazio.
P.S. il tuo codice ho cercato di capirlo ma non sono tanto
bravo con vb percio ho capito solo la metà cmq ho capito
che non si riferiva al mio bisogno.
Grazie lo stesso per l'interesse
"GicK"

 perň non mi funzionava!!!
Non avendo visto il resto del prog, tiro ad azzeccare.
E' possibile che lo spostamento del "nemico" non vada
mai a coincidere esattamente con quella della navicella.
Prova con:
if imgNem.left =< 120 then
Bye, G.

 mai a coincidere esattamente con quella della navicella.
[sospiro]
[testa contro il muro]
[pausa per raddrizzare la parete attrezzata che si č semismontata]
[ri-sospiro]
...intendevo dire: č possibile che durante lo spostamento
la posizione del "nemico" non vada mai a coincidere
esattamente con quella della navicella, quindi il controllo
che fai non funziona.
Un Paperino in auto-debug.

 che non si riferiva al mio bisogno.
Hai capito male. :-)
Se guardi meglio, il codice si accorge quando le due picturebox si urtano
(indipendentemente dalla posizione in cui l'urto avviene) e le fa rimbalzare
indietro.
Ciao
*Roby*