Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeux de cible avec Tkinter()

1 août 2014 à 9:32:09

Bonjour a tous , a partir des explications trouver sur internet , j'ai pu realiser le jeu suivant dont le code est le suivant :

# script cible.py
from tkinter import *
import random

def Cercle():
    """ Dessine un cercle de centre (x,y) et de rayon r """
    x = random.randint(0,Largeur)
    y = random.randint(0,Hauteur)
    r = 10
    # on dessine un cercle dans la zone graphique
    item = Canevas.create_oval(x-r, y-r, x+r, y+r, outline='black', fill='black')
    # on ajoute l'item dans la liste
    ListeItemCercles.append(item)
    print("Création du cercle (item" , item ,")")
    # affichage de tous les items de Canevas
    print(Canevas.find_all())

def Undo():
    """ Efface le dernier cercle"""
    if ListeItemCercles != []:
        item = ListeItemCercles[-1]
        # on efface le cercle
        Canevas.delete(item)
        # on supprime l'item de la liste
        del ListeItemCercles[-1]
        print("Suppression du cercle (item" , item ,")")
        # affichage de tous les items de Canevas
        print(Canevas.find_all())

def EffacerTout():
    """ Efface tous les cercles"""
    while ListeItemCercles != []:
        item = ListeItemCercles[-1]
        # on efface le cercle
        Canevas.delete(item)
        # on supprime l'item de la liste
        del ListeItemCercles[-1]
        print("Suppression du cercle (item" , item ,")")
        # affichage de tous les items de Canevas
        print(Canevas.find_all())


# Initialisation de la liste des items des cercles
ListeItemCercles = []

# Création de la fenêtre principale (main window)
Mafenetre = Tk()
Mafenetre.title('Cible')

# Image de fond
photo = PhotoImage(file="tk_cible.gif")

# Création d'un widget Canvas (zone graphique)
Largeur = 400
Hauteur = 400
Canevas = Canvas(Mafenetre,width = Largeur, height =Hauteur)
item = Canevas.create_image(0,0,anchor=NW, image=photo)
print("Image de fond (item",item,")")
Canevas.pack()

# Création d'un widget Button
BoutonGo = Button(Mafenetre, text ='Tirer', command = Cercle)
BoutonGo.pack(side = LEFT, padx = 10, pady = 10)

# Création d'un widget Button
BoutonEffacer = Button(Mafenetre, text ='Effacer le dernier tir', command = Undo)
BoutonEffacer.pack(side = LEFT, padx = 10, pady = 10)

# Création d'un widget Button
BoutonEffacerTout = Button(Mafenetre, text ='Effacer tout', command = EffacerTout)
BoutonEffacerTout.pack(side = LEFT, padx = 10, pady = 10)

# Création d'un widget Button (bouton Quitter)
BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
BoutonQuitter.pack(side = LEFT, padx = 10, pady = 10)

Mafenetre.mainloop()

je n'ai pas de liens pour les images utilisee desolee , quand je fais le 1er tir une erreur est soulevée et tout le reste du script ne s'execute plus , que faire ?

cordialement !

  • Partager sur Facebook
  • Partager sur Twitter
By Man Of Hacking
1 août 2014 à 9:55:41

Bonjour à toi,

Si tu veux que l'on t'aide correctement, il faudrait nous donner l'erreur renvoyé par le programme. Ensuite, ce serait bien que tu nous donnes un lien de ton image afin que l'on puisse tester.

  • Partager sur Facebook
  • Partager sur Twitter
1 août 2014 à 10:44:28

Salut,

Pourrai-tu donner l'erreur complète (avec les numéro de lignes) que tu obtient stp. Sinon ton code est plutôt bien fait. Une petite chose: tu pourrai remplacer ceci:

if ListeItemCercles != []:
while ListeItemCercles != []:


#Par cela (plus pythonnesque)
if ListeItemCercles:  #Si la liste n'est pa vide
while ListeItemCercles:  #Tant que la liste n'est pas vide



  • Partager sur Facebook
  • Partager sur Twitter
