Déplacement balle pong

Résolu
christophesu Messages postés 2 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 5 juin 2007 - 5 juin 2007 à 09:08
christophesu Messages postés 2 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 5 juin 2007 - 5 juin 2007 à 21:32
Hello,
J'ai commencé a faire un Pong en VB 6.0 et la où je n'arrive plus c'est au moment de
faire le déplacement de la balle. Si une bonne ame serait assez patient pour m'aider sa serait super!

Merci d'avance

3 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 juin 2007 à 09:34
ce n'est jamais que l'utilisation toute bête de la fonction move !

(syntaxe object.Move left, top, width, height)

voiur dans ton aide en ligne ou utiliser F1 !

Tu auras, bien évidemment, à calculer des déplacements et tes rebonds (collisions) pour définir les valeurs left et top, mais cet aspect là est purement arithmétique (et n'a plus rien à voir avec la connaissance d'une syntaxe VP particulière)
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 juin 2007 à 09:48
Tiens, si la chose t'amuse...
Voilà un exemple plus complexe

sur ta form :
- 1 timer Timer1
- 1 picturebox Picture1 avec, en son intérieur : une shape circulaire nommée boule

Private versgauche As Integer, versdroite As Integer, sensx As Single, sensy As Single, kx As Single, ky As Single
Private Sub Form_Activate()
  Randomize
  Me.Move Screen.Width / 3, Screen.Height / 3, Screen.Width / 3, Screen.Height / 3
  With Picture1
     .Move 0, 0, 5000, 5000
     .BackColor = RGB(255, 255, 254)
     .AutoRedraw = True
     .FillColor = RGB(255, 255, 255)
     .FillStyle = 0
   End With
   Timer1.Enabled = True
   Picture1.Circle (2000, 2000), 1500, RGB(255, 0, 0), , , 1.5
   boule.Shape = 3
   boule.Move 2100, 2500, 300, 300
   Timer1.Interval = 20
   versgauche = 100
   vershaut = 120
   sensx = -1
   sensy = 1
   kx = 1
   ky = 1
End Sub


Private Sub Timer1_Timer()
 
  boule.Move boule.Left + (versgauche + kx) * sensx, boule.Top + (vershaut + ky) * sensy
  DoEvents
  If boum(Picture1, boule, vbWhite) Then
     'Timer1.Enabled = False
     While boum(Picture1, boule, vbWhite)
       boule.Move boule.Left - Int((versgauche + kx) * sensx / 10), boule.Top - Int((vershaut + ky) * sensy / 10)
       DoEvents
     Wend
     'MsgBox "boum"
     sensx = -sensx
     sensy = -sensy
     kx = Int((100 * Rnd) + 1) / 10
     ky = Int((100 * Rnd) + 1) / 5
  End If
End Sub


Private Function boum(controle As PictureBox, maboule As Shape, couleur As Long) As Boolean
   X1 = maboule.Left + (maboule.Width / 2)
   Y1 = maboule.Top
   X2 = maboule.Left + maboule.Width
   Y2 = maboule.Top + (maboule.Height / 2)
   X3 = X1
   Y3 = Y1 + maboule.Height
   X4 = maboule.Left
   Y4 = Y2
  If controle.Point(X1, Y1) <> couleur Then boum = True: Exit Function
  If controle.Point(X2, Y2) <> couleur Then boum = True: Exit Function
  If controle.Point(X3, Y3) <> couleur Then boum = True: Exit Function
  If controle.Point(X4, Y4) <> couleur Then boum = True
End Function


voilà donc le principe (et tu vois bien qu'à part la connaissance de Move, tout n'est que calcul)...
Fais les tiens ...


 
3
christophesu Messages postés 2 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 5 juin 2007
5 juin 2007 à 21:32
Merci!!!
Je vais m'y mettre dès demain!
A bientot
3
Rejoignez-nous