[VB.net] problème défilement d'image
Publié : 23 déc. 2014 20:48
Bonjour à tous !
J'ai un petit problème concernant un jeu que j'essaye de créer sur VB.net
Voilà le principe: un "train" constitué de plusieurs billes de différentes couleurs défile et le but est d'éliminer toutes les billes grâce à un canon qui tire des billes, de couleur aléatoire, sur le train. Si le joueur place 3 billes de même couleur, elles s'éliminent. Pour simplifier, le circuit que suivent les billes est un circuit rectangulaire qui "s'enroule" petit à petit vers le centre de mon écran.
Mon problème est le suivant: j'arrive à créer mon "train" de billes, avec des couleurs choisies aléatoirement, avec des Picturebox mais dès que je veux le mettre en mouvement, je n'ai plus qu'une seule bille qui défile, les autres ne sont pas là.
De plus, j'arrive à faire parcourir ma Picturebox sur la largeur de l'écran, puis de la faire descendre (donc j'arrive à gérer le 1er virage) mais ensuite quand j'essaye de faire revenir ma bille sur la largeur inférieur de mon écran, la Picturebox bugg et ne répond pas.
Voilà mon bout de code, je suis un débutant en VB.net :/
Merci beaucoup !
J'ai un petit problème concernant un jeu que j'essaye de créer sur VB.net
Voilà le principe: un "train" constitué de plusieurs billes de différentes couleurs défile et le but est d'éliminer toutes les billes grâce à un canon qui tire des billes, de couleur aléatoire, sur le train. Si le joueur place 3 billes de même couleur, elles s'éliminent. Pour simplifier, le circuit que suivent les billes est un circuit rectangulaire qui "s'enroule" petit à petit vers le centre de mon écran.
Mon problème est le suivant: j'arrive à créer mon "train" de billes, avec des couleurs choisies aléatoirement, avec des Picturebox mais dès que je veux le mettre en mouvement, je n'ai plus qu'une seule bille qui défile, les autres ne sont pas là.
De plus, j'arrive à faire parcourir ma Picturebox sur la largeur de l'écran, puis de la faire descendre (donc j'arrive à gérer le 1er virage) mais ensuite quand j'essaye de faire revenir ma bille sur la largeur inférieur de mon écran, la Picturebox bugg et ne répond pas.
Voilà mon bout de code, je suis un débutant en VB.net :/
Merci beaucoup !
Code : Tout sélectionner
Public Class Form1
Public Pos_Bille, Alt_Bille As Integer
Public BillePicture As PictureBox = New PictureBox()
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'dimensionnement de l'écran
Me.Size = New System.Drawing.Size(1366, 650)
Dim hasard As New Random()
Dim T() As String
'Arret du timer avant le début
Timer1.Stop()
' Nombre de billes sur le plateau
For i As Integer = 0 To 10
'Déclaration de la variable gérant le hasard des couleurs
Dim j As Integer
j = hasard.Next(1, 5)
'redimensionnement du tableau contenant le choix de billes
ReDim T(4)
' Correspondance tableau-> billes
T(1) = "Bleu"
T(2) = "Rouge"
T(3) = "Verte"
T(4) = "Orange"
' Dimensionnement des pictures box = billes
'Dim BillePicture As PictureBox = New PictureBox()
' Création des images
BillePicture.Image = New Bitmap(T(j) & ".bmp")
' Positionnement
BillePicture.Height = 80
BillePicture.Width = 80
' Reproduction de la 1ere bille 10 fois
BillePicture.Left = i * BillePicture.Width
Me.Controls.Add(BillePicture)
Next i
'déplacement de la bille hors du cadre
BillePicture.Location = New Point(-1 * BillePicture.Size.Width, BillePicture.Location.Y)
'nouvelle position de la bille
Pos_Bille = BillePicture.Location.X
End Sub
Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
' Incrément des positions horizontales ou verticales
Dim Inc As Integer = 2
'Condition d'avancement avant le virage
If Pos_Bille < 1266 Then
' Incrémentation de la position de la bille
Pos_Bille = Pos_Bille + Inc
' Déplacement de l'image
BillePicture.Location = New Point(Pos_Bille, Alt_Bille)
'Virage de la bille
Else
Alt_Bille = Alt_Bille + Inc
'Déplacement de l'image
BillePicture.Location = New Point(Pos_Bille, Alt_Bille)
'condition sur le virage en bas a gauche
If Alt_Bille < 500 Then
'incrémentation descente
Alt_Bille = Alt_Bille + Inc
'déplacement de la bille
BillePicture.Location = New Point(Pos_Bille, Alt_Bille)
'virage de la bille
Else
Pos_Bille = Pos_Bille - Inc
'déplacement de la bille
BillePicture.Location = New Point(Pos_Bille, Alt_Bille)
End If
End If
End Sub
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonjouer.Click
' Lancement du Timer1 provoquant le démarrage de l'animation
Timer1.Start()
' Masquage du bouttonjouer évitant un possible relancement de l'animation
Buttonjouer.Visible = False
End Sub
End Class