Précepte: Le mieux est l'ennemi du bien
1 août 2014 à 12:25:28

jai cette erreur :

Image de fond (item 1 )
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
    return self.func(*args)
  File "C:\Users\Hacker\Desktop\TestPythonV2\jeuxdarc", line 13, in Cercle
    item = Canevas.create_image()
  File "C:\Python32\lib\tkinter\__init__.py", line 2182, in create_image
    return self._create('image', args, kw)
  File "C:\Python32\lib\tkinter\__init__.py", line 2166, in _create
    cnf = args[-1]
IndexError: tuple index out of range
>>> 



  • Partager sur Facebook
  • Partager sur Twitter
By Man Of Hacking
1 août 2014 à 12:29:21

Salut Man_Of_Hacking

J'ai testé ton fichier et chez moi le shell IDLE python ne m'indique aucune erreur !?

  • Partager sur Facebook
  • Partager sur Twitter
1 août 2014 à 12:31:45

tu a essayer de tirer combien de fois ?

  • Partager sur Facebook
  • Partager sur Twitter
By Man Of Hacking
1 août 2014 à 13:12:55

Pareil pour moi, ça marche bien. Mais je teste sous Linux, toi visiblement tu es sous Windows il y a peut être une différence dans l'installation de python sous Windows.

-
Edité par Corebreaker 1 août 2014 à 13:15:33

  • Partager sur Facebook
  • Partager sur Twitter
1 août 2014 à 13:39:52

vraiment ? vous avez essayez avec des images ?

  • Partager sur Facebook
  • Partager sur Twitter
By Man Of Hacking
1 août 2014 à 14:29:44

Chez moi ça donne toujours l'erreur , vous pouvez pas m'aider alors ?

  • Partager sur Facebook
  • Partager sur Twitter
By Man Of Hacking
1 août 2014 à 17:23:50

Chez moi aussi ça marche très bien ! (windows7 avec Python 3.4)

Remarque : il me semble qu'on pourrait simplifier EffacerTout en itérant dans un for :

def EffacerTout():
    """ Efface tous les cercles"""
    global ListeItemCercles
    for item in ListeItemCercles :
        # on efface le cercle
        Canevas.delete(item)
    ListeItemCercles = []
    # affichage de tous les items de Canevas
    print(Canevas.find_all())



-
Edité par Rozo2 1 août 2014 à 17:44:41

  • Partager sur Facebook
  • Partager sur Twitter
1 août 2014 à 19:30:09

Tu utilise quelle version de python  et tu est sous quel OS ? Après je me dit, essaye une autre image car c'est la seul chose qu'on a de différent.
  • Partager sur Facebook
  • Partager sur Twitter
8 août 2014 à 12:43:42

je suis sous window 7 Titan avec Python 3.2.1
  • Partager sur Facebook
  • Partager sur Twitter
By Man Of Hacking
Anonyme
8 août 2014 à 12:59:24

Mince alors ! On m'a piqué mes sources !

Et tu peux aussi ne pas mettre d'images carrément comme le montre le code source présent sur http://fsincere.free.fr/isn/python/cours_python_tkinter.php.

Bon ok, ici il faut l'image de fond tk_cible.gif.

-
Edité par Anonyme 8 août 2014 à 13:05:14

  • Partager sur Facebook
  • Partager sur Twitter
8 août 2014 à 13:24:13

C'est que j'ai pris mes sources ;) oui mais a la fin , il propose un exercice avec les images
  • Partager sur Facebook
  • Partager sur Twitter
By Man Of Hacking
Anonyme
8 août 2014 à 13:34:23

C'est pas fo'. Si tu as testé, cela fonctionne sans modifications.
  • Partager sur Facebook
  • Partager sur Twitter
23 septembre 2023 à 16:33:37 - Message modéré pour le motif suivant : Aucun effort sur l'orthographe


23 septembre 2023 à 22:42:36

@julesjules19 Bonsoir, merci de ne pas déterrer d'ancien sujet.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter