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

Python Discussion :

Casse brique python: comment faire plusieurs briques en peu de ligne de code


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut Casse brique python: comment faire plusieurs briques en peu de ligne de code
    Bonjour , je souhaite faire un casse brique et je suis bloqué a une etape, qui a l'air simple pourtant , je n'arrive pas a faire 3 rangées de 20 briques sans taper 300 ligne de code , je veux faire 3 rangées de 20 briques et comment faire pour les collisions avec la balle svp , merci. Voici mon code
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    from tkinter import*
    from random import randrange
    from math import*
    print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
    print("<<<<<<Appuyer sur ENTRER pour jouer ou ECHAP pour quitteret P pour pause>>>>>>>")
    print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
    flag = 0
    X=265
    Y=550
    DX=-10
    DY=-10
    posxd=275
    posyd=580
    RAYON=8
    print(posxd,posyd)
    def move():
        global X,Y,DX,DY,Largeur,Hauteur,balle,flag,RAYON
        xp, yp = X+DX, Y+DY
        print (xp,yp)
        #rebond a droite
        if xp > Hauteur-35 :
            DX=-DX
        #rebond a gauche
        if xp < 0:
            DX=-DX
        #rebond en haut
        if yp <0:
            DY=-DY
        #rebond sur la raquette
        if yp >= posyd-10  and xp < posxd+50 and xp > posxd-50:
            DY = -DY
     
        X, Y = X+DX, Y+DY
        Can1.coords(balle,X-RAYON,Y-RAYON,X+RAYON,Y+RAYON)
     
        if flag > 0:
            fenetre.after(45,move)
     
    def start(event):
        global flag
        flag=flag+1
        if flag==1:
            move()
        "démarrer"
     
    def stop(event):
        "arret de l'animation"
        global flag
        flag =0
     
    #Pour quitter le programme    
    def Quitter (event):
        fenetre.destroy()
     
     
     
    def Clavier(event):
     
        global posxd,posyd
        touche=event.keysym
        print("Touche :", touche)
     
     
        if touche == 'Left':
            posxd=posxd-30
     
        if touche == 'Right':
            posxd=posxd+30
     
        if touche == 'Escape':
            fenetre.destroy
     
        print(posxd,posyd)
        Can1.coords(raquette,posxd-50,posyd-8,posxd+50,posyd+8)
     
     
    fenetre = Tk() 
    fenetre.title('brick')
    Largeur=550
    Hauteur=600
    #Indique les normes du Canevas
    Can1 = Canvas(fenetre, width = Largeur, height = Hauteur, bg='GREY')
    Can1.pack()
     
    #Création des block
     
    #Définition du boutton "Start"
    Button(fenetre, text='Démarrer',command=start).pack(side=LEFT, padx=15,pady=10)
    #Définition du boutton "Quitter"
    Button(fenetre, text='Quitter',command=fenetre.destroy).pack(side=RIGHT,padx=15,pady=10)
    raquette = Can1.create_rectangle(posxd-50,posyd-8,posxd+50,posyd+8,width=2,fill='red')
    balle = Can1.create_oval(X-RAYON,Y-RAYON,X+RAYON,Y+RAYON,width=1,fill='cyan')
    Can1.bind("<Return>",start)
    Can1.bind("<Escape>",Quitter)
    Can1.bind("<p>",stop)
     
     
     
     
    Can1.focus_set()
     
    Can1.bind('<Key>', Clavier) 
     
    fenetre.mainloop()

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par macmac12 Voir le message
    je veux faire 3 rangées de 20 briques
    Une boucle "for" pour chacune des rangées contenant une autre boucle "for" pour chacune des 20 briques... Ce qui fait entre 3 et 5 lignes de code.

    Citation Envoyé par macmac12 Voir le message
    et comment faire pour les collisions avec la balle svp
    La balle a une position x, y et un rayon R qu'on peut résumer en disant qu'elle occupe un carré dont deux sommets sont x0, y0, x1, y1.
    Donc vous savez calculer lorsque la balle dépasse le mur de brique (i.e. collision).
    Resta à trouver là (ou les) brique(s), mais vous avez disposé N briques donc remplit N*côté de la brique et donc x // N va vous donner le numéro de la brique en collision.

    Et tout çà n'a rien à voir avec la programmation, c'est juste des maths élémentaires.

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut
    Merci pour votre reponse mais je vois pas comment faire pour créer les rectangles dans une boucle for ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par macmac12 Voir le message
    Merci pour votre reponse mais je vois pas comment faire pour créer les rectangles dans une boucle for ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for y in range(0, 30, 10):
        for x in range(0, 400, 20):
            canvas.create_rectangle(x, y, x+20, y+10, fill='grey')
    Mais si vous êtes en difficulté avec des choses aussi basiques, çà serait bien d'ouvrir un tuto et d'appendre les bases avant de vous jeter dans tkinter. Une double boucle, c'est juste ce qu'il faut pour balayer un tableau (une liste de liste, une liste de chaines de caractères)...

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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut
    Merci a vous pour l'aide et vos conseils .

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mai 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2017
    Messages : 4
    Par défaut
    Pouvez vous me dire que signifie les 3 chiffres dans chaque parentheses ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/09/2015, 19h01
  2. [Turbo Pascal] Comment faire plusieurs read sur la même ligne
    Par machmak dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 05/02/2012, 11h42
  3. Comment faire plusieurs espaces entre deux mots
    Par open_source dans le forum Mise en forme
    Réponses: 2
    Dernier message: 17/05/2009, 12h48
  4. makefile ... comment faire plusieurs exécutables !
    Par fregate dans le forum Systèmes de compilation
    Réponses: 9
    Dernier message: 18/12/2005, 16h14

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