
- la NumWorksdont l'applicationPythonintègre directementturtle
- les Casio Graph 35+E IIetGraph 90+Edont l'applicationPythonintègre directementturtle
- les TI-Nspire CX IIsur lesquelles on peut rajouter un moduleturtleofficiel à l'environnementPython
- et sur les TI-83 Premium CE Edition Python(France),TI-84 Plus CE-T Python Edition(Europe)etTI-84 Plus CE Python(Amérique du Nord), on pouvait jusqu'ici rajouter un module officiel à l'applicationPython
Ils apparaissaient au menu uniquement lorsque l'on était en train d'éditer un script comportant une ligne les important
from ce_turtl import
, et pas un simple import ce_turtl
)Lors de la création d'un script, afin d'obtenir le menu te permettant de saisir facilement et rapidement les appels aux différentes méthodes de

Mais attends car le pire, c'est que c'était encore loin d'être le pire...



Aucun effort ne semblait avoir été fait pour coller au standard : des méthodes essentielles manquantes, des noms de méthodes fantaisistes, des arguments attendus différant du standard dans leur nombre, leur ordre ou leur type... et ne parlons même pas encore du comportement attendu.
Si tu ne faisais pas l'effort d'adapter ton code, il t'était fort probable d'obtenir n'importe quoi. Voici ci-contre ce que donne un escargot sur ordinateur et l'ensemble de la concurrence, et sur

Quel professeur allait perdre du temps à faire apprendre un sous-dialecte du

Dans ce contexte nous comprenons parfaitement qu'il faille se limiter et faire des choix.
Mais nous persistons à penser que l'on pouvait faire largement mieux niveau compatibilité et conformité que ce que nous a offert

Ce nouveau module

Donc plus de saisie fastidieuse, une seule touche suffit à coller la ligne d'importation et alors faire apparaître tout le contenu du nouveau module

Mais reste à voir pour le reste. Découvrons donc maintenant ensemble si le nouveau module
A) Informations et fonctionnement
Go to top
- TURTLE.8xv
- GRID.8xv
Le fichier
- la conversion du cose source PythonenbytecodePython
- l'énumération des éléments à mettre au menu à partir de lignes de commentaires spécialement formatées à cette fin dans le code source
Contrairement à

- Code: Select all
from ti_image import *
load_image("GRID")
show_image(0, 0)
show_screen()

- Code: Select all
from turtle import *
t = Turtle()
t.circle(52)
t.done()


Tu peux également t'amuser à remplacer le fond d'écran du module
Rappelons que comme le
.done()
qui attend l'appui sur la touche annul
clearsur les

