π
<-

Python turtle : test compatibilité Casio NumWorks

Python turtle : test compatibilité Casio NumWorks

Unread postby critor » 06 Apr 2020, 13:36

Dans sa prochaine mise à jour gratuite désormais imminente pour Graph 35+E II et Graph 90+E, Casio va rajouter de formidables possibilités graphiques à son application Python sous la forme de deux modules importables :
  • matplotl (en fait un matplotlib.pyplot)
  • turtle
Nous allons traiter aujourd'hui de la compatibilité du module turtle, par rapport aux solutions concurrentes (calculatrice NumWorks) et au Python complet pour ordinateur.

11075Nous ne disposons certes pas d'une préversion de la mise à jour de Casio. Toutefois, ce dernier a déjà diffusé et illustré plusieurs exemples qui permettent déjà de se faire une petite idée.

On commence par une petite rosace; tout possesseur de Graph 35+E II sait que Casio adore ça : ;)
CasioNumWorksordi
Code: Select all
from turtle import *

speed(0)
for i in range(12):
  left(30)
  for i in range(8):
    forward(30)
    left(45)

Le code d'exemple fourni par Casio passe ici sans problème sur NumWorks et sur ordi. :)



On poursuit maintenant avec le flocon de Koch :
CasioNumWorksordi
Code: Select all
from turtle import *

def koch(n, l):
  if n==0:
    forward(l)
  else:
    koch(n-1, l/3)
    left(60)
    koch(n-1, l/3)
    right(120)
    koch(n-1, l/3)
    left(60)
    koch(n-1, l/3)

pencolor("blue")
penup()
goto(-180, -50)
pendown()
koch(4, 360)

Ici encore aucun problème, compatibilité totale ! :)



Nous arrivons maintenant à un soleil. Mais ici hélas, le code de Casio ne marche pas sur NumWorks :
Code: Select all
from math import exp
from turtle import *
for i in range(1,37):
  red=(exp(-0.5 * ((i-6)/12)**2))
  green=(exp(-0.5 * ((i-18)/12)**2))
  blue=(exp(-0.5 * ((i-30)/12)**2))
  pencolor([red, green, blue])
  for i in range(1, 5):
    forward(60)
    right(90)
    right(10)

Le problème semble ici être que la Casio et la NumWorks n'utilisent pas par défaut le même système de coordonnées pour les composantes couleurs en turtle :
  • nombre flottant de 0.0 à 1.0 sur Casio
  • nombre entier de 0 à 255 sur NumWorks
Qui a raison ? Il semble que ce soit Casio, l'ordinateur n'ayant aucun problème à exécuter ce code.

Notons que sur les implémentations Python complètes on peut régler le comportement souhaité à l'aide des appels respectifs turtle.colormode(1.0) et turtle.colormode(255).
Toutefois cette fonction n'est hélas pas incluse chez NumWorks.

En conséquence, nous proposons le code corrigé ci-dessous, avec une fonction intermédiaire mypencolor() qui corrigera les coordonnées si nécessaire, et qui à la différence marchera aussi sur NumWorks :
CasioNumWorksordi
Code: Select all
from math import exp
from turtle import *

def mypencolor(t):
  cmax = 255
  try:
    pencolor((2, 2, 2))
  except:
    cmax = 1
  if(cmax == 1 and max(t)>1):
    t = tuple(u/255 for u in t)
  elif(cmax == 255 and any(isinstance(u, float) for u in t)):
    t=tuple(int(255*u) for u in t)
  pencolor(t)

for i in range(1,37):
  red=(exp(-0.5 * ((i-6)/12)**2))
  green=(exp(-0.5 * ((i-18)/12)**2))
  blue=(exp(-0.5 * ((i-30)/12)**2))
  mypencolor([red, green, blue])

  for i in range(1, 5):
    forward(60)
    right(90)
  right(10)

