Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2014-12-06 18:13:48 Condition à un emplacement précis

RoKN
membre
Date d'inscription: 2013-02-21
Messages: 209

Condition à un emplacement précis



Salut !

Bon, voilà environ 1 heure que je suis sur le problème et je n'arrive pas à trouver une solution, j'ai donc besoin d'aide (ça m'énerve, je m'étais promis de ne pas demander d'aide cette fois-ci... loupé sad ).

J'ai créé une ellipse en mouvement en m'inspirant de l'exemple de chez Flossmanuals :
http://fr.flossmanuals.net/processing/l … dun-objet/

Ce que je souhaiterais faire, c'est une action qui ne s'active que lorsque je clique sur la souris et que le pointeur de la souris se trouve sur la balle.

La condition que je cherche donc c'est donc une "simple" :

SI clic de souris DANS l'objet en mouvement, FAIRE ceci.

Sachant que je récupère la position X et Y de l'objet dans 2 variables, que le projet fait 500 x 300 et que la balle fait 10 x 10 je pensais arriver à mes fins de cette façon :

int ciblePosX, ciblePosY;

void mouseClicked() {
  if (mouseX >= ciblePosX + 10 && mouseX <= ciblePosX - 10 && mouseY >= ciblePosY + 10 && mouseY <= ciblePosY - 10 ) {
      println("OK !");
    }
  }
}

Mais il semblerait que ce n'est pas tout à fait ça...

Quelqu'un a t-il une idée plus simple s'il vous plait ?

Merci beaucoup ! big_smile

Hors ligne

 

#2 2014-12-06 18:44:53 Re : Condition à un emplacement précis

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Condition à un emplacement précis



Bonjour,

Comme tu travailles avec un disque, il suffit de comparer la distance entre le centre de la balle et la position de la souris et le rayon de ta balle. Un outil très pratique dans ce type de programme est le PVector à la fois pour noter la position et la vitesse de la balle. Il y a aussi la méthode dist() qui te permet de calculer la distance. Donc voici le résultat :

Hors ligne

 

#3 2014-12-06 18:49:32 Re : Condition à un emplacement précis

Olivier
N°4
Lieu: Chalon sur la Saône
Date d'inscription: 2009-04-07
Messages: 1471
Site web

Re: Condition à un emplacement précis



Sinon... tu peux remplacer les > par des < et les > par des <... tongue
Ça marchera très bien... big_smile

Code (P5) :

int ciblePosX, ciblePosY;

void mouseClicked() {
  if (mouseX <= ciblePosX + 10 && mouseX >= ciblePosX - 10 && mouseY <= ciblePosY + 10 && mouseY >= ciblePosY - 10 ) {
      println("OK !");
    }
  }
}

L'Amour au Peuple !

Hors ligne

 

#4 2014-12-06 19:29:36 Re : Condition à un emplacement précis

RoKN
membre
Date d'inscription: 2013-02-21
Messages: 209

Re: Condition à un emplacement précis



Olivier... je... je n'ai aucun mots suffisamment fort pour exprimer à quel point je me sens bête.
Bon ben du coup Mushussu je vais me contenter de simplement inverser mes conneries, mais merci beaucoup :-)

Hors ligne

 

#5 2014-12-06 20:30:17 Re : Condition à un emplacement précis

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Condition à un emplacement précis



Je m'inscris en faux, car avec ce qu'Olivier propose, tu testes le carré cirsconcrit au disque. Si tu veux le disque :

int ciblePosX, ciblePosY;  

void mouseClicked() {  
  if (sqrt((mouseX - ciblePosX) * (mouseX - ciblePosX) + (mouseY - ciblePosY) * (mouseY - ciblePosY)) < 20) {  
    println("OK !");
  }
}

Hors ligne

 

#6 2014-12-06 21:20:56 Re : Condition à un emplacement précis

RoKN
membre
Date d'inscription: 2013-02-21
Messages: 209

Re: Condition à un emplacement précis



Ah voilà !
Merci beaucoup à vous deux, ça fonctionne nickel !

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024