Author: Eva I.

Tutoriels

Comment vérifier si un site Web est sécurisé

Internet, bien qu’encore récent, est aujourd’hui universel et indispensable. Cependant, il représente également une source de dangers. Nous nous concentrerons ici sur l’aspect des sites web : comment ceux-ci pourraient nous nuire et comment se protéger de ces dangers potentiels.

Les risques avec les sites web non-sécurisés

  • Vol de données personnelles
  • Propagation de logiciels malveillants
  • Phishing
  • Défacement et attaques visibles
  • Vol d’identité numérique
  • Exploitation des cookies

Ici sont présents les possibles risques de site web non-sécurisés ; que ce soit des risque pour les créateurs du site ou ses client. Nous allons donc étudier chacun de ces cas et trouver un moyen pour contrer les possibles piratages.

Vol de données personnelles

Un site non sécurisé pourrait transmettre des informations non cryptées, ce qui permettrait aux attaquants d’intercepter les données comme des informations bancaires ou des identifiants sur un site sans protocole HTTPS, ces données pourraient être volées via des attaques de type « Man-in-the-Middle » (MITM).

Les attaques de type MITM comprennent deux étapes :

  • Interception de la communication
  • Observation ou manipulation des données

Nous pouvons nous protéger de ce type d’attaques avec ces quelques réflexes :

  • Vérifier toujours que l’URL contient « https:// » et qu’un cadenas est affiché dans la barre d’adresse.
  • Éviter les réseaux Wi-Fi publics non sécurisés
  • Mettre à jour vos logiciels et appareils
  • Être vigilant aux certificats non valides ou aux alertes de sécurité du navigateur
  • Utiliser des outils de sécurité avancés comme un pare-feu, un antivirus et/ou des extensions de navigateur pour bloquer les sites malveillants.

Propagation de logiciels malveillants

Des sites non sécurisés peuvent être exploités pour diffuser des logiciels malveillants comme des « virus » ou des « chevaux de Troie ». Ces programmes infectent les ordinateurs des utilisateurs sans leur consentement.

Exemple : Faux sites de téléchargements de jeux ou de cracks :

Les utilisateurs cherchant à télécharger gratuitement des jeux payants ou des cracks pour contourner les protections anti-copie tombent souvent sur des sites non sécurisés où les fichiers proposés contiennent des malwares déguisés en applications.

Exemple précis : Le « trojan CryptBot »(=le cheval de Troie volant des informations) a été distribué via des faux sites de cracks. Ce malware vole les informations stockées dans les navigateurs, comme les identifiants et les cartes bancaires.

Comment éviter ces risques :

  • Éviter de visiter des sites non sécurisés ou suspects (pas de HTTPS, alertes du navigateur).
  • Télécharger toujours les logiciels depuis les sites officiels des éditeurs.
  • Utiliser un antivirus contre les publicités malveillantes.
  • Vérifier la réputation des sites grâce à des outils comme « VirusTotal » ou des listes noires en ligne.

Phishing

Le Phishing aussi appelé « Hameçonnage » en français sont des sites web non sécurisés qui peuvent être créés pour ressembler à des sites légitimes dans le but de tromper les utilisateurs et voler leurs informations personnelles.

Exemple précis : Entre 2013 et 2015 Un individu lituanien s’est fait passer pour un fournisseur asiatique légitime, « Quanta Computer », avec lequel Facebook et Google avaient des relations commerciales. Il a envoyé de fausses factures et des contrats falsifiés aux deux géants technologiques, qui ont donc effectués des paiements importants vers des comptes bancaires contrôlés par l’escroc (environ 100 millions de dollars).

Pour éviter les risques de Phishing :

  • Vérifier l’expéditeur des e-mails (adresse suspecte comme « service-client@paypa1.com » : le « 1 » au lieu d’un « l » est souvent un indicateur de Phishing)
  • Passer votre souris sur les liens avant de cliquer pour voir l’URL réelle avant de cliquer, il faut se méfier des URL raccourcies ou modifiées..
  • Se méfier des messages urgents(comme la banque) ou trop beaux pour être vrais(« Vous avez gagné un Iphone ! »).
  • Ne pas partager des informations personnelles sans vérification.
  • Utiliser des mots de passe forts et uniques (Les mots de passe avec des fautes d’orthographes marchent encore mieux étant donné qu’une intelligence artificielle ne fera jamais de fautes d’orthographes).
  • Installer un antivirus avec une protection « anti-phishing ».
  • S’assurer que les sites web utilisent HTTPS.

Défacement et attaques visibles

Un site non sécurisé est vulnérable face à des attaques permettant aux pirates de modifier son contenu. Cela peut compromettre sa crédibilité ou même contenir des messages nuisibles pour les visiteurs.

Exemple précis : En 2011, le groupe « Anonymous » a attaqué « HBGary Federal », une société de sécurité informatique, après des propos de son PDG sur la divulgation de l’identité des membres d’Anonymous. Les pirates ont modifié le site web de l’entreprise, y affichant des messages moqueurs et ont publié des e-mails internes sensibles. Cette attaque a gravement nui à la réputation de HBGary.

Un article Le Monde sur ce piratage

Conseils pour se protéger le plus possible des défacement et/ou des attaques visibles :

  • Utiliser HTTPS et des certificats SSL/TLS(=Secure Sockets Layer / Transport Layer Security : ce sont des protocoles de sécurités).
  • Mettre à jour régulièrement les logiciels et les plugins.
  • Installer un pare-feu d’application web.
  • Limiter les droits d’accès et permissions.
  • Surveiller l’intégrité des fichiers du site.
  • Faire des sauvegardes régulières du site.

Vol d’identité numérique

Les informations récupérées sur un site non sécurisé (adresses e-mail, mots de passe, données personnelles) peuvent être utilisées pour voler l’identité d’un utilisateur. Les conséquences peuvent être l’accès à des comptes en ligne, des transactions financières non autorisées et/ou la création de faux profils pour nuire à la victime.

Exemple précis fictif : Un exemple bien connu de vol d’identité numérique subi par une personne est l’affaire de David Kirchhoff, un homme qui a découvert que son identité avait été volée pour ouvrir des comptes bancaires et prendre des crédits en son nom. Il a donc dû passer plusieurs mois à prouver qu’il n’était pas responsable de ces dettes et à réparer son dossier de crédit. David Kirchhoff a eu une expérience douloureuse de rétablissement de son identité après que ses informations aient été utilisées pour commettre des actes frauduleux, ce qui a affecté sa santé mentale et son bien-être financier.

Cet exemple montre que le vol d’identité numérique peut avoir des conséquences graves affectant leur situation financière, leur réputation et leur tranquillité d’esprit.

Réflexes à avoir pour éviter le plus possible les vols identités numériques :

  • Utiliser des mots de passe forts et uniques.
  • Activer l’authentification à deux facteurs.
  • Surveiller vos comptes bancaires et de crédit.
  • Éviter de partager des informations personnelles en ligne.
  • Se méfier des tentatives de phishing.
  • Installer des logiciels antivirus et utiliser un pare-feu.
  • Faire attention aux Wi-Fi publics.
  • Garder vos appareils et logiciels à jour.

Exploitation des cookies

Un site non sécurisé peut transmettre des cookies sans protection : en capturant un cookie de session, un pirate peut accéder à un compte utilisateur sans avoir besoin du mot de passe.

Exemple précis : Cambridge Analytica, une société de data mining, a exploité les cookies et les données personnelles de millions d’utilisateurs de Facebook sans leur consentement. En accédant aux informations des utilisateurs via une application tiers, les utilisateurs ont accepté de partager leurs données personnelles et celles de leurs amis, ce qui a permis à Cambridge Analytica de collecter des informations détaillées sur des millions d’individus. Ces informations ont été utilisées pour cibler des publicités politiques pendant la campagne présidentielle américaine de 2016.

Suite à cette exploitation de cookies, Facebook a fait face à des amendes, et l’incident a soulevé des préoccupations concernant la sécurité des données et la protection de la vie privée.

