Collision entre deux turtles python

Résolu
Herostrophe Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour, je suis en 1er et je dois créé un petit jeux que j'appelle "jeu du canon". Ce jeux consiste à tirer un boulet depuis un canon pour toucher une cible.

Mon problème est que je voudrais que dès que le boulet touche la cible cela affiche un message dans l'interface du jeux, mais je bloque complètement, je n'arrive pas à faire réagire mon programme lors d'une collision.Voila mon script, merci d'avance.

import turtle
from math import*
angle = input("Avec quelle angle voulez-vous tirer ? (0-90) ? ")
# je créé mon interface
turtle.title("JEU_DU_CANON")
fond = turtle.Screen()
fond.setup(950,800)
fond.bgcolor("black")

# je colle une image de canon que je place en bat à gauche de l'écran
canon = turtle.Turtle()
canon.fillcolor("yellow")
canon.goto(-480,-400)
canon.begin_fill()
for i in range(4):
    canon.forward(100)
    canon.left(90)
canon.end_fill()

# Je crée une cible
cible = turtle.Turtle()
cible.setx(280)
cible.sety(290)
cible.dot(100, "red")

# Maintenant, je définis un point qui va être la position du boulet de canon
boulet = turtle.Turtle()
boulet.setx(-380)
boulet.sety(-300)
boulet.pencolor("red")

# angle de mon boulet
angle = float(angle)
boulet.setheading(angle)
boulet.forward(900)

if boulet.distance(280,290) == 0:
    turtle.write("vous avez gagné")
turtle.mainloop()







Linux / Firefox 106.0

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

Je n'ai pas testé ton code.  Si je le comprends, tu vérifies, après avoir déplacé le boulet, qu'il ne touche pas la cible.

Tu souhaites peut-être plutôt vérifier que, pendant son déplacement, le boulet ne touche pas la cible.

0
Herostrophe Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 

bonjour,

je pense que tu as raison mais je ne sais pas ce qu'il faut utilisé pour que le boulet "détecte" la cible.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

As-tu écrit ce code?

Tu fais la détection en ligne 37, non?

0
Herostrophe Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Oui, mais quand je run le code, cela n'est pas pris en compte.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Herostrophe Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 

Tu fais la détection une seule fois, quand le boulet est arrivé à destination.  Ne penses-tu pas qu'il serait préférable de faire cela tout au long de la trajectoire?

0
Amiracle > Herostrophe Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 

bonjour, 

je ne suis pas très doué, a vrai dire je débute en python

mais ne serait il pas possible de rajouter une boucle 'while' avec pour condition de répéter un test de collision du boulet contre le point de la cible et a la suite du 'while' mettre le texte :

turtle.write("vous avez gagné")
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Amiracle
 

Utiliser une boucle me semble une bonne idée.

Si tu débutes, tu progresseras peut-être mieux en faisant d'abord des exercices plus simples, que tu peux faire seul.

0