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 :

Faire rebondir une image


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Japon

    Informations forums :
    Inscription : Octobre 2010
    Messages : 64
    Par défaut Faire rebondir une image
    Bonjour,

    Je suis grand debutant en C# en ecole de jeux-video et le "game planner" (un eleve) de notre equipe se prend un peu pour un tyran et nous a donne un devoir alors que nous nous abordons tout juste le c# en cours ! Merci copain :\ (meme qu'il hesite pas a gueuler sur les programmeurs).
    Bon bref fini pour la petite histoire, je sais, c'est tres simple normalement mais j'aimerais faire rebondir une image sur les bords de la fenetre. Pour le moment je ne sais que la faire glisser d'un coin a l'autre.

    Je precise que je suis sous XNA 3.1 (projet jeu Windows) avec Visual C# 2008.

    Merci de votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    tu appliques à la position de ton image un vecteur mouvement.

    Ensuite, en fonction d'un test qui te permet de savoir si la prochaine position
    va dépasser les limites supérieures ou inférieures (en hauteur et largeur), tu changes ton vecteur déplacement en inversant X ou Y ou les deux suivant la situation (les deux uniquement quand tu te trouves dans un angle)

    Après, il suffit juste de mettre à jour la position de l'objet à déplacer en y ajoutant les coordonnées du vecteur déplacement.

    Des exemples existent sur XNA qui font cela.. faut juste chercher dans les tutoriaux XNA (désolé, je n'ai plus les liens sur moi)

  3. #3
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Voila un code qui fait un peu près la chose que tu cherches mais c'est pas pour xna (si ça peut t'aiguiller)

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace Papillon
    {
     
        public partial class frmExo3 : Form
        { 
            int hsens;
            int vsens;
            bool Ouvert;
            int Xpos;
            int Ypos;
            int Xmax;
            int Ymax;
            int haut;
            int bas;
            int gauche;
            int droite;
            int LocX;
            int LocY;
            public frmExo3()
            {
                InitializeComponent();
                timPapillon.Start();
                hsens = 1;
                vsens = -1;
     
            }
     
     
     
            private void frmExo3_Load(object sender, EventArgs e)
            {
     
            }
     
     
            private void timPapillon_Tick(object sender, EventArgs e)
            {
                Xpos = pictPapillon.Location.X;
                Ypos = pictPapillon.Location.Y;
                Xmax = quitter.Left-pictPapillon.Width;
                Ymax = ClientSize.Height-pictPapillon.Height;
     
     
                if (Xpos >= Xmax)
                {
                    hsens = -1;
                    System.Threading.Thread.Sleep(100);
     
                }
                else if (Xpos <= 0)
                {
                    hsens = 1;
                    System.Threading.Thread.Sleep(100);
                }
     
                if (Ypos <= 0)
                {
                    vsens = 1;
                    System.Threading.Thread.Sleep(100);
                }
                else if (Ypos >= Ymax)
                {
                    vsens = -1;
                    System.Threading.Thread.Sleep(100);
                }
     
                LocX = Xpos + trackBar1.Value * hsens;
                LocY = Ypos + trackBar1.Value * vsens;
     
                if (LocX < 0)
                {
                    LocX = 0;
                }
                else if (LocX > Xmax)
                {
                     LocX = Xmax;
                }
     
     
                if (LocY < 0)
                {
                    LocY = 0;
                }
                else if (LocY > Ymax)
                {
                    LocY = Ymax;
                }
     
     
                pictPapillon.Location = new Point(LocX, LocY);
     
     
                 if (hsens>0 && vsens<0)
                 {
     
                     if (Ouvert)
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papGDBH.bmp");
                     }
                     else
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papfermeGDBH.bmp");
                     }
     
                 }
                 else if (hsens>0 && vsens>0)
                 {
                     if (Ouvert)
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papGDHB.bmp");
                     }
                     else
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papfermeGDHB.bmp");
                     }
                 }
                 else if (hsens<0 && vsens>0)
                 {
                     if (Ouvert)
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papDGHB.bmp");
                     }
                     else
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papfermeDGHB.bmp");
                     }
                 }
                 else if (hsens<0 && vsens<0)
                 {
     
                     if (Ouvert)
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papDGBH.bmp");
                     }
                     else
                     {
                         this.pictPapillon.Image = Image.FromFile(".../papfermeDGBH.bmp");
                     }
                 }
                 Ouvert = !Ouvert;
     
            }
     
            private void quitter_Click(object sender, EventArgs e)
            {
                Environment.Exit(1);
            }
     
     
        }
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Japon

    Informations forums :
    Inscription : Octobre 2010
    Messages : 64
    Par défaut
    Merci a vous, je vais voir ce que je peux faire en esperant que je ne m'arrache pas les cheveux.

Discussions similaires

  1. Comment faire défiler une image dans un DBImage
    Par kolac dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/04/2006, 13h45
  2. Faire pivoter une image dans TImage
    Par Bourak dans le forum Langage
    Réponses: 4
    Dernier message: 17/03/2006, 08h51
  3. faire defiler une image
    Par ADSL[fx] dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/12/2005, 11h52
  4. faire dérouler une image avec l'api win32
    Par gdkenny dans le forum Windows
    Réponses: 6
    Dernier message: 26/11/2005, 21h46
  5. [css] Faire d'une image un lien
    Par Ace_Denghar dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 10/09/2005, 12h38

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