π
<-
Chat plein-écran
[^]

Python turtle : test compatibilité Casio NumWorks

Python turtle : test compatibilité Casio NumWorks

Message non lude critor » 06 Avr 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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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: Tout sélectionner
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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Message non lude critor » 06 Avr 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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Message non lude critor » 06 Avr 2020, 14:49

C'est bon, corrigé, c'était de ma faute : :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Python turtle : test compatibilité Casio NumWorks

Message non lude Bisam » 06 Avr 2020, 17:50

Hmm, syntaxic sugar...
Code: Tout sélectionner
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)
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.5%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Python turtle : test compatibilité Casio NumWorks

Message non lude critor » 06 Avr 2020, 17:53

Ah merci, c'est sympa, justement j'adore le sucre. ;)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

En ligne

Re: Python turtle : test compatibilité Casio NumWorks

Message non lude redgl0w » 06 Avr 2020, 19:08

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

Image
Image
Avatar de l’utilisateur
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 56.8%
 
Messages: 283
Images: 0
Inscription: 30 Oct 2019, 20:36
Localisation: Centre Val de Loire
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP2I
Twitter/X: Gl0wRed
GitHub: RedGl0w

Re: Python turtle : test compatibilité Casio NumWorks

Message non lude critor » 06 Avr 2020, 19:20

Ah, comment tu as fait ? :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41470
Images: 14480
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

En ligne

Re: Python turtle : test compatibilité Casio NumWorks

Message non lude redgl0w » 07 Avr 2020, 07:55

critor a écrit:Ah, comment tu as fait ? :)

J'ai codé :troll:

Image

J'ai corrigé :

Image
Image
Avatar de l’utilisateur
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 56.8%
 
Messages: 283
Images: 0
Inscription: 30 Oct 2019, 20:36
Localisation: Centre Val de Loire
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP2I
Twitter/X: Gl0wRed
GitHub: RedGl0w


Retourner vers News Divers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 86 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
961 utilisateurs:
>946 invités
>11 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)