Space Invaders, problème de collision
Fermé
AlpacinoNogeek
Messages postés
12
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
2 mars 2020
-
Modifié le 18 avril 2018 à 16:56
AlpacinoNogeek Messages postés 12 Date d'inscription lundi 16 avril 2018 Statut Membre Dernière intervention 2 mars 2020 - 22 avril 2018 à 19:16
AlpacinoNogeek Messages postés 12 Date d'inscription lundi 16 avril 2018 Statut Membre Dernière intervention 2 mars 2020 - 22 avril 2018 à 19:16
A voir également:
- Space Invaders, problème de collision
- Space sniffer - Télécharger - Divers Utilitaires
- Space monger - Télécharger - Optimisation
- Darkino space - Accueil - Services en ligne
- Insecable space - Guide
- Space jam tony parker - Forum Cinéma / Télé
1 réponse
Bonjour.
Bon, je te répond même si j'ai l'impression de parler dans le vide...
Ton code est illisible et incompréhensible, comment veux-tu que l'on devine ce que ton code est censé faire ? On ne peut même pas voir où elle est appelée cette fameuse fonction destruction_abri.
Si tu veux de l'aide, réduis ton code au plus simple, et si tu as toujours un problème poste un code que l'on puisse tester chez nous.
Allez je suis gentil, je vais te montrer comment s'effectue un test de collision entre 2 éléments, c'est quand même pas difficle d'écrire 50 lignes de codes pour tester.
Lance ce test plusieurs fois jusqu'à obtenir des échecs et réussites de collisions, car j'ai volontairement laissé cet état de fait pour faire travailler tes méninges ^^
Essaie donc de comprendre pourquoi ces échecs et réussites, et surtout trouve un moyen de résoudre ce problème (la méthode est très simple).
Et je te le répète une nouvelle fois, il y a une méthode de canvas qui se nomme find_overlapping qui permet de se passer de faire ce genre de choses.
Bon, je te répond même si j'ai l'impression de parler dans le vide...
Ton code est illisible et incompréhensible, comment veux-tu que l'on devine ce que ton code est censé faire ? On ne peut même pas voir où elle est appelée cette fameuse fonction destruction_abri.
Si tu veux de l'aide, réduis ton code au plus simple, et si tu as toujours un problème poste un code que l'on puisse tester chez nous.
Allez je suis gentil, je vais te montrer comment s'effectue un test de collision entre 2 éléments, c'est quand même pas difficle d'écrire 50 lignes de codes pour tester.
import tkinter as tk import random items = [] def creer_items(): can.delete(tk.ALL) items.clear() lg = random.randint(20, 100) ld = random.randint(20, 100) item_gauche = can.create_rectangle( 0, 300 - int(lg/2), 50, 300+lg, fill="red", width=0 ) items.append(item_gauche) item_droit = can.create_rectangle( 550, 300 - int(ld/2), 600, 300+ld, fill="blue", width=0 ) items.append(item_droit) def deplacer_items(): can.move(items[0], 1, 0) can.move(items[1], -1, 0) c = can.coords(items[1]) if c[2] < 300: can.create_text(300, 300, text="échec collision !", fill="orange", font=("", 24)) bout['state'] = tk.NORMAL return if not test_collision(): can.after(10, deplacer_items) else: can.create_text(300, 300, text="réussite collision !", fill="green", font=("", 24)) bout['state'] = tk.NORMAL def test_collision(): gx, gy, gx2, gy2 = can.coords(items[0]) dx, dy, dx2, dy2 = can.coords(items[1]) for x, y in ((dx, dy), (dx, dy2), (dx2, dy), (dx2, dy2)): if gx <= x <= gx2 and gy <= y <= gy2: return True return False def test(): bout['state'] = tk.DISABLED creer_items() deplacer_items() root = tk.Tk() can = tk.Canvas(root, width=600, height=600, bg="white") can.pack() f = tk.Frame(root) f.pack() bout = tk.Button(f, text="test", command=test) bout.pack() root.mainloop()
Lance ce test plusieurs fois jusqu'à obtenir des échecs et réussites de collisions, car j'ai volontairement laissé cet état de fait pour faire travailler tes méninges ^^
Essaie donc de comprendre pourquoi ces échecs et réussites, et surtout trouve un moyen de résoudre ce problème (la méthode est très simple).
Et je te le répète une nouvelle fois, il y a une méthode de canvas qui se nomme find_overlapping qui permet de se passer de faire ce genre de choses.
22 avril 2018 à 19:16
Ensuite mon code possède plusieurs fonction plus ou moins similaire car on peut atteindre des fenêtres de différentes façon, donc les même boutons ne sont pas forcément créés.
Pour ton programme je ne comprend pas vraiment à quoi il sert, Il sert à vérifier un test ? OK, mais dans mon cas je sais pas vraiment comment l'appliquer.
Merci et désolé :)