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

SDL Discussion :

Debutant : deplacer une image par un clique


Sujet :

SDL

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut Debutant : deplacer une image par un clique
    bonjour,
    je debute la SDL et j'ai reussi a blitter des image sur la fentere

    je vous demande comment faire pour deplacer une image (.png) de sa position initiale vers la nouvelle position quand je clique sur elle?

    est ce que je dois reserver la nouvelle position avant le clique sur l'image ???

    ps: je travaille sous DevC++ dans sa derniere version et sous vista comme OS

    merci de me repondre

  2. #2
    Expert confirmé
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 527
    Points : 5 195
    Points
    5 195
    Par défaut
    je ne suis pas certain de comprendre ta question
    par déplacer l'image, tu veux dire avec une animation ?

    dans tous les cas :
    - une image tu la blit où tu veux, il suffit de passer le bon rect de destination en paramètre
    - pour faire une animation, il faut effacer l'écran entre 2 images qui la compose et tout redessiner à chaque fois
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    merci de repondre

    j'explique : je blitte une image de position x,y
    je veux cliquer sur cette image pour qu'elle soit deplacée a sa
    nouvelle position newX,newY
    je n'ai pas besoin de voir toute l'animation de deplacemen mais juste voir l'image deplacée position depart ----> position arrivée

    et merci de me repondre

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 328
    Points
    219 328
    Billets dans le blog
    123
    Par défaut
    Si tu n'as pas besoin de toute l'animation entre les deux points voici une méthode :

    Tu repère ton clique grace aux SDL_Event.
    Tu regarde si la position de la souris lors du clique est dans l'image ( un petit calcul pour savoir si le la position x de la souris est plus grande que la position x de l'image mais aussi plus petite que la position x + taille en x de l'image ; faire pareil pour les y )
    Maintenant que l'on sait que l'on a cliquer sur l'image , tu regarde encore dans les SDL_Event pour voir un relachement du clique. Soit lorsqu'il ne clique plus. ( doit avoir un truc qui s'apelle SDL_MOUSEBUTTONUP )
    Et tu place ton image à la position de la souris.
    ( tu peux rajouter un calcul pour placer le centre de l'image à la position de la souris , c'est pas dur )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Si tu n'as pas besoin de toute l'animation entre les deux points voici une méthode :

    Tu repère ton clique grace aux SDL_Event.
    Tu regarde si la position de la souris lors du clique est dans l'image ( un petit calcul pour savoir si le la position x de la souris est plus grande que la position x de l'image mais aussi plus petite que la position x + taille en x de l'image ; faire pareil pour les y )
    Maintenant que l'on sait que l'on a cliquer sur l'image , tu regarde encore dans les SDL_Event pour voir un relachement du clique. Soit lorsqu'il ne clique plus. ( doit avoir un truc qui s'apelle SDL_MOUSEBUTTONUP )
    Et tu place ton image à la position de la souris.
    ( tu peux rajouter un calcul pour placer le centre de l'image à la position de la souris , c'est pas dur )
    merci amigos j'ai compris le principe et je vais l'implementer

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    maintenant j'ai deux autres questions : je veux implementer la SDL dans la POO,

    1) la premiere question :
    j'explique : je veux par exemple creer un objet image que je pourrai par la suite le manipuler (le deplacer,l'animer, le supprimer...)
    et si c'est illustré par un mini bout de code (juste pour comprendre la technique ou le principe) ca sera super meilleur

    2) la deuxieme question :
    j'ai deux images blittés sur une fentere, lors du clique sur l'image, comment SDL_event vas differncier la premiere image de l'autre ?

    et merci finalement

  7. #7
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 328
    Points
    219 328
    Billets dans le blog
    123
    Par défaut
    1)

    Vite fait , sans réflexion , une class Image je mettrer ça :
    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
     
    class Image
    {
    	private:
    		int x;
    		int y;
     
    		SDL_Surface* surface
     
    	public:
    		Image(const std::string& filename);
    		~Image(void);
     
    		void draw(void);
    		void update(void);
     
    		int getPositionX(void);
    		int getPositionY(void);
    }
    Je dis bien c'est vite fait, mais je pense que ça donne une idée.
    Dans le constructeur , il faut charger l'image
    Dans le destructeur , pense bien à liberé la surface.
    Tu peux aussi faire des setPosition pour déplacer l'image
    Pour la position, à long terme je remplacerai par une structure appélée Position , et qui contient x et y

    Pour la deuxième question :

    Si j'ai bien compris , c'est dans le cas ou tu as deux images à la même position et que tu clique dessus.
    Il faudrait utilisé une variable pour savoir qu'elle surface est au dessus de l'autre. ( à mettre dans la classe )
    Un peu comme un z-buffer ou un depth buffer ( qui sont la même chose , sous de nom différent )
    Soit une variable de profondeur z.
    Peut être un peu compliqué à réalisé ... ( mais rien d'extraordinaire )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  8. #8
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 107
    Points : 43
    Points
    43
    Par défaut
    merci pour votre reponse et je m'excuse pour mon retard a cause des exams

    en fait ce que je veux :

    j'ai deux images dans ma fenetre, je clique sur une des deux images je la deplace. c'est comme on fait dans un jeu de solitaire

    et merci encore une fois de me repondre

  9. #9
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 883
    Points : 219 328
    Points
    219 328
    Billets dans le blog
    123
    Par défaut
    Un vrai drag & drop ( glisser déposer , enfin se que tu veux faire ... ) serai :

    Clique sur une image ( avec le système pour savoir si on est sur l'image ou pas comme je l'avais signalé avant )
    On a donc cliquer sur une image, on garde l'identifiant de cette image quelque part,
    Dès que la souris bouge, on déplace l'image que nous indique l'identifiant sauvegarder.
    Dès que le boutton est relaché , on remet l'identifiant à une valeur par defaut
    Si la souris est déplacé au s'en fout car notre identifiant est à sa valeur par défaut.

    Par contre se principe signifie que tu as un identifiant unique par image ( ou objet )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. [MySQL] Comment afficher une image par défaut ?
    Par clicman dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 12/10/2005, 08h46
  2. [css](debutant) mettre une image dans un bandeau
    Par tuxrouge dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 07/09/2005, 14h38
  3. Deplacer une image à l'écran
    Par Rémiz dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/08/2005, 09h06
  4. Modifier une image par pixels
    Par mateo.14 dans le forum MFC
    Réponses: 10
    Dernier message: 21/01/2005, 15h09
  5. [FLASH MX] Envoyer une image par e-mail
    Par skyjoe dans le forum Flash
    Réponses: 2
    Dernier message: 22/10/2004, 18h11

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