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 :

Réalisation d'une figure à damier progressive


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2021
    Messages : 2
    Par défaut Réalisation d'une figure à damier progressive
    Bonjour à toute la communauté
    Je débute sous Python et je dois réaliser la figure jointe (forme de damier étirée).
    J'ai commencé un programme qui à l'air de marcher car il m'affiche un damier de 16 cases par 16 mais mon résultat à une forme...simple ! .
    Comment faire pour avoir un rendu qui ressemblerait à l'image attendue (progressive) s’il-vous-plait ?

    Obtenu :

    Nom : obtenu.png
Affichages : 178
Taille : 9,7 Ko
    Demandé :

    Nom : demande.png
Affichages : 173
Taille : 347,5 Ko


    D'après moi, il faudrait utiliser les suites géométriques car on multiplie par quelque chose pour avoir cet effet. Qu'en pensez-vous ?
    Mais je ne sais pas comment mettre cette suite en place dans mon programme, sous forme Python...
    Quelqu’un pourrait-il m’aider à m'indiquer le programme à compléter s’il-vous-plait ? je suis arrivé au bout de mes capacités...

    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
    ############# Importation fonction et modules : ################
    from tkinter import *
    from random import randrange
    ############# Fonctions utiliées : ##############
    def damier():
    	"Trace le damier"
    	y = 0
    	while y < 16:
    		if y % 2 == 0: # Décale une fois sur deux
    			x = 0 # la position du premier carré rouge
    		else:
    			x = 1
    		carre_rouge(x*taille_carre, y*taille_carre)
    		y += 1
     
    def carre_rouge(x, y):
    	"Trace les carrés rouges"
    	i = 0
    	while i < 8:
    		can.create_rectangle(x, y, x+taille_carre, y+taille_carre, fill = "#B80000", width = 0) #largeur bordures = 0
    		i += 1
    		x += taille_carre * 2
     
    ############## Programme principal : #################
    taille_carre = 20 # permet de définir une taille de damier modifiable
    fen = Tk() #permet d'ouvrir une fenêtre (grâce au module "tkinter")
    can = Canvas(fen, width = taille_carre * 16, height = taille_carre * 16, bg = "white") #pour afficher le damier de taille 16/16
    can.pack(side = TOP, padx = 5, pady = 5)
    b1 = Button(fen, text = "Résultat", command = damier)
    b1.pack(side = BOTTOM, padx = 2, pady = 2)
    fen.mainloop()
    Un GRAND merci à vous

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Laurent928 Voir le message
    Je débute sous Python et je dois réaliser la figure jointe (forme de damier étirée).
    Déjà les codes on les met dans le forum entre balises [code] et [/code]. Tu te serais un peu promené sur le forum tu l'aurais vu. Pareil, les images on peut les intégrer directement sous forme d'image ce qui évite d'aller devoir télécharger un truc étranger sur son ordinateur (ok là on en trouve moins mais on en trouve quand-même un peu).

    Citation Envoyé par Laurent928 Voir le message
    D'après moi, il faudrait utiliser les suites géométriques car on multiplie par quelque chose pour avoir cet effet. Qu'en pensez-vous ?
    Exact. Chaque case n+1 a les dimensions de la case n multipliées par un coefficient k.

    Citation Envoyé par Laurent928 Voir le message
    Mais je ne sais pas comment mettre cette suite en place dans mon programme, sous forme Python...
    Quelqu’un pourrait-il m’aider à m'indiquer le programme à compléter s’il-vous-plait ?
    Essaye de réfléchir à ce dessin: toutes les cases d'une même ligne ont la même hauteur. Et toutes les cases d'une même colonne ont la même largeur. Et il est même probable que la hauteur des cases de la ligne (par exemple) 2 correspond à la largeur des cases de la colonne 2 ce qui signifie que le facteur d'augmentation est le même en horizontal et en vertical.
    Donc moi je créerais une fonction qui calcule l'augmentation Y correspondant à une valeur X. Pour X=0 l'augmentation est de 0, pour X=1 l'augmentation est de 0.2, pour X=2 l'augmentation est de 0.4 etc etc (ici entre donc en jeu l'effet géométrique avec le coefficient bien évidemment paramétrable ce qui permettra de faire varier les effets).
    Ensuite une boucle sur les lignes et les colonnes avec une case de référence. Et pour chaque case de la ligne L colonne C sa hauteur est augmentée par la valeur renvoyée par la fonction selon L et sa largeur est augmentée par la valeur renvoyée par la fonction selon C. Et enfin on dessine la case.

    Citation Envoyé par Laurent928 Voir le message
    je suis arrivé au bout de mes capacités...
    Ah ben soit c'est vrai et il vaut mieux que tu arrêtes la programmation immédiatement avant de te rendre compte que tu as perdu trop de temps (parce que ce genre de TP c'est vraiment pas grand chose face aux vrais soucis que tu auras en programmation professionnelle) ; soit c'est faux et dans ce cas je ne vois alors pas l'utilité de cette phrase.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

    Citation Envoyé par Laurent928 Voir le message
    D'après moi, il faudrait utiliser les suites géométriques car on multiplie par quelque chose pour avoir cet effet. Qu'en pensez-vous ?
    C'est une idée à travailler peut être en révisant ce que sont ces suites et comment appliquer ça ici. Techniquement, c'est une partie "conception" ou gamberge pour imaginer comment faire.
    Une feuille de papier et un crayon sont les outils de base: on ne peut rien programmer sans savoir quoi programmer!

    Citation Envoyé par Laurent928 Voir le message
    Mais je ne sais pas comment mettre cette suite en place dans mon programme, sous forme Python...
    Vous savez faire des boucles et ajouter une constante à chaque itération (puisque vous avez réalisé des "carrés"). Une suite géométrique, ça va être des multiplications à définir (rien de bien méchant côté Python).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2012, 09h39
  2. [C#] Besoin d'aide sur l'affichage d'une combobox
    Par dcd3 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/10/2005, 00h43
  3. Besoin d'aide sur une fonction
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/08/2005, 17h40
  4. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  5. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 10h29

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