IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

[Tkinter] casse brique [Sources]


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [Tkinter] casse brique
    Bonjour a tout le monde :

    Voila c'est assez simple, je suis etudiant et dans le cadre de mon cours de programmation j ai un casse brique à réaliser en python. Je suis donc en train de bosser dessus mais je rencontre beaucoup de problemes et j'ai une semaine pour le faire. En ce moment je m'occupe de faire la raquette , mais je n'arrive pas par exemple a lier le déplacement de ma raquette avec les touches du clavier ( il faut utiliser "bind"?), et j ai plein de problèmes comme ça... Quelqu'un pourrait m'indiquer une url utile ou meme des conseils pour la réalisation de ma raquette et des briques !!!

    Merci d'avance à tout ceux qui pourront m'apporter leur soutient !!!

    Mamatt

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 57
    Points : 71
    Points
    71
    Par défaut
    lut
    bind, marche quze avec Tkinter en graphique
    http://www.pythonware.com/library/tkinter/introduction/events-and-bindings.htm

  3. #3
    Membre averti
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Points : 342
    Points
    342
    Par défaut
    Effectivement ça fonctionne avec bind ou bind_all.

    Je t'ai fait un petit exemple pour t'avancer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #-*- coding iso-8859-1 -*-
     
    from Tkinter import *
     
    class Appli(Frame):
      def __init__(self, master = None):
        Frame.__init__(self, master)
        self.pack()
        self.X = 135
        self.Y = 260
        self.surface = Canvas(self, bg= "white", height = 300, width = 300)
        self.raquette = self.surface.create_rectangle(self.X, self.Y, self.X + 30, self.Y + 8, fill = "black")
        self.surface.pack()
        self.bind_all("<Left>", self.Arriere)
        self.bind_all("<Right>", self.Avant)
     
      def Avant(self, evt):
        if self.X < 269 :
          self.X += 5
          self.surface.coords(self.raquette, self.X, self.Y, self.X + 30, self.Y + 8)
     
      def Arriere(self, evt):
        if self.X > 4 :
          self.X -= 5
          self.surface.coords(self.raquette, self.X, self.Y, self.X + 30, self.Y + 8)
     
    app = Appli()
    app.master.title("Casse briques")
    app.mainloop()
    Si tu comprends pas tout, tu demandes...
    Je ne traite pas les problèmes techniques par MP...
    Les forums sont là pour ça...

    Les contributions du bipede

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut kass brique > briques
    Merci à vous deux , vous m'avez vraiment baucoup aidé et merci encore;
    mais j 'ai un autre souci avec mes briques / avec le code suivant je désir afficher une grille qui présente dans chaque case un rectangle rouge mais je n'obtient pas grand chose; pourriez vous m indiquer ce qui ne va pas?

    from Tkinter import *


    fen=Tk()
    fen.title ( " briques")


    img = Canvas (fen,bg ="blue",height=400,width=400)



    rectangle= img.create_rectangle (x0, y0, x1, y1,fill="red",outline="red")
    cmpt=0
    cmpt2=0
    while cmpt and cmpt2 < 100:
    rectangle.grid(row="cmpt", column="cmpt2")
    cmpt+=1
    cmpt2+=1

  5. #5
    Membre habitué
    Avatar de Olivier_
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 111
    Points : 127
    Points
    127
    Par défaut
    Que veux tu faire ?
    Remplir une grille de 100 cases par 100 en cases rouges ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while col < 100:
      while row < 100:
        rectangle.grid(row=row, column=col)
        row += 1
      col += 1
    Ceci devrait mieux fonctionner je pense
    Dans ton code, il y avait cmpt et cmpt2 (mes row et col) entre guillemets, déjà ça devait merdouiller à ce niveau là, ce son des variables, pas des chaines, et avec ta boucle, je doute que tu parcourais toutes les coordonnées possibles

  6. #6
    Membre habitué
    Avatar de Olivier_
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 111
    Points : 127
    Points
    127
    Par défaut
    Euuhh, en fait, je doute que ça fasse grand chose ^^
    rectangle étant unique :/

    Il faudrait faire un truc du genre, liste de case par coordonnées je pense et créer chacun des boutons avec chacune des coordonnées.

    Tu fais une liste du style

    but_x,y = (x,y) dans une liste en la remplissant avec le même type de boucle que ci dessus, et tu crées les boutons et les positionnes en parcourant la grille.

    Enfin c'est une idée, il doit y avoir mieux, place aux experts

  7. #7
    Membre averti
    Avatar de Alain_72
    Inscrit en
    Août 2004
    Messages
    180
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 180
    Points : 342
    Points
    342
    Par défaut
    Pour créer les briques il suffit de deux boucles for:. une pour les lignes et une pour les colonnes.

    Ci-dessous l'exemple précédent auquel j'ai ajouté une fonction CreationBriques() avec deux paramètres : le nombre de lignes et la couleur des briques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    #-*- coding iso-8859-1 -*-
     
    from Tkinter import *
     
    class Appli(Frame):
      def __init__(self, master = None):
        Frame.__init__(self, master)
        self.pack()
        self.X = 180
        self.Y = 360
        self.surface = Canvas(self, bg= "black", height = 400, width = 400)
        self.raquette = self.surface.create_rectangle(self.X, self.Y, self.X + 40, self.Y + 10, fill = "white")
        creer = self.CreationBriques(4, "red")
        self.surface.pack()
        self.bind_all("<Left>", self.Arriere)
        self.bind_all("<Right>", self.Avant)
     
     
      def Avant(self, evt):
        if self.X < 360 :
          self.X += 5
          self.surface.coords(self.raquette, self.X, self.Y, self.X + 40, self.Y + 10)
     
      def Arriere(self, evt):
        if self.X > 5 :
          self.X -= 5
          self.surface.coords(self.raquette, self.X, self.Y, self.X + 40, self.Y + 10)
     
      def CreationBriques(self, lignes, couleur):
        debligne = 20
        row = 0
        col = 0
        for x in range(lignes):
          row = debligne + (20 * x)
          for y in range(10):
            col = y * 40
            brique = self.surface.create_rectangle(col, row, col + 40, row+ 20, fill = couleur)
        return True
     
     
    app = Appli()
    app.master.title("Casse briques")
    app.mainloop()
    Je ne traite pas les problèmes techniques par MP...
    Les forums sont là pour ça...

    Les contributions du bipede

Discussions similaires

  1. pb de balle pour un casse brique en c++ builder5
    Par projetersi dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 19/04/2007, 11h37
  2. Création d'un casse-briques
    Par psgkiki dans le forum Assembleur
    Réponses: 4
    Dernier message: 02/04/2007, 16h18
  3. Réponses: 5
    Dernier message: 06/09/2006, 09h35
  4. [Source] [SDL] Commencement d'un casse brique
    Par grincheux01 dans le forum Contribuez
    Réponses: 8
    Dernier message: 29/06/2006, 12h27
  5. Button "Start" dans un jeu de casse brique
    Par tex78 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 24/01/2006, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo