IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment insérer des instructions dans LA boucle d'éxécution


Sujet :

C#

  1. #1
    Invité
    Invité(e)
    Par défaut Comment insérer des instructions dans LA boucle d'éxécution
    Salut à toutes et tous, allons.............................droit au but!

    J'utilise visual C# express 2005, et mon projet consiste à créer une animation, faire rebondir une balle. Pour cela j'utilise une image "balle.gif". Ce que j'aimerais, c'est que la balle rebondisse TOUTE SEULE, AUTOMATIQUEMENT, tout le long du programme, sans que j'intervienne, sans que je crée un événement(double clic sur un bouton --> ça génère une methode, par exemple).

    Pour l'instant, ce que j'ai pu faire, c'est créer un bouton et à chaque fois que je clique sur ce bouton la balle avance et rebondit. Et c'est pas terrible.

    Je sais que pour résoudre ce problème, je dois insérer mes instructions dans la boucle principale, en dehors de tout événements, MAIS je ne sais pas comment faire ?

    Est-ce dans "Application.Run(new Form1());" ?

    Je vous remercie d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Pour vous informer voici comment est mon fichier program.cs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
     
    namespace sinus
    {
        static class Program
        {
            /// <summary>
            /// Point d'entrée principal de l'application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
    Comme vous pouvez le voir mon projet je l'ai nommé "sinus" puisque la balle est censée rebondir.

    Sinon à part ça, ne devrais-je pas insérer mes instructions dans la methode "Application.Run()", sachant que mes instructions (qui font bouger la balle) ne dépendent d'auncun événements, donc en dehors des méthodes de la classe Form1 ? Et comment ?

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Sur ton Formuaire, dans Visual Studio, tu doubles-cliques dessus (le formulaire) et là, tu entreras dans la méthode Load de ta form où tu pourras saisir ton code

  4. #4
    Invité
    Invité(e)
    Par défaut
    Elementaire mon chèr Thomas Lebrun !

    Figure toi que j'avais déjà essayé cette solution et ça ne m'a pas donné ce à quoi je m'attendais car mon programme ne d'affichait même pas !

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    namespace sinus
    {
        public partial class Form1 : Form
        {
     
            private double x, y;
     
     
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
     
                x = 0;
                y = 0;
     
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
     
                x += 20;
     
                y = Math.Abs(Math.Sin(x));
                y = y * 10;
                pictureBox1.Location = new System.Drawing.Point((int)(x), (int)(y));
     
     
                txbX.Text = "" + x;
                txbY.Text = "" + y;
     
                if (pictureBox1.Location.X >= 580)
                {
                    x = 0;
                    pictureBox1.Location = new System.Drawing.Point((int)(x), (int)(y));
                }
     
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                x -= 20;
     
                y = Math.Abs(Math.Sin(x));
                y = y * 10;
                pictureBox1.Location = new System.Drawing.Point((int)(x), (int)(y));
     
     
                txbX.Text = "" + x;
                txbY.Text = "" + y;
     
                if (pictureBox1.Location.X <= -40)
                {
                    x = 540;
                    pictureBox1.Location = new System.Drawing.Point((int)(x), (int)(y));
                }
     
            }
     
        }
    }


    J'utilise deux boutons :
    -le premier sert à avancer vers la droite
    -le second sert à avancer vers la gauche

    j'utilise aussi deux TextBox :
    -le premier sert à afficher la valeur de x
    -le second sert à afficher la valeur de y


    Comme vous pouvez le voir ma balle(pictureBox1) avance(ou recule) à chaque fois que je clique sur un bouton (button1 ou button2)(je la redessine à chaque appui avec "new System.Drawing.Point(x, y)".

    En d'autre termes si je n'appuie sur aucun bouton elle n'avancera pas. Et ce n 'est pas ce que je cherche. Donc logiquement les instructions que j'ai insérer dans mes méthodes "button1_Click" et "button2_Click" doivent être insérer en dehors de la classe "form1".


    Dans ce cas là comment faire ?

    Au fait je ne suis pas un débutant, ce programme je l'ai déjà fait en C++ avec la librairie SDL et je sais ce que je dis !

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Le code que tu as mis pour button1 ou button2, tu le met dans le form_load et tu l'entoure d'une boucle "tant que".

    Tu peux éventuellement même penser à passer par un Thread différent, pour ne pas geler l'affichage.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/07/2010, 07h17
  2. comment insérer des images dans un formulaire
    Par Fusain dans le forum IHM
    Réponses: 1
    Dernier message: 08/06/2007, 17h38
  3. Comment insérer des onglets dans les pages ASP.NET ?
    Par insane_80 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/02/2007, 16h32
  4. [VB.Net] Comment insérer des données dans des tables ?
    Par shakoulé dans le forum Accès aux données
    Réponses: 2
    Dernier message: 23/09/2006, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo