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

Développement 2D, 3D et Jeux Discussion :

Associer un point à un objet


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut Associer un point à un objet
    Salut à tous

    Nouveau dans le monde de la programmation de jeux, je me heurte à une difficulté.

    J'ai besoin d'associer un point de l'écran (par exemple, x = 36 et y = 57) à un objet. En d'autres termes, je dois savoir sur quel objet l'utilisateur a cliqué.

    Je développe dans un environnement un peu spécial, puisqu'il s'agit de la nintendo DS. Ca signifie que j'ai à la fois des plus petits écrans (256 * 192), mais aussi seulement 4Mo de RAM exploitable pour la logique. Il me faut donc quelque chose d'économe en mémoire.

    La solution la plus immédiate, mais inefficace, a été de créer un tableau de 256 * 192 entrée, chacune contenant soit un pointeur, soit NULL. Evidemment, efficacité zero niveau processeur et mémoire... Le calcul est vite fait: 256 * 192 * 4 = 192Ko. Tout cela pour un seul écran bien sur

    Je cherche donc un algorithme efficace pour retrouver un objet selon des coordonnées. Quelqu'un peut-il m'aider ?

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 393
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 393
    Points : 20 496
    Points
    20 496
    Par défaut
    Salut Antoine c'est assez basique ce que tu veux faire : est-ce qu'on peut déclarer des structures dans le système Nintendo Ds ?
    Sinon il faut faire une structure qui associe X et Y à chaque objet puis quand l'utilisateur clique sur l'écran il parcourt la liste et regarde si les coordonnées de la souris sont proches des X et Y de chaque objet

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Salut, peux tu nous en dire un peu plus ? Que veux tu faire exactement ? detecter le clic sur un sprite ?

    Dans ce cas le plus simple est de tester si la position du stylet est dans le sprite (un rectangle).

    Une fois cette phase passée tu peux faire de la collision pixel perfect. C est a dire regarder si le pixel de l image cliqué est transparent ou non. Si oui, le sprite n est pas touché, sinon oui.

  4. #4
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    C'est affolant que je n'y aie même pas pensé Merci pour cette réponse rapide.

    Pour réponse à ta question, Mat, oui, on peut. Elle se programme en C/C++, donc compilée avec gcc et l'aide d'autres librairies (DevKitARM et libnds, pour les curieux qui n'ont pas accès à la sdk officielle nintendo).

    Friffon: c'est pour détecter un click sur une sprite tout comme un bouton ou autre (bouton qui ne sera peut-être pas une sprite donc)

    Edit: mais... n'y aurait-il pas un moyen qui m'évite de parcourir tous les objets existants ? Une sorte de tri amélioré, un arbre peut-être ?

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 249
    Points : 349
    Points
    349
    Par défaut
    Si tu peux partitionner les objets à l'écran dans un arbre, oui en effet tu peux optimiser la recherche du bouton cliqué, mais d'un autre côté, est-ce vraiment utile? Je suppose que tu n'as pas 200 boutons affichés à la fois, le coût d'une recherche linéaire me parait négligeable.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    399
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 399
    Points : 413
    Points
    413
    Par défaut
    Le partionnement peut eventuellement etre utile pour culler ton univers non visible a l ecran.

    Mais un partitionnement pour la recherche de la zone cliquée risque de faire plus de mal que de bien. Surtout pour un evenement ponctuel comme le check d un clic, ce n est sans doute pas necessaire. Teste deja sans et s il y a un probleme de performance, tu regardera ce qu il faut optimiser.

  7. #7
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Pas besoin de tout tester ; la majorité des objets ne sont probablement pas cliquables, si ? Auquel ca, il te faut juste garder un tableau d'entités cliquables de côté (que tu initialises au chargement) ; ne te reste plus qu'à tester contre les BB de ces objets.

    Edit: pense aussi à ne pas tester les invisibles

  8. #8
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 280
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 280
    Points : 10 728
    Points
    10 728
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Frifron Voir le message
    Le partionnement peut eventuellement etre utile pour culler ton univers non visible a l ecran.

    Mais un partitionnement pour la recherche de la zone cliquée risque de faire plus de mal que de bien. Surtout pour un evenement ponctuel comme le check d un clic, ce n est sans doute pas necessaire. Teste deja sans et s il y a un probleme de performance, tu regardera ce qu il faut optimiser.
    Entièrement d'accord avec ça.

    Maintenant si tu tiens absolument à partitionner tes données , regarde peut-être le quadtree ?

    ou ce tutoriel, je ne l'ai pas encore lu, mais j'y vais de ce pas.

  9. #9
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Merci à tous pour ces réponses.

    Je vais faire comme vous dites, un simple tableau contenant les coordonnées. Après tout, c'est vrai que ça ne demande pas énormément de travail vu le peu de zones cliquables...

    Je regarderai ce quadtree plus en détail demain, il a l'air intéressant tout de même

Discussions similaires

  1. associer un graphique à un objet
    Par gentelmand dans le forum Windows Forms
    Réponses: 0
    Dernier message: 29/03/2009, 11h31
  2. [Débutant] Association de points à un id
    Par dwight dans le forum MATLAB
    Réponses: 15
    Dernier message: 26/03/2009, 23h24
  3. Réponses: 3
    Dernier message: 16/09/2008, 15h28
  4. Algortihme d'association de points 2D
    Par G3G3 dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/05/2008, 21h55
  5. Associer une liste d'objet à une clé
    Par fedfil dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 07/06/2007, 10h45

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