En pratique la méthode
B) Le tour des menus
Go to top- Move: pour les déplacements de la tortue
- Draw: pour les tracés autres que des segments(cercle, texte, remplissage, ...)
- Pen: pour tout ce qui concerne le stylo(levé, baissé, couleur, taille)
- Settings: pour différents réglages(effacement du tracé, cacher/montrer la tortue, désactiver l'affichage de la grille comme déjà vu, vitesse)
- State: pour interroger l'état de la tortue(position, orientation)
C) Premier script comparatif (ce_turtl + turtle)
Go to topce_turtl | turtle |
|
|
Déjà ce script met en évidence un bug en
Le bug n'est en fait ni dans
Si en plus on fait rentrer la concurrence dans l'équation, il n'est pas envisageable pour nous de maintenir jusqu'à 7 versions différentes pour chaque script testé...
D) Tests de conformité comparatifs (tous modèles)
Go to topVoici des scripts en ce sens, une amélioration majeure de ceux développés dans le code de notre test de rentrée
- Code: Select all
_turtle_errors = 0
def _turtle_error(k):
global _turtle_errors
_turtle_errors |= 1 << k
# import turtle
try:
import turtle
if not "forward" in dir(turtle):
turtle = turtle.Turtle()
except ImportError: #TI-83 Premium CE
from ce_turtl import turtle
_turtle_error(0)
try:
turtle.clear()
except:
turtle.reset()
# can turtle be patched ?
_fix_turtle = True
try:
def _fixcolor(c): return c
turtle._fixcolor = _fixcolor
except:
_fix_turtle = False
# test color() + pencolor() + fillcolor()
if not "pencolor" in dir(turtle):
pencolor = turtle.color
_turtle_error(1)
else:
pencolor = turtle.pencolor
if not "color" in dir(turtle):
_turtle_error(2)
if not "fillcolor" in dir(turtle):
_turtle_error(12)
if not "clear" in dir(turtle):
_turtle_error(13)
if not "reset" in dir(turtle):
_turtle_error(14)
if not "heading" in dir(turtle):
_turtle_error(11)
# test color argument types
_color_types = 0
try:
pencolor([0, 0, 0])
_color_types |= 1 << 0
except: _turtle_error(4)
try:
pencolor((0, 0, 0))
_color_types |= 1 << 1
except: _turtle_error(5)
try:
pencolor(0, 0, 0)
_color_types |= 1 << 2
except: _turtle_error(6)
try:
pencolor("black")
_color_types |= 1 << 3
except: _turtle_error(7)
# test colormode()
if not "colormode" in dir(turtle):
_turtle_error(3)
# test color strings
_colors_fix={
"blue":(0,0,1),
"green":(0,1,0),
"red":(1,0,0),
"cyan":(0,1,1),
"yellow":(1,1,0),
"magenta":(1,0,1),
"white":(1,1,1),
"orange":(1,0.65,0),
"purple":(0.66,0,0.66),
"brown":(0.75,0.25,0.25),
"pink":(1,0.75,0.8),
"grey":(0.66,0.66,0.66),
"black":(0,0,0),
}
for c in tuple(_colors_fix.keys()):
try:
pencolor(c)
_colors_fix.pop(c)
except: pass
if len(_colors_fix):
if _color_types & 1 << 3:
_turtle_error(8)
# test circle(,)
try: turtle.circle(0,0)
except:
_turtle_error(9)
# test for unfixable missing functions
_missing_fct=["write","pensize","dot"]
for f in tuple(_missing_fct):
try:
eval("turtle."+f)
_missing_fct.remove(f)
except: pass
if len(_missing_fct):
_turtle_error(15)
_missing_alias=[
["backward","back","bk"],
["forward","fd"],
["right","rt"],
["left","lt"],
["position","pos"],
["goto","setpos","setposition"],
["setheading","seth"],
["pendown","pd","down"],
["penup","pu","up"],
["pensize","width"],
["showturtle","st"],
["hideturtle","ht"],
]
for aliases in tuple(_missing_alias):
validf = None
for f in tuple(aliases):
try:
eval("turtle."+f)
validf = f
aliases.remove(f)
break
except: pass
for f in tuple(aliases):
try:
eval("turtle."+f)
aliases.remove(f)
except: pass
if not len(aliases):
_missing_alias.remove(aliases)
else:
aliases.insert(0, validf)
if len(_missing_alias):
_turtle_error(16)
try:
turtle.position()
except:
try:
turtle.pos()
except:
_turtle_error(10)
- Code: Select all
from ttl_chk import *
from ttl_chk import _fix_turtle, _turtle_errors, _colors_fix, _missing_fct, _missing_alias
def turtle_diags():
print("Type: " + str(type(turtle)))
print("Patchable: " + (_fix_turtle and "yes" or "no"))
errors_msg = (
"No <import turtle>",
"No pencolor()",
"No color()",
"No colormode()",
"No color as list",
"No color as tuple",
"No color as args",
"No color as string",
"Missing colors strings: ",
"No circle(,angle)",
"Can't get position()",
"No heading()",
"No fill",
"No clear()",
"No reset()",
"Other missing: ",
"Missing aliases: ",
)
errors = 0
for k in range(len(errors_msg)):
if _turtle_errors & 1 << k:
errors += 1
msg = "Err " + str(k) + ": " + errors_msg[k]
if k == 8:
msg += str(len(_colors_fix)) + " " + str(tuple(_colors_fix.keys()))
if k == 15:
msg += str(len(_missing_fct)) + " " + " ".join(_missing_fct)
if k == 16:
l = []
for v in _missing_alias:
l.extend(v[1:])
msg += str(len(l)) + " " + " ".join(l)
print(msg)
print(str(errors) + " error" + ((errors > 1) and "s" or ""))
turtle_diags()
Voici ce que nous racontent les scripts sur calculatrices
TI-83PCE/84+CE ce_turtl | TI-83PCE/84+CE turtle | TI-Nspire CX II turtle |
![]() ![]() | ![]() ![]() | ![]() |
- ligne d'importation non standard (à cause du nom)
- réglage non standard de la couleur du tracé, utilisant la méthode .color()au lieu de.pencolor()
- absence de la méthode .colormode()et donc pas de possibilité de modifier le mode des coordonnées de couleurs(maximum de chaque composante à 1 ou à 255)
- refus des paramètres de couleurs sous forme de tuple, liste ou chaîne de caractères, les fonctions concernée prennent obligatoirement 3 paramètres avec les valeurs de chaque composante
- la méthode .circle()ne prend qu'un seul argument et ne gère donc pas les arcs de cercle
- absence des méthodes de remplissage
- absence de la méthode d'effacement et réinitialisation de la tortue .reset()
- absence de la méthode d'écriture de texte .write()
- absence de 18 alias courts pour les noms de méthodes
Son code source ne semblerait pas dériver de celui de
Restent donc :
- absence de la méthode .color()
- absence de la méthode .colormode()et donc pas de possibilité de modifier le mode des coordonnées de couleurs(maximum de chaque composante à 1 ou à 255)
- refus des paramètres de couleurs sous forme de liste ou chaîne de caractères, mais les tuples sont acceptés
- la méthode .circle()ne prend qu'un seul argument et ne gère donc pas les arcs de cercle
- absence de la méthode d'effacement et réinitialisation de la tortue .reset()
- absence de 16 alias courts pour les noms de méthodes
Le
Voici pour référence les résultats du même test chez la concurrence :
Casio Graph 90/35+E II | NumWorks | |
![]() | ![]() | ![]() |

