""" lecture du fichier enrichi des tangrams,
    sélection d'un tangram à l'aide du rang pour une certaine caractéristique
    décodification de la forme puis affichage au moyen du module turtle       """

from turtle import *

def dessine(x,y,f):
    speed(0)
    up()
    goto(x,y) # coin supérieur gauche (NW)
    down()
    begin_fill()
    if f==5:  # dessine un carré
        for i in range(4):
            forward(c)
            left(90)
    elif f==1:# dessine un triangle avec angle droite en SW
        goto(x+c,y+c)
        goto(x,y+c)
        goto(x,y)
    elif f==2:# dessine un triangle avec angle droite en SE
        up()
        goto(x+c,y)
        down()
        goto(x+c,y+c)
        goto(x,y+c)
        goto(x+c,y)
    elif f==3:# dessine un triangle avec angle droite en NW
        goto(x+c,y)
        goto(x,y+c)
        goto(x,y)
    elif f==4:# dessine un triangle avec angle droite en NE
        goto(x+c,y)
        goto(x+c,y+c)
        goto(x,y)
    end_fill()
    ht()
    
def affiche(liste):
    colonnes,lignes=len(liste[0]),len(liste)
    for lig in range(lignes):
        for col in range(colonnes):
            dessine(col*c,lig*c,liste[lig][col])

def lecture(rang,caract,valeur):
    fichier=open('tangram.txt','r')
    num,forme,cpt=0,"",0
    for ligne in fichier.readlines() :
        forme=ligne.split('.')
        cpt+=1
        if valeur==int(forme[caract]):#forme[3]:dimension,forme[4]:convexité,forme[5]:symétrie,forme[6]:côtés,forme[7]:trou
            num+=1
            if rang==num :
                print('forme n°{} du fichier:{}'.format(cpt,ligne))
                break
    fichier.close()
    colonnes,lignes=int(forme[0]),int(forme[1])
    code=[colonnes*[0] for i in range(lignes)]# initialise la liste de listes de bonne dimension, ne contenant que des 0 
    c=0
    for lig in range(lignes):
        for col in range(colonnes):
            code[lig][col]=int(forme[2][c])
            c+=1
    return code

c=50 #côté du quadrillage
color('grey','black')# pour ne pas avoir les traces du quadrillage ('black','black'), pour les avoir ('grey','black')
L=lecture(900,7,2) # le 2ème argument sert à cibler une caractéristique, le 3ème la valeur de cette caractéristique
print(L)
affiche(L)

