""" 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
    version 2 : on peut choisir deux caractéristiques de la forme pour une meilleure sélection """

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,condition1,condition2):
    fichier=open('tangram.txt','r')
    num,forme=0,""
    for ligne in fichier.readlines() :
        forme=ligne.split('.')
        #forme[3]:dimension,forme[4]:convexité,forme[5]:symétrie,forme[6]:côtés,forme[7]:trou
        if condition1==int(forme[6]) and condition2==int(forme[5]):
            num+=1
            if rang==num :
                break
    fichier.close()
    colonnes,lignes=int(forme[0]),int(forme[1])
    code=[colonnes*[0] for i in range(lignes)]
    c=0
    #print(forme[2])
    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('black','black')# pour ne pas avoir les traces du quadrillage ('black','black'), pour les avoir ('grey','black')
L=lecture(1,18,4) # le 2ème et 3èmes arguments serventt à cibler les caractéristiques
print(L)
affiche(L)

