Je viens de coder un petit programme tout bete : je déplace un point au centre de la fenêtre avec mon joystick.
J'ai dessiné un grand cercle, et je souhaite que mon point reste dans ce cercle, c'est à dire qu'une fois qu'il croise le cercle il s'arrette.
Auriez vous une idée sur la façon de s'y prendre pour faire cela?
ifladistanceentrelepointetlecentreducercle==aurayonducercle:onstoppe
bon, ça c'est pour un déplacement pixel/pixel.
si le point se déplace de plusieurs pixels à la fois alors: ifladistanceentrelepointetlecentreducercle>aurayonducercle:onfaitdelatrigopourcalculerlapositionadéquate.
J'essaye mais je n'arrive pas a le placer correctement.
J'arrive a faire
if la distance entre le point et le centre du cercle == au rayon du cercle : on stoppe
Mais une fois aue c'est stoppe je ne peux plus bouger le point, meme si je souhaite le deplacer vers le centre, ce qui aurait pour effet de le re rendre mobile puisque'il reste dans le cercle..
Désolé, je n'y arrive pas...
Je calcule la nouvelle position px si le point est dans le cercle. Sauf qu'il y a un problème puisque je le calcule aussi en dehors du if...
# px est la nouvelle position du joystick
px = px + tj[0] * move_speed
py = py + tj[1] * move_speed
#Distance au centre du cercle
longueur = math.sqrt(((px-320)*(px-320)) + ((py-240)*(py-240)))
if longueur >= 200:
??????
elif longueur <= 200:
px = px + tj[0] * move_speed
py = py + tj[1] * move_speed
pygame.draw.circle(screen, (0, 255, 0), (int(px), int(py)), 5)
Ca marche, sauf que quand j'approche la bordure du cercle, la position px et py se figent à -120 et -160 (ce qui correspond a la moitié de la position du centre, avec un signe moins..)
Juste une petite question supplémentaire.
Avec pygame j'utilise joystick.get_button(0) qui me retourne true si je presse le bouton, false si je ne le presse pas.
Quand je clique j'incrémente une variable.
Le problème c'est que le clic est continu, si j'appuie pendant 5 secondes ma variable va s'incrémenter de 50 au lieu de 1 fois. Comment remédier à ca?
Merci
d'accord avec realmagma sur le principe, mais son code est imcomplet...
joybuttonflip = True # on commence avec un boutton relache
if *appuieSurUnBouton* and joybuttonflip:
compteur += 1
joybuttonflip = False
if *relacheBouton*:
joybuttonflip = True
perso j'utiliserai plutôt l'événement JOYBUTTONDOWN, à la place de joystick.get_button(0)...
ev = *event_intercepté*
if ev.type == JOYBUTTONDOWN and ev.button == numéro_du_bouton:
compteur += 1
Ca doit marcher, sauf que quand je déclare ma variable compteur en haut du code elle est relue à chaque fois. Pourtant je l'ai déclarée en dehors de ma boucle while principale..
Edit:
Ca marche (je ne sais pas comment mais ca marche!)
Merci
Collision en python
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.
Python c'est bon, mangez-en.