Dessin de dés à échelle variable sur canvas

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 641 fois - Téléchargée 17 fois

Contenu du snippet

Ce petit script montre une fonction qui permet de dessiner des dés très facilement sur un Canvas. Ce programme ne fait rien en soi mais est une étape préalable à un jeu utilisant l'affichage de faces de dés. Changer la valeur de self.unite pour avoir des dés plus ou moins grands.

Source / Exemple :


# -*- coding:utf-8 -*-
class Application:
    def __init__(self):
        self.root=Tk()
        self.root.title('Tirage de dés')
        self.root.geometry("600x400")
        self.c = Canvas(self.root)
        self.c.pack(fill=BOTH, expand=YES)
        self.unite = 8 # unite servant à dimensionner les dés
        self.trait = 1  # épaisseur en pixels du bord du dé
        self.dessiner(10,               10,               6)
        self.dessiner(10+13*self.unite, 10,               5)
        self.dessiner(10+26*self.unite, 10,               4)
        self.dessiner(10,               10+13*self.unite, 3)
        self.dessiner(10+13*self.unite, 10+13*self.unite, 2)
        self.dessiner(10+26*self.unite, 10+13*self.unite, 1)
        self.root.mainloop()

    def dessiner(self, x, y, num):
        # on trace d'abord le carré de la face du dé
        self.c.create_rectangle(x,y, x+(10*self.unite),
                                y+(10*self.unite), fill='white', width=self.trait)
        # voici les coordonnées en "unités" des différents points de chaque face de dé
        cdpn = (
            ((4,4),),
            ((1,1),(7,7)),
            ((1,7),(4,4),(7,1)),
            ((1,1),(7,1),(1,7),(7,7)),
            ((1,1),(7,1),(1,7),(7,7),(4,4)),
            ((2,1),(6,1),(2,4),(6,4),(2,7),(6,7))
        )
        for p in cdpn[num-1]:
            self.c.create_oval(x+(p[0]*self.unite),
                               y+(p[1]*self.unite),
                               x+((p[0]+2)*self.unite),
                               y+((p[1]+2)*self.unite), fill='black')

# départ du programme principal :
from Tkinter import *
f = Application()

Conclusion :


L'utilisation de Tkinter a été faite avec une classe.

A voir également

Ajouter un commentaire Commentaires
Messages postés
28
Date d'inscription
jeudi 10 juillet 2003
Statut
Membre
Dernière intervention
25 octobre 2009

Un peu plus d'explications sur le dessin des points ici :

http://www.gigante.be/python/didact_003.php

;o)
Messages postés
28
Date d'inscription
jeudi 10 juillet 2003
Statut
Membre
Dernière intervention
25 octobre 2009

J'ai hésité à poster ce petit programme qui n'a pas de fin en soi, si ce n'est illustrer une fonction de dessin de dés à l'échelle modifiable. Mais tu as raison pour l'intérêt. J'espère juste que certains débutants en tireront une certaine curiosité dans la construction de classe. Merci pour ton commentaire !
Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
16
Pas grand intérêt seul, mais ça fonctionne correctement, et c'est bien construit. Pas notable selon mes critères ...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.