Se protéger des exploitations de cookies :

  • Refuser les cookies non essentiels.
  • Nettoyer les cookies stockés dans votre navigateur pour limiter le suivi de vos activités.
  • Privilégier des navigateurs qui accordent plus d’importance à la confidentialité, comme Brave, Firefox (avec extensions de confidentialité), ou Tor.
  • Utiliser des extensions comme Privacy Badger, uBlock Origin, ou Ghostery pour bloquer le suivi par les cookies.
  • Activer le mode navigation privée pour ne pas enregistrer les cookies ou l’historique de navigation.
  • Éviter d’utiliser des boutons de partage ou de connexion (comme « Se connecter avec Facebook »), qui utilisent souvent des cookies pour suivre vos activités.
  • Etre attentif aux types de cookies utilisés par un site et leur(s) objectif(s) avant d’accepter.
  • Se déconnecter des sites après utilisation pour éviter un suivi prolongé avec des cookies de session.

Projets

Linkin Park

Linkin Park est un groupe de rock et de métal américain formé en 1996. Il est actuellement composé de Emily Armstrong au chant à la suite du décès de Chester Bennington, Colin Brittain à la batterie à la suite du départ de Rob Bourdon, Mike Shinoda au chant(rap), à la guitare rythmique et au clavier, Brad Delson à la guitare solo, Dave Farrell à la guitare basse et Joe Hahn aux platines, effets et mixages.

Le fond

C’est un dégradé allant du blanc au noir grâce à une boucle for qui dessine les traits de couleurs au fur et à mesure. J’ai choisis ces teintes car le symbole et le nom du groupe sont habituellement représentés en noir avec un fond blanc ou inversement.

from turtle import *
colormode(255)
Screen()
setup(800, 600)
penup()
colormode(255)
speed(10)
goto(-400, -300)
pendown()

for i in range(600):
    pencolor(255 - round(i / (600 / 255)), 255 - round(i / (600 / 255)), 255 - round(i / (600 / 255)))
    forward(800)
    goto(-400,-300+i)

Le logo

Le logo du groupe Linkin Park a beaucoup changé au cours du temps et cette forme est sûrement ma préférée. Chaque angle de l’hexagone est censé symboliser un des membres de la bande (six au total). Pour le codage du logo ; il est composé d’un goto(x,y) pour définir où la figure commencera. Ensuite, la fonction circle() me servira deux fois pour les deux arc de cercle et enfin je ferais tous les angles à l’aide des fonction setheading() pour définir l’angle de direction du trait et forward() pour définir la longueur de ce trait.

pencolor(209,209,209)
pensize(10)
penup()
goto(0,250)
pendown()
circle(-100,-170)

setheading(70)
forward(145)

setheading(115)
forward(-90)

setheading(-180)
forward(108)

setheading(70)
forward(153)

setheading(0)
circle(-100,190)

L’écriture de Linkin

Pour écrire « Linkin » j’ai d’abord définit le i avec la fonction def pour le réutiliser dans d’autre lettres comme la barre du L, du N, du K et les deux barres du dernier N. J’ai ensuite utilisé les fonctions goto(x,y) pour commencer de nouvelles lettres aux coordonnées voulues, setheading() et forward() comme pour le logo. Mais j’ai aussi commencé à appliquer les fonction begin_fill() et end_fill() qui permette de remplir une portion de dessin de la couleur définit par fillcolor(r,g,b) tant que tous les pointes sont reliés.

penup()
goto(-240,20)
pendown()
# linkin park
# def i
def i(r,g,b,pensize):
    pencolor(r,g,b)
    fillcolor(r,g,b)
    
    begin_fill()
    
    setheading(0)
    forward(30)
            
    setheading(-90)
    forward(100)
    
    setheading(-180)
    forward(30)
    
    setheading(90)
    forward(100)
    
    end_fill()

# L
i(60,60,60,pensize(5))

setheading(-90)
forward(70)

fillcolor(60,60,60)
begin_fill()

setheading(0)
forward(70)

setheading(-90)
forward(30)

setheading(-180)
forward(70)

setheading(90)
forward(30)

end_fill()

penup()
goto(-155,20)
pendown()
# I
i(60,60,60,pensize(5))

penup()
goto(-110,20)
pendown()
#N
i(60,60,60,pensize(5))

penup()
goto(-80,20)
pendown()

begin_fill()

setheading(-55)
forward(60)

setheading(90)
forward(49)

setheading(0)
forward(30)

setheading(-90)
forward(100)

forward(50)

setheading(125)
forward(111)

setheading(90)
forward(59)

end_fill()