Voici un script qu'il suffit d'importer à la place du module

- Code: Select all
from ttl_chk import *
from ttl_chk import _color_types, _turtle_errors, _colors_fix, _missing_fct, _missing_alias
_fix_turtle = True
def nop(*argv): return None
idty = lambda c: c
try: # can turtle be patched ?
turtle._fixcolorlist = idty
turtle._fixcolorval = idty
turtle._fixcolorstring = idty
turtle._fixcolorargs = idty
turtle._fixcolor = lambda c: turtle._fixcolorlist(turtle._fixcolorval(turtle._fixcolorstring(turtle._fixcolorargs(c))))
except:
_fix_turtle = False
if _fix_turtle:
# fix color() + pencolor()
if _turtle_errors & 2:
turtle.pencolor = turtle.color
if _turtle_errors & 4:
turtle.color = turtle.pencolor
if _turtle_errors & 0x1000:
turtle.fillcolor, turtle.begin_fill, turtle.end_fill = idty, nop, nop
_fix_color = _color_types & 0b11 != 0b11 or not "colormode" in dir(turtle)
# fix list/tuple color argument
if _color_types & 0b11 == 0b10:
def _fixcolorlist(c): return type(c) is list and tuple(c) or c
turtle._fixcolorlist = _fixcolorlist
if _color_types & 0b11 == 0b01:
def _fixcolorlist(c): return type(c) is list and list(c) or c
turtle._fixcolorlist = _fixcolorlist
if not _color_types & 4:
def _fixcolorargs(*argv):
return len(argv) != 1 and argv or argv[0]
if _fix_color:
turtle._color = turtle.color
turtle._pencolor = turtle.pencolor
turtle._fillcolor = turtle.fillcolor
if _color_types & 0b11:
def _color(*argv):
if not(len(argv)): return turtle._color()
turtle._color(turtle._fixcolor(len(argv) > 1 and argv or argv[0]))
def _pencolor(*argv):
if not(len(argv)): return turtle._pencolor()
turtle._pencolor(turtle._fixcolor(len(argv) > 1 and argv or argv[0]))
def _fillcolor(*argv):
if not(len(argv)): return turtle._fillcolor()
turtle._fillcolor(turtle._fixcolor(len(argv) > 1 and argv or argv[0]))
else:
def _color(*argv):
if not(len(argv)): return turtle._color()
c = turtle._fixcolor(len(argv)>1 and argv or argv[0])
turtle._color(c[0], c[1], c[2])
def _pencolor(*argv):
if not(len(argv)): return turtle._pencolor()
c = turtle._fixcolor(len(argv)>1 and argv or argv[0])
turtle._pencolor(c[0], c[1], c[2])
def _fillcolor(*argv):
if not(len(argv)): return turtle._fillcolor()
c = turtle._fixcolor(len(argv)>1 and argv or argv[0])
turtle._fillcolor(c[0], c[1], c[2])
turtle.color = _color
turtle.pencolor = _pencolor
turtle.fillcolor = _fillcolor
# fix colormode()
if _turtle_errors & 8:
# test color mode
try:
turtle.pencolor([255, 0, 0])
_color_mode = 255
except: _color_mode = 1.0
turtle._color_mode = _color_mode
def _colormode(*argv):
if not(len(argv)): return turtle._color_mode
if int(argv[0]) in (1, 255):
turtle._color_mode = int(argv[0]) == 255 and 255 or 1.0
turtle.colormode = _colormode
if _color_mode == 255:
turtle._fixcolorval = lambda c: int(turtle._color_mode) == 1 and type(c) in (list, tuple) and [int(c[k] * 255) for k in range(3)] or c
else:
turtle._fixcolorval = lambda c: turtle._color_mode == 255 and type(c) in (list, tuple) and [c[k] / 255 for k in range(3)] or c
# fix color strings
if len(_colors_fix):
def _fixcolorstring(c):
if type(c) is str and c in _colors_fix:
c = _colors_fix[c]
if turtle.colormode() == 255:
c = [int(c[k] * 255) for k in range(3)]
return c
turtle._fixcolorstring = _fixcolorstring
# fix circle(,)
if _turtle_errors & 0x200:
turtle._circle = turtle.circle
def _circle(r, a=360): turtle._circle(r)
turtle.circle = _circle
if len(_missing_fct):
for f in _missing_fct:
exec("turtle."+f+"=nop")
if len(_missing_alias):
for aliases in _missing_alias:
validf = aliases[0]
for f in aliases[1:]:
exec(validf and "turtle."+f+"=turtle."+validf or "turtle."+f+"=nop")
# fix clear()
if _turtle_errors & 0x2000:
turtle.clear = turtle.reset
# fix reset()
if _turtle_errors & 0x4000:
turtle.reset = turtle.clear
Nous pouvons envisager à partir de maintenant d'avoir une unique version de chaque script utilisable sur l'ensemble des machines.

