Problème de jeux
Fermé
AlpacinoNogeek
Messages postés
12
Date d'inscription
lundi 16 avril 2018
Statut
Membre
Dernière intervention
2 mars 2020
-
Modifié le 16 avril 2018 à 16:54
critou - 17 avril 2018 à 19:42
critou - 17 avril 2018 à 19:42
A voir également:
- Problème de jeux
- Jeux java itel football - Télécharger - Jeux vidéo
- Zuma jeux - Télécharger - Jeux vidéo
- Télécharger jeux ps3 gratuit usb ✓ - Forum PS3
- Jeux java itel 5360 ✓ - Forum Jeux vidéo
- Télécharger jeux java gameloft gratuit - Forum Mobile
1 réponse
Bonsoir.
Pour déplacer un item sur un canvas tkinter, tu as besoin d'utiliser la méthode move de canvas ainsi que de la méthode after de tkinter, il ne faut jamais utiliser de time.sleep dans les interfaces graphiques.
Un rapide exemple.
Il te faudra sans doute ajouter une temporisation, car si on reste appuyé sur la touche espace, l'écran sera rempli de tir.
Il faudrait aussi revoir ton code, éviter les import *, mais laisser les modules importés dans leurs espaces de noms, revoir ta compréhension du global, car tu l'utilises dans tes fonctions, alors que ce n'est pas nécessaire.
Pour déplacer un item sur un canvas tkinter, tu as besoin d'utiliser la méthode move de canvas ainsi que de la méthode after de tkinter, il ne faut jamais utiliser de time.sleep dans les interfaces graphiques.
Un rapide exemple.
import tkinter as tk import random fenetre = tk.Tk() fenetre.title('Licorne Invaders') space = tk.Canvas(fenetre, width=800, height=600, bg='black') space.pack() tirs = [] def creer_tir(event): x = random.randint(10, 790) tir = space.create_oval(x-5, 590, x+5, 600, fill='yellow', outline ='yellow') tirs.append(tir) def deplacer_tirs(): for tir in tirs: x, y, x2, y2 = space.coords(tir) if y2 > 0: space.move(tir, 0, -1) else: space.delete(tir) tirs.remove(tir) space.after(3, deplacer_tirs) space.after(3, deplacer_tirs) fenetre.bind('<Key-space>', creer_tir) fenetre.mainloop()
Il te faudra sans doute ajouter une temporisation, car si on reste appuyé sur la touche espace, l'écran sera rempli de tir.
Il faudrait aussi revoir ton code, éviter les import *, mais laisser les modules importés dans leurs espaces de noms, revoir ta compréhension du global, car tu l'utilises dans tes fonctions, alors que ce n'est pas nécessaire.
17 avril 2018 à 14:40
Ensuite j'ai essayé de le faire apparaître sur le x (en coordonné du joueur) mais il ne comprend pas
Merci encore
17 avril 2018 à 19:42
Lorsque je t'ai indiqué d'éviter d'utiliser les import * sur les modules importés, les raisons sont multiples, les principales étant qu'en faisant des import * :
- Tu pollues l'espace global de ton script.
- Si plusieurs modules ont une fonction, classe ou variable portant un même nom ou que tu déclares ta propre fonction avec un nom d'une fonction de modules importés, il y aura écrasement et forcément les problèmes qui en découleront.
- Garder les modules dans leurs propres espaces permet d'améliorer la lisibilité, cela est plus lisible et compréhensible d'écrire moduleTruc.fonctionTartuffe() que d'écrire fonctionTartuffe(), dans le 1er cas, on sait directement d'où vient cette fonction, alors que dans le 2nd cas, on ne sait pas d'où elle provient, fonction d'un module ? Lequel ? fonction personnelle ?
Mais tout ça, beaucoup de sites et didacticiels concernant python le relate bien mieux que moi.
En ce qui concerne ton utilisation de "global" dans tes fonctions, ce que je voulais dire c'est que la nécessité de mettre global sur toutes les variables externes à ta fonction n'est pas nécessaire et rend également difficilement lisible ton code.
Tu devrais relire un tutoriel sur la portée des variables en python, et en programmation.