penup()
goto(-2,20)
pendown()
# K
i(60,60,60,pensize(5))

penup()
goto(28,-20)
pendown()

begin_fill()

setheading(50)
forward(52)

setheading(0)
forward(40)

setheading(-130)
forward(65)

setheading(-52)
forward(65)

setheading(-180)
forward(40)

setheading(130)
forward(52)

setheading(90)
forward(30)

end_fill()

penup()
goto(114,20)
pendown()
# I
i(60,60,60,pensize(5))

penup()
goto(158,20)
pendown()
# N
i(60,60,60,pensize(5))

penup()
goto(188,20)
pendown()

begin_fill()

setheading(-55)
forward(60)

setheading(90)
forward(49)

setheading(-90)
forward(100)

setheading(125)
forward(60)

setheading(90)
forward(50)

end_fill()

penup()
goto(222,20)
pendown()

i(60,60,60,pensize(5))

L’écriture de Park

Pour l’écriture de « Park », j’ai procédé de la même manière qu’avec « Linkin » : j’ai crée une fonction avec def qui a la même forme que la fonction i mais avec des mesures plus grandes et qui s’appelle donc I(i majuscule). J’ai réutilisé les fonctions circle() pour les boucles du P et du R ; c’est d’ailleurs le même bout de code grâce aux fonctions setheading() et forward() (on aurait été de changer toutes les données avec des goto(x,y). Le K, lui, est le même que le petit k mais avec des mesures plus grandes. Pour l’intérieur du A j’ai fais un triangles avec les fonctions setheading() et forward() puis j’ai essayé de le remplis avec begin_fill() et end_fill() de la même couleur que le fond.

penup()
goto(-240,-90)
pendown()
# park
# def I
def I(r,g,b,pensize):
    pencolor(r,g,b)
    fillcolor(r,g,b)
    
    begin_fill()
    
    setheading(0)
    forward(40)
            
    setheading(-90)
    forward(130)
    
    setheading(-180)
    forward(40)
    
    setheading(90)
    forward(130)
    
    end_fill()

# P
I(0,0,0,pensize(5))

penup()
goto(-200,-90)
pendown()

begin_fill()

setheading(0)
forward(30)
circle(-40,180)
setheading(-180)
forward(30)

setheading(90)
forward(29)
setheading(0)
forward(10)
circle(12,180)
setheading(-180)
forward(10)
setheading(90)
forward(27)

end_fill()

penup()
goto(-138,-90)
pendown()
# A

begin_fill()

setheading(0)
forward(85)

setheading(-75)
forward(135)

setheading(-180)
forward(45)

setheading(112)
forward(20)

setheading(-180)
forward(26)

setheading(-115)
forward(20)

setheading(-180)
forward(45)

setheading(70)
forward(105)

setheading(130)
forward(41)

end_fill()

penup()
goto(-91,-180)
pensize(2)
pencolor(219,219,219)
fillcolor(219,219,219)
pendown()

begin_fill()

setheading(0)
forward(15)

setheading(101)
forward(40)

setheading(-101)
forward(40)

end_fill()

penup()
goto(-2,-90)
pencolor(0,0,0)
fillcolor(0,0,0)
pendown()
# R

I(0,0,0,pensize(5))

penup()
goto(38,-90)
pendown()

begin_fill()

setheading(0)
forward(30)
circle(-40,180)
setheading(-180)
forward(30)

setheading(90)
forward(29)
setheading(0)
forward(10)
circle(12,180)
setheading(-180)
forward(10)
setheading(90)
forward(27)

end_fill()

penup()
goto(70,-165)
pendown()

begin_fill()

setheading(-60)
forward(67)

setheading(-90)
forward(60)

setheading(122)
forward(130)

setheading(90)
forward(26)

setheading(0)
forward(27)

end_fill()

penup()
goto(120,-90)
pendown()
# K

I(0,0,0,pensize(5))

penup()
goto(130,-175)
pendown()

begin_fill()

setheading(50)
forward(110)

setheading(0)
forward(50)

setheading(-130)
forward(80)

setheading(-52)
forward(80)

setheading(-180)
forward(50)

setheading(130)
forward(115)

setheading(90)
forward(30)

end_fill()

Image finale

Télécharger le script en .py :

Voici le script complet !

Art

Paysage japonais

Un paysage où un monument de la culture japonaise se mélange avec un fond naturel est magnifique. Et bien que le Japon soit le pays du soleil, levant nous allons le mettre en valeur avec, cette fois-ci, la lune, à travers des montagnes et des torii. Ces derniers symbolisent un portail entre l’enceinte sacrée et l’environnement profane. C’est pour cette raison qu’il y en a à l’entrée de certains sanctuaires.

Organisation du script

Notre script sera expliqué par étape, de l’arrière plan au premier. La fonction goto sera beaucoup utilisée afin de faire des tracés contrôlés ainsi que pensize() pour la largeur du tracé du stylo, color() pour choisir la couleur du crayon, circle() pour faire un cercle et for i in range pour faire des boucles.

L’arrière-plan

from turtle import*    
pensize (42)    
color("#FFFFFF")

a = -40   
col = ["#FFFFFF","#9BF7F7","#41F9FF","#00CDFF","#008FFF","#0059FF","#003AFF", "#4D00FF","#33079A", "#000000"]    
nb_col = len(col)    
color("#FFFFFF")   
goto(0, 50)    
circle(40)

a = 0  

for i in range (0,10,1):
    goto(0, 40-a)
    color(col[i%nb_col])
    circle(40+a)
    a = a +30
    goto(0, 40-a)
    circle(40+a)
    a = a +30
    goto(0, 40-a)
    circle(40+a)
    a = a +40

Ici, nous montrons que notre script est importé de Turtle, ce module nous permettant de contrôler un crayon pour tracer diverses formes géométriques.

Le fond de notre code n’est pas centré mais c’est fait exprès. Nous avons donc mis la taille du crayon à 42 avec la fonction : pensize (42), ensuite a = -40 nous a servis à déplacer le centre du cercle de base, soit, dans notre cas de le décaler vers la haut. Puis nous avons listé les différentes couleurs utilisées dans tous ces cercles avec col = [ ]. Le goto(0, 50) nous emmènera ensuite aux coordonnées données (donc (0, 50)) puis tracera des cercles de différentes tailles et de différentes couleurs grâce à la fonction cercle circle(40) et à la boucle for i in range (0,10,1):.

Les premières montagnes

color("#42392C")
goto(0, -80)
goto(100, 90)
goto(150,80)
goto(230,150)
goto(270,250)
goto(300,150)
goto(500,20)
goto(580,30)
goto(630,10)
goto(640,-40)
goto(0,-80) 

goto(0, -40)
goto(100,50)
goto(120,40)
goto(200,100)
goto(320,250)
goto(500,30)
goto(580,-10)
goto(630,20)
goto(640,-80)
goto(0,-70) 

goto(0, -40)
goto(120,40)
goto(200,80)
goto(320,230)
goto(500,00)
goto(580,00)
goto(630,000)
goto(640,-60)
goto(0,-50) 

goto(0, -40)
goto(120,33)
goto(200,60)
goto(320,210)
goto(500,00)
goto(580,00)
goto(630,000)
goto(640,-40)
goto(0,-20) 

goto(0, -40)
goto(120,20)
goto(200,50)
goto(320,190)
goto(500,00)
goto(580,00)
goto(630,000)
goto(640,-30)
goto(0,-10) 

goto(0, -40)
goto(120,00)
goto(200,20)
goto(320,170)
goto(500,00)
goto(580,00)
goto(630,000)
goto(640,-10)
goto(0,-00) 

goto(0, -40)
goto(120,00)
goto(200,10)
goto(320,160)
goto(580,00)
goto(630,000)
goto(640,-10)
goto(0,-00)  

goto(320,70)
goto(500,50)
goto(320,60)
goto(320,40)
goto(320,50)
goto(320,30) 

goto(0,-10)
goto(-200,50)
goto(-300,10)
goto(-430,160)
goto(-500,15)
goto(-600,250)
goto(-600,-10)

Nous comprenons ici que les goto sont et seront à l’honneur de ce script ! Ils sont simples à utiliser et donc à comprendre. La couleur des premières montagnes, elle, est encore une fois définie par color(« #42392C »).

Voici le résultat de tous ces goto ! Nous avons un début de montagne avec quelques imperfections mais pas d’inquiétudes ! Ce script fonctionne par plan donc comme un pochoir. Ici, les goto ont donc servis à diriger le stylo d’un point à un autre jusqu’à ce que nous ayons ce résultat

Encore des montagnes

color("#6F6556")
goto(0, 0)
goto(80,40)
goto(120,00)
goto(200,10)
goto(430,200)
goto(630,0)
goto(0,-00)

goto(0, 0)
goto(200,0)
goto(430,180)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(430,160)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(430,150)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,150)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,140)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,130)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,120)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,110)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,100)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,90)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,80)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,70)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,60)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,60)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,50)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,40)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,40)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,30)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,20)
goto(630,0)

goto(0, 0)
goto(200,0)
goto(400,10)
goto(630,0)

goto(0,0)
goto(0,-10)
goto(-200,30)
goto(-300,00)
goto(-400,150)
goto(-500,5)
goto(-600,200)
goto(-600,-10)
goto(0,0)

Ces montagnes sont faites de la même manière que les premières : le changement de couleur avec color(« #6F6556 ») et les goto ! Voyons maintenant le résultat en image…

Et voilà nos montagnes finies ! Mais il reste encore quelques étapes pour donner un sens à notre titre.

Le sol bleu

up()
goto(0,-400)
down()
col = ["#000000","#33079A","#4D00FF", "#003AFF", "#0059FF","#008FFF", "#00CDFF", "#41F9FF","#9BF7F7", "#FFFFFF","#9BF7F7","#41F9FF","#00CDFF","#008FFF","#0059FF","#003AFF","#4D00FF","#33079A","#000000"]
nb_col = len(col) 
recup = 0
k = -50
for i in range (0,50):
    color(col[i%nb_col])
    for i in range (0,3):
        k += 40
        goto(1000-k,-35)
        goto(1300-k,-500)

Comme pour l’arrière-plan, les couleurs sont définies grâce à col = [ ].

Avec l’image, nous pouvons plus facilement comprendre la présence de la boucle for i in range (0,50) qui nous a aidé à répéter tous les traits positionnés en diagonale pour nous éviter de les faire un à un avec des goto par exemple !

Les torii

pensize(42)
up()
goto(160,-220)
down()

color("#FF7000")
goto(160,100)
goto(-160,100)
goto(-160,-220)
goto(-160,100)
goto(-220,100)
goto(220,100)
goto(160,100)
goto(160,160)
goto(160,100)
goto(-160,100)
goto(-160,160)
goto(-220,160)
goto(220,160)

pensize(25)
up()
goto(80,-150)
down()

color("#E76E00")
goto(80,20)
goto(-80,20)
goto(-80,-150)
goto(-80,20)
goto(-120,20)
goto(120,20)
goto(80,20)
goto(80,60)
goto(80,20)
goto(-80,20)
goto(-80,60)
goto(-120,60)
goto(120,60)

pensize(12)
up()
goto(40,-120)
down()

color("#CB6100")
goto(40,-30)
goto(-40,-30)
goto(-40,-120)
goto(-40,-30)
goto(-60,-30)
goto(60,-30)
goto(40,-30)
goto(40,-10)
goto(40,-30)
goto(-40,-30)
goto(-40,-10)
goto(-60,-10)
goto(60,-10)

pensize(6)
up()
goto(20,-100)
down()

color("#A95100")
goto(20,-60)
goto(-20,-60)
goto(-20,-100)
goto(-20,-60)
goto(-30,-60)
goto(30,-60)
goto(20,-60)
goto(20,-50)
goto(20,-60)
goto(-20,-60)
goto(-20,-50)
goto(-30,-50)
goto(30,-50)

Voici le code de nos torii. A chaque nouveau pensize( ), il y en a un nouveau ! Nous avons d’abord le placement du crayon avec up( ), goto( ) et down( ) dans cet ordre là. Cela permet de se déplacer en décidant quand nous voulons écrire.

Cette fois-ci, l’image est sans le fond pour mieux observer le choix de couleur ainsi que les tailles décroissantes.

Le résultat final

Et enfin, notre résultat ! Nous avons également rajouté deux ligne, une verte et une marron pour montrer le début des montagnes mais ces lignes servent aussi à cacher la délimitation qu’il y avait pour les traits droits en diagonale.

Télécharger le .py