E) 12 exemples comparatifs (tous modèles)
Go to topCela va justement être l'occasion de voir si il y a d'autres problèmes qui n'ont pas pu être détectés automatiquement
Exemple n°1 : Rosace à la Casio
Go to top
Précisons que les problèmes récurrents ne seront pas systématiquement réévoqués sur chaque exemple.
Commençons par une petite

- Code: Select all
from ttl_fix import *
turtle.speed(0)
turtle.pensize(1)
turtle.pencolor("black")
for i in range(12):
turtle.left(30)
for i in range(8):
turtle.forward(30)
turtle.left(45)
try: turtle.show() #TI-83 Premium CE
except: pass
C'est la base, tout-le-monde s'en sort à peu près, mais tu peux déjà constater quelques légers écarts.
Ici l'appel
turtle.pensize(1)
produisait l'effet d'un turtle.pensize(2)
.Et plus généralement un appel
turtle.pensize(s)
produisait l'effet d'un turtle.pensize(s+1)
.L'écran de la
Exemple n°2 : Fractale de Koch
Go to top
- Code: Select all
from ttl_fix import *
def koch(n, l):
if n==0:
turtle.forward(l)
else:
koch(n - 1, l / 3)
turtle.left(60)
koch(n - 1, l / 3)
turtle.right(120)
koch(n - 1, l / 3)
turtle.left(60)
koch(n - 1, l / 3)
turtle.speed(0)
turtle.pensize(1)
turtle.pencolor("blue")
turtle.penup()
turtle.goto(-180, -50)
turtle.pendown()
koch(4, 360)
try: turtle.show() #TI-83 Premium CE
except: pass
Le cas de

