Page 1 sur 1

[VB.net] problème défilement d'image

Publié : 23 déc. 2014 20:48
par Benj95
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 !

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

Re: [VB.net] problème défilement d'image

Publié : 24 déc. 2014 13:10
par Benj95
Z'mers SanctoLudovicien ! ;)

Du coup du fais tes 10 images une à une ?
Je vais essayer comme ça, comme je devais avoir un train de billes avec des couleurs aléatoires ça va être chaud mais je vais essayer ça !

Quel centre des Arts ? ;)

Re: [VB.net] problème défilement d'image

Publié : 24 déc. 2014 13:31
par Benj95
Ouais et puis c'est bien plus simple de le faire comme ça que une par une, ça laisse un coté aléatoire au choix des billes. Enfin c'est pas grave je vais figer ça ;)
Du coup après tu reprends la même syntaxe ?
Parce que moi j'ai défini mes billes comme des Picturebox, du coup pour les contrôler c'est différent du contrôle en tant qu'image nan?

Ah ce Tabagnon de Chalons sur Marne Marne !
Euh peut-être oui, ça me ferait vraiment plaisir ! On m'a dit que la fam's 32-68 était la plus krapinée du Tabagnon ! :)
Ce serait cool d'en faire partie !