1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : janvier 2018
    Messages : 4
    Points : 3
    Points
    3

    Par défaut contact entre des pièces Tetris

    Bonjour à tous !
    Je débute en Python et je me suis donc lancé comme défi de faire une reproduction du jeu Tetris avec tkinter afin de consolider ce que je savais déja et d'apprendre de nouvelles choses. J'ai donc découvert la fonction find_overlapping afin de trouver si la pièce qui tombe entre en contact avec une autre et d'arrêter sa chute. Malheureusement, la pièce s'arrête également lorsque l'un de ses coins touche un coin d'une autre pièce, ce qui donne parfois des pièces posées au dessus du vide. je n'arrive pas à trouver comment régler cela,
    merci de votre aide ^^

    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
     
        carre1 = can1.create_rectangle(120,0,180,30, fill="red")
        i=1
        contact=0
        while contact==0:
            can1.update()
            X1=120
            Y1=-30+30*i
            X2=180
            Y2=30+30*i
     
     
            can1.coords(carre1,X1,Y1,X2,Y2)
            time.sleep(0.5)
            i+=1
     
            can1.bind("<Left>", gauche)
            can1.bind("<Right>",droite)
     
            if len(can1.find_overlapping(can1.coords(carre1)[0],can1.coords(carre1)[1],can1.coords(carre1)[2],can1.coords(carre1)[3]))>1:
                contact=1

  2. #2
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    11 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 11 800
    Points : 19 289
    Points
    19 289

    Par défaut

    Salut,

    Citation Envoyé par filandouss Voir le message
    Malheureusement, la pièce s'arrête également lorsque l'un de ses coins touche un coin d'une autre pièce, ce qui donne parfois des pièces posées au dessus du vide. je n'arrive pas à trouver comment régler cela
    Il faut pouvoir trier dans les identifiants que retourne .find_overlapping pour sélectionner ceux qui traduisent une collision. Et pour cela, par exemple, classer les différents items du canvas dans des listes (ou des ensembles).

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    janvier 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : janvier 2018
    Messages : 4
    Points : 3
    Points
    3

    Par défaut

    Comment dois-je les classer ?
    Et en quoi cela va-t-il m'aider ?

  4. #4
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    11 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 11 800
    Points : 19 289
    Points
    19 289

    Par défaut

    Prenez la page de Wiki qui raconte ce qu'est un Tetris.
    La chute du tetrimino s'arrête lorsqu'un de ses carrés "en bas" touche un carré déjà rempli ou le bas d'un tableau 10 lignes x 22 colonnes. Comme les tetriminos sont des assemblages de carrés occupant 2 à 4 colonnes, il suffit de regarder si les cases qui sont juste dessous sont occupées ou pas.
    Si vous voulez absolument utiliser .find_overlapping, il va falloir trouver les items qui sont dans ces colonnes (une liste donc) pour trier ce qui est retourné.

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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    mai 2011
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mai 2011
    Messages : 186
    Points : 421
    Points
    421

    Par défaut Simplification

    Pour débuter faut simplifier. Tkinter pour afficher et des structures pour gérer tes données. De simples tableaux suffisent pour la pièce et le puits en contenant. En plus vu comment tu appelles la fonction revoir tes bases est important.

Discussions similaires

  1. [OL-2013] Partager des contacts entre plusieurs BAL(E)
    Par tanaka59 dans le forum Outlook
    Réponses: 1
    Dernier message: 09/02/2016, 11h29
  2. Modélisation des pièces courante et suivante d'un jeu Tetris
    Par pitchu dans le forum Diagrammes de Classes
    Réponses: 2
    Dernier message: 10/03/2015, 18h23
  3. Comment faire un retour ligne entre des " ??
    Par DrTank dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 09/05/2005, 09h35
  4. Empêcher le retour á la ligne entre des balises <Hx> e
    Par thomas_chamas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 29/11/2004, 16h39
  5. affichage des pièces jointe sous outllook 2000
    Par darkbm dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 29/10/2003, 11h32

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