Exemple n°3 : Flocons de Koch
Go to top
- Code: Select all
from ttl_fix import *
def rotate_list(l):
l[1:],l[0] = l[0:-1],l[-1]
def koch(n, l):
if n<=0:
turtle.forward(l)
else:
koch(n - 1, l / 3)
turtle.left(60)
koch(n - 1, l / 3)
turtle.right(120)
koch(n - 1, l / 3)
turtle.left(60)
koch(n - 1, l / 3)
def flock(n, l):
koch(n, l)
turtle.right(120)
koch(n, l)
turtle.right(120)
koch(n, l)
c = [127, 255, 0]
turtle.speed(0)
turtle.colormode(255)
l = 80
for j in range(2):
for i in range(3):
n = j and 3 + i or 2 - i
s = (7 - n) // 2
turtle.penup()
turtle.goto(i*117-157, j*95-25)
turtle.pencolor(tuple(c))
turtle.pensize(s)
turtle.setheading(0)
turtle.pendown()
flock(n, l)
n += 1
rotate_list(c)
try: turtle.show() #TI-83 Premium CE
except: pass
Exemple n°4 : Sous le soleil exactement
Go to top
- Code: Select all
from ttl_fix import *
from math import exp
turtle.speed(0)
turtle.pensize(1)
turtle.colormode(1.0)
for i in range(36):
turtle.pencolor([exp(-.5 * ((i - k) / 12)**2) for k in (6, 18, 30)])
for i in range(1, 5):
turtle.forward(60)
turtle.right(90)
turtle.right(10)
try: turtle.show() #TI-83 Premium CE
except: pass
Exemple n°5 : Escargot de lumière
Go to top
- Code: Select all
from ttl_fix import *
from math import exp
turtle.speed(0)
turtle.pensize(1)
turtle.colormode(1.0)
turtle.penup()
turtle.goto(0, -20)
turtle.pendown()
for i in range(36):
turtle.pencolor([exp(-.5 * ((i - k) / 12)**2) for k in (6, 18, 30)])
turtle.circle(50 - i)
turtle.right(10)
try: turtle.show() #TI-83 Premium CE
except: pass
C'est que la méthode
Exemple n°6 : Triangles de Sierpiński
Go to top
- Code: Select all
from ttl_fix import *
def sierp(n, l):
if n == 0:
for i in range (0, 3):
turtle.forward(l)
turtle.left(120)
if n > 0:
sierp(n - 1, l / 2)
turtle.forward(l / 2)
sierp(n - 1, l / 2)
turtle.backward(l / 2)
turtle.left(60)
turtle.forward(l / 2)
turtle.right(60)
sierp(n - 1, l / 2)
turtle.left(60)
turtle.backward(l / 2)
turtle.right(60)
turtle.speed(0)
turtle.pensize(1)
turtle.penup()
turtle.backward(109)
turtle.left(90)
turtle.backward(100)
turtle.right(90)
turtle.pendown()
turtle.pencolor("red")
sierp(6, 217)
turtle.penup()
turtle.forward(400)
try: turtle.show() #TI-83 Premium CE
except: pass
Exemple n°7 : Casio Graph 90+E
Go to top
- Code: Select all
from ttl_fix import *
turtle.pencolor("black")
turtle.speed(0)
turtle.forward(40)
turtle.backward(100)
turtle.left(90)
turtle.forward(30)
turtle.right(60)
turtle.forward(60)
turtle.right(30)
turtle.forward(30)
turtle.penup()
turtle.forward(18)
turtle.right(90)
turtle.forward(60)
turtle.pendown()
turtle.right(30)
turtle.backward(30)
turtle.right(60)
turtle.forward(60)
turtle.pencolor("red")
turtle.penup()
turtle.goto(80,40)
turtle.right(140)
turtle.pendown()
turtle.circle(30)
turtle.penup()
turtle.goto(105,50)
turtle.pencolor("green")
turtle.pendown()
turtle.circle(-50)
turtle.penup()
turtle.pencolor("red")
turtle.right(21)
turtle.goto(60,20)
turtle.pendown()
turtle.circle(40,60)
turtle.penup()
turtle.pencolor("blue")
turtle.goto(-50,15)
turtle.setheading(0)
turtle.pendown()
turtle.write("CASIO")
try: turtle.show() #TI-83 Premium CE
except: pass
- Absence de la méthode turtle.write()permettant d'écrire du texte à la position de la tortue, et donc absence du motCASIOsur le rendu.
- La méthode standard
turtle.circle(r, a=360)
permet de préciser l'angle au centre en 2ème argument et ainsi de tracer des arcs de cercle, l'omission de ce paramètre donnant par défaut un angle au centre de 360° et donc un cercle. C'est utilisé ici pour tracer le pied du 9 en rouge. Sauf que l'implémentation dansne respecte pas le standard et ne gère pas ce 2ème argument. Notre script correctif intercepte le cas et empêche l'interruption du rendu sur une erreur, mais trace alors un cercle complet à la place.ce_turtl - La méthode standard
turtle.circle(r, a=360)
accepte de plus une valeur de rayon négative, inversant dans ce cas le sens de tracé. C'est utilisé ici pour tracé le 0 en vert. Sauf quene comprend pas ce cas et ne trace alors rien du tout.ce_turtl
Notons une divergence du standard chez une bonne partie des modèles concernant la méthode
Exemple n°8 : Sapin de Noël
Go to top
- Code: Select all
from ttl_fix import *
from math import sqrt
def triangle(t):
for i in range(4):
turtle.forward(t/(i%4 == 0 and 2 or sqrt(2)))
turtle.left(i==1 and 90 or not(i%2) and 135)
def etoiles():
turtle.pencolor("yellow")
turtle.pensize(2)
for i in range(8):
etoile(-60-30*(i%4)+(i>=4 and 220), (-80,10,-40,60)[i%4])
def etoile(x,y):
turtle.up()
turtle.goto(x,y)
turtle.down()
for i in range(12):
turtle.forward(10)
turtle.left(i%2 and -60 or 120)
turtle.up()
turtle.goto(0,60)
turtle.down()
turtle.pencolor("green")
turtle.pensize(5)
for i in range(4):
triangle(50+20*i)
turtle.up()
turtle.goto(0,30-40*i)
turtle.down()
turtle.pencolor("brown")
turtle.backward(10)
for i in range(4):
turtle.forward(i%2 and 40 or 20)
turtle.left(90)
etoiles()
try: turtle.show() #TI-83 Premium CE
except: pass
Bizarrement ici aussi, La
Exemple n°9 : Supernova PhiX 177
Go to top
- Code: Select all
from ttl_fix import *
def poly_reg_a(l, a):
h0 = turtle.heading()
while True:
turtle.forward(l)
turtle.left(a)
if abs(h0 - turtle.heading()) < .1:
break
turtle.colormode(255)
turtle.pensize(2)
turtle.penup()
turtle.goto(-90,16)
turtle.pendown()
turtle.pencolor((246,89,164))
try:
turtle.fillcolor((180,20,90))
turtle.begin_fill()
except: pass
poly_reg_a(180, 160)
try:
turtle.end_fill()
except: pass
try: turtle.show() #TI-83 Premium CE
except: pass

turtle.heading()
.Exemple n°10 : Champ de zinnias en été
Go to top
- Code: Select all
from ttl_fix import *
from random import randint, seed
def rotate_list(l):
l[1:],l[0] = l[0:-1],l[-1]
def poly_reg_a(l, a):
h0 = turtle.heading()
while True:
turtle.forward(l)
turtle.left(a)
if abs(h0 - turtle.heading()) < .1:
break
seed(33)
turtle.colormode(255)
turtle.pensize(1)
turtle.hideturtle()
turtle.speed(0)
c=[255,127,0]
cf=[127,255,0]
for k in range(18):
turtle.penup()
turtle.goto(randint(-200,120), randint(-100,100))
turtle.pendown()
turtle.pencolor(tuple(c))
try:
turtle.fillcolor(tuple(cf))
turtle.begin_fill()
except: pass
poly_reg_a(80, 162)
try:
turtle.end_fill()
except: pass
rotate_list(c)
rotate_list(cf)
try: turtle.show() #TI-83 Premium CE
except: pass
Exemple n°11 : Courtepointe de grand-mère
Go to top
- Code: Select all
from ttl_fix import *
def rotate_list(l):
l[1:],l[0] = l[0:-1],l[-1]
def poly_reg_a(l, a):
h0 = turtle.heading()
while True:
turtle.forward(l)
turtle.left(a)
if abs(h0 - turtle.heading()) < .1:
break
turtle.hideturtle()
turtle.speed(0)
turtle.pensize(1)
turtle.colormode(255)
c = [255, 127, 0]
for j in range(4):
for i in range(4):
turtle.penup()
turtle.goto(i*88-172, j*85-142)
turtle.pendown()
turtle.pencolor(tuple(c))
poly_reg_a(80, 140)
rotate_list(c)
try: turtle.show() #TI-83 Premium CE
except: pass
Exemple n°12 : Vitrail de Notre-Dame
Go to top
- Code: Select all
from ttl_fix import *
from math import sqrt
def rotate_list(l):
l[1:],l[0] = l[0:-1],l[-1]
def reg_poly(l, n):
for i in range(n):
turtle.forward(l)
turtle.left(360/n)
def square(l):
reg_poly(l, 4)
turtle.pencolor(0,0,0)
turtle.colormode(255)
turtle.speed(0)
turtle.pensize(3)
turtle.hideturtle()
d=200
c=[0,255,127]
turtle.penup()
turtle.goto(-d/2,-d/2)
turtle.setheading(0)
turtle.pendown()
for i in range(8):
try:
turtle.fillcolor(tuple(c))
turtle.begin_fill()
except: pass
square(d)
try:
turtle.end_fill()
except: pass
turtle.penup()
turtle.forward(d/2)
turtle.left(45)
turtle.pendown()
d/=sqrt(2)
rotate_list(c)
try: turtle.show() #TI-83 Premium CE
except: pass
Conclusion
Go to topLa conformité au standard de
Qui plus est

Des possibilités et facilités de tracés largement accrues en conséquence, de quoi inviter encore plus les élèves à tester et créer !

Aucun problème sur
En effet à partir d'un appel
Des formes à remplir trop complexes ou trop nombreuses déclencheront une erreur de mémoire insuffisante, et les exemples précédents de remplissages les plus complexes n'en étaient pas bien loin.
C'est franchement dommage et rageant de devoir ainsi se brider dans l'exploitation de cette formidable possibilité...

Téléchargements
Go to top- pack de mises à jour 5.7pour , ou séparément :
- Système 5.7pour
- (nécessite le système5.7pour fonctionner)