arbreC.py (bibliothèque graphique pour le programme arbre.py)

text/x-python 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;