Si tu trouves une façon plus simple de rajouter la compatibilité NumWorks au code Casio, n'hésite pas à nous la partager. :)




Enfin nous terminons avec une coquille d'escargot et malheureusement même problème, le code de Casio marche partout sauf sur NumWorks :
Code: Select all
from turtle import *
from math import *

penup()
goto(0, -20)
pendown()
for i in range(1,37):
  red=(exp(-0.5 * ((i-6)/12)**2))
  green=(exp(-0.5 * ((i-18)/12)**2))
  blue=(exp(-0.5 * ((i-30)/12)**2))
  pencolor([red,green,blue])
  circle(50-i)
  right(10)

En conséquence, même correction en attendant mieux :
CasioNumWorksordi
Code: Select all
from turtle import *
from math import *

def mypencolor(t):
  cmax = 255
  try:
    pencolor((2, 2, 2))
  except:
    cmax = 1
  if(cmax == 1 and max(t)>1):
    t = tuple(u/255 for u in t)
  elif(cmax == 255 and any(isinstance(u, float) for u in t)):
    t=tuple(int(255*u) for u in t)
  pencolor(t)

penup()
goto(0, -20)
pendown()
for i in range(1,37):
  red=(exp(-0.5 * ((i-6)/12)**2))
  green=(exp(-0.5 * ((i-18)/12)**2))
  blue=(exp(-0.5 * ((i-30)/12)**2))
  mypencolor([red,green,blue])
  circle(50-i)
  right(10)
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Unread postby critor » 06 Apr 2020, 14:32

On voit quand même que certaines rares couleurs sont mauvaises sur NumWorks, ressortant de l'ensemble puisque n'ayant rien à voir avec les teintes voisines :


Il doit y avoir un cas particulier que mypencolor() ne détecte ou corrige pas.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Unread postby critor » 06 Apr 2020, 14:49

C'est bon, corrigé, c'était de ma faute : :)
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Unread postby Bisam » 06 Apr 2020, 17:50

Hmm, syntaxic sugar...
Code: Select all
def mypencolor(t):
  cmax = 255
  try:
    pencolor((2, 2, 2))
  except:
    cmax = 1
  if cmax == 1 and max(t)>1:
    t = tuple(u/255 for u in t)
  elif cmax == 255 and any(isinstance(u, float) for u in t)):
    t = tuple(int(255*u) for u in t)
  pencolor(t)
User avatar
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 69.6%
 
Posts: 5670
Joined: 11 Mar 2008, 00:00
Location: Lyon
Gender: Male
Calculator(s):
MyCalcs profile

Re: Python turtle : test compatibilité Casio NumWorks

Unread postby critor » 06 Apr 2020, 17:53

Ah merci, c'est sympa, justement j'adore le sucre. ;)
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Unread postby redgl0w » 06 Apr 2020, 19:08

Yes je l'ai fait dans le mauvais sens :troll:

Image
Image
User avatar
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 62.7%
 
Posts: 285
Images: 0
Joined: 30 Oct 2019, 20:36
Location: Grenoble
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENSIMAG 1A
Twitter: Gl0wRed
GitHub: RedGl0w

Re: Python turtle : test compatibilité Casio NumWorks

Unread postby critor » 06 Apr 2020, 19:20

Ah, comment tu as fait ? :)
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.3%
 
Posts: 41956
Images: 15669
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Unread postby redgl0w » 07 Apr 2020, 07:55

critor wrote:Ah, comment tu as fait ? :)

J'ai codé :troll:

Image

J'ai corrigé :

Image
Image
User avatar
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 62.7%
 
Posts: 285
Images: 0
Joined: 30 Oct 2019, 20:36
Location: Grenoble
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENSIMAG 1A
Twitter: Gl0wRed
GitHub: RedGl0w


Return to News Divers

Who is online

Users browsing this forum: ClaudeBot [spider] and 18 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
798 utilisateurs:
>747 invités
>42 membres
>9 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)