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 :

Besoin d'aide pour un Tétris


Sujet :

Tkinter Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Besoin d'aide pour un Tétris
    Bonjour, je suis un lycéen qui à pour projet d'ISN de crée un Tétris. J'ai en se moment un problème pour le système de stockage des pièces déjà tombé. Pour le stockage j'ai pensé à utilisé une pixmap mais je ne connais pas les commandes à utiliser. j'ai aussi un problème au niveau de la gestion des collisions avec les pièces déjà tombé et la pièce qui tombe. mon dernier problème se situe dans la destruction des lignes complète et la chute des autres blocs situer au dessus.
    Pour le reste comme les murs latéraux ou le stockage des pièces je peux m'en occuper sans problème.
    Je vous remercie d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Salut,

    Quelque soit le problème, sans préciser la bibliothèque graphique utilisée ni montrer du code pour montrer/illustrer comment vous vous y prenez, difficile de comprendre la nature de vos problèmes et savoir comment y répondre/vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2018
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Voici le code que j'ai écrit jusqu'à maintenant (version de python 3.6.2):

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    from tkinter import *
    import random
     
    def creation():
        global pieces
        n=random.randint(0,6)
        xc,yc=pieces[n][0][0],pieces[n][0][1]
        x1,x2,x3,x4,x5,x6,x7,x8=pieces[n][1][0],pieces[n][2][0],pieces[n][3][0],pieces[n][4][0],pieces[n][5][0],pieces[n][6][0],pieces[n][7][0],pieces[n][8][0]
        y1,y2,y3,y4,y5,y6,y7,y8=pieces[n][1][1],pieces[n][2][1],pieces[n][3][1],pieces[n][4][1],pieces[n][5][1],pieces[n][6][1],pieces[n][7][1],pieces[n][8][1]
        square1=can.create_rectangle(x1,y1,x2,y2,fill='blue')
        square2=can.create_rectangle(x3,y3,x4,y4,fill='blue')
        square3=can.create_rectangle(x5,y5,x6,y6,fill='blue')
        square4=can.create_rectangle(x7,y7,x8,y8,fill='blue')
     
     
    def avance(gd,bh):
        global x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8
        x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8=x1+gd,y1+bh,x2+gd,y2+bh,x3+gd,y3+bh,x4+gd,y4+bh,x5+gd,y5+bh,x6+gd,y6+bh,x7+gd,y7+bh,x8+gd,y8+bh
        can.coords(square1,x1,y1,x2,y2)
        can.coords(square2,x3,y3,x4,y4)
        can.coords(square3,x5,y5,x6,y6)
        can.coords(square4,x7,y7,x8,y8)
     
    def droite(event):
        global pieces,x1,x2,x3,x4,x5,x6,x7,x8
        if x1<600 and x2<600 and x3<600 and x4<600 and x5<600 and x6<600 and x7<600 and x8<600 :
            avance(25,0)
     
    def gauche(event):
        global pieces,x1,x2,x3,x4,x5,x6,x7,x8
        if x1>0 and x2>0 and x3>0 and x4>0 and x5>0 and x6>0 and x7>0 and x8>0 :
            avance(-25,0)
     
    def descendre(event):
        global pieces
        avance(0,25)
     
    def rotation(event):
        global pieces,xc,yc,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8
        x1,y1=xc+y1-yc,yc-x1+xc
        x2,y2=xc+y2-yc,yc-x2+xc
        x3,y3=xc+y3-yc,yc-x3+xc
        x4,y4=xc+y4-yc,yc-x4+xc
        x5,y5=xc+y5-yc,yc-x5+xc
        x6,y6=xc+y6-yc,yc-x6+xc
        x7,y7=xc+y7-yc,yc-x7+xc
        x8,y8=xc+y8-yc,yc-x8+xc
        can.coords(square1,x1,y1,x2,y2)
        can.coords(square2,x3,y3,x4,y4)
        can.coords(square3,x5,y5,x6,y6)
        can.coords(square4,x7,y7,x8,y8)
     
    fen=Tk()
    fen.title("Tétris")
     
    can=Canvas(fen,width=250,height=600,bg="white")
    can.pack()
     
    pieces=[[[125,25],[100,0],[125,25],[100,25],[125,50],[125,25],[150,50],[125,0],[150,25]],    #pièce C
            [[125,25],[100,50],[125,75],[100,25],[125,50],[125,25],[150,50],[125,0],[150,25]],   #pièce Z
            [[125,25],[100,0],[125,25],[100,25],[125,50],[125,25],[150,50],[125,50],[150,75]],   #pièce S
            [[125,25],[100,50],[125,75],[100,25],[125,50],[100,0],[125,25],[125,0],[150,25]],    #pièce J
            [[125,25],[100,0],[125,25],[125,0],[150,25],[125,25],[150,50],[125,50],[150,75]],    #pièce L
            [[125,25],[100,25],[125,50],[125,25],[150,50],[125,0],[150,25],[150,25],[175,50]],   #pièce T
            [[125,0],[75,0],[100,25],[100,0],[125,25],[125,0],[150,25],[150,0],[175,25]]]        #pièce I
     
    fen.bind("<Right>",droite) #détection de présion de la flèche directionelle droite
    fen.bind("<Left>",gauche) #détection de présion de la flèche directionelle gauche
    fen.bind("<Down>",descendre)#détection de présion de le flèche directionelle bas
    fen.bind("<Up>",rotation)#fonction de rotation des pièces
     
    fen.mainloop()
    Encore merci d'avance.
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 778
    Points
    36 778
    Par défaut
    Super! Maintenant, on sait que vous utilisez tkinter comme bibliothèque graphique.
    Côté jeu vous avez la page de wikipedia qui explique ce qu'est Tetris. Si vous regardez attentivement l'animation, vous pouvez considérer l'aire de jeu comme un tableau de carrés ayant N lignes et M colonnes.
    Un tetriminos est juste un paquet de cases qui dessinent une figure et qui avant tout tombe à vitesse constante.
    Et si vous voulez réaliser votre jeu, il faut commencer par trouver comment réaliser des choses simples et "compliquer" par la suite.
    Par exemple, vous pourriez jouer avec cet exemple:
    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
    import tkinter as tk
    from tkinter.constants import *
    from random import randrange, choice
    M = 25
    N = 12
    SIZE = 15 
    COLORS = 'blue', 'grey', 'red', 'green'
     
    def create_square():
        column = randrange(N)
        color = choice(COLORS)
        x = column * SIZE
        canvas.create_rectangle(x, 0, x+SIZE, SIZE, fill=color, width=0, tag='figure')
     
    def do_move(delay=100):
        canvas.move('figure', 0, SIZE)
        iids = canvas.find_enclosed(0, height, width+SIZE, height+SIZE)
        if iids:
            count = results.get()
            results.set(count + len(iids))
            canvas.delete(*iids)
        root.after(delay, do_move)
     
    root = tk.Tk()
    width = N * SIZE
    height = M * SIZE
    canvas = tk.Canvas(root, width=width, height=height, bg="white")
    canvas.pack(side=RIGHT)
    frame = tk.Frame(root, bg='grey70')
    frame.pack(side=LEFT, expand=True, fill=BOTH)
    tk.Button(frame, text='créer carré', command=create_square
              ).grid(row=0, column=0, columnspan=2)
     
    results = tk.IntVar()
    tk.Label(frame, text='compte').grid(row=1, column=0)
    tk.Label(frame, textvariable=results).grid(row=1, column=1)
     
    do_move()
    root.mainloop()
    Çà crée des carrés qui tombent lorsqu'on clique sur le Button "créer carré"... Et lorsqu'on dépasse le bord inférieur, on les compte avant de les détruire.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 13h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

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