arbreC.py (bibliothèque graphique pour le programme arbre.py)
arbreC.py — 2.8 KB
Contenu du fichier
''' ********************************************************************** Fichier pgm1.py Programme qui manipule les chaines auteur gabriel girard date 2016 Ce programme ne fonctionne pas correctment. Corrigez-le? ********************************************************************** ''' import sfml as sf import math TAILLE_PAR_DEFAUT = 800; COULEUR_PAR_DEFAUT = 1; #-------------------- # class Point : def __init__(self, x=0, y=0): self.coordonneeX = int(x) self.coordonneeY = int(y) def init(self, x, y) : self.coordonneeX = int(x) self.coordonneeY = int(y) def lecture(self) : self.coordonneeX = int(input("Valeur : " )) self.coordonneeY = int(input("Valeur : " )) def valX(self): return self.coordonneeX def valY(self): return self.coordonneeY #------------- #Classe Canevas pour afficher graphiquement.. class Canevas : def __init__(self): self.canevas = sf.graphics.RenderWindow(sf.window.VideoMode(TAILLE_PAR_DEFAUT, TAILLE_PAR_DEFAUT), "Canevas de travail") self.tailleX = TAILLE_PAR_DEFAUT self.tailleY = TAILLE_PAR_DEFAUT self.canevas.display() def __del__(self): print ("fin......................:" ) self.canevas.close() def effacer(self) : self.canevas.clear(sf.Color.BLACK) def dessiner(self, ligne) : self.canevas.draw(ligne) self.canevas.display() ''' --------------------------------------------------- Fonction dessinerLigne Dessine une ligne sur le canevas ------------------------------------------------------''' def dessinerLigne(ecran, p1, p2): uneLigne = sf.graphics.VertexArray(sf.graphics.PrimitiveType.LINES, 2) # On efectue la translation en Y car # (Dans SFML Y=0 est en haut à gauche....) uneLigne[0].position = sf.system.Vector2(p1.coordonneeX, int(TAILLE_PAR_DEFAUT - p1.valY())) uneLigne[1].position = sf.system.Vector2(p2.coordonneeX, int(TAILLE_PAR_DEFAUT - p2.valY())) uneLigne[0].color = sf.graphics.Color.GREEN uneLigne[0].color = sf.graphics.Color.GREEN #print(uneLigne[0].position, uneLigne[1].position) #print("---" ,p1.coordonneeX) ecran.dessiner(uneLigne) def degRad(angle) : return (angle * math.pi /180) ''' -------------------------------------------------------- Fonction calculerPointLigne \brief Calcule le second point d'une ligne a partir d'un point d'origine, de la longueur de la ligne et d'une direction (angle) ----------------------------------------------------------- ''' def calculerPoint(p1, longueurLigne, direction) : dy = int(longueurLigne * math.sin(degRad(direction))) dx = int(longueurLigne * math.cos(degRad(direction))) p = Point() p.init(int(p1.coordonneeX+dx), int(p1.coordonneeY + dy)) return p;