PythonExtra/docs/sh/NWcompat_modules_fr.md

8.8 KiB
Raw Permalink Blame History

Utilisation des modules kandinsky, ion et time de l'implémentation Python Numworks

PythonExtra offre la possibilité d'utiliser certains modules de la Numworks afin de rendre les scripts de cette machine compatible en l'état sur Casio fx-CG50 (pas de support sur la fx9860G pour cause de mémoire insuffisante et d'abence d'écran couleur).

Il s'agit d'un Work in Progress (WIP) et le support est sujet à tests approfondis à ce stade. Le port concerne les modules kandinsky, ion et time de la Numworks qui sont spécifiques à la machine et sont désormais supportés via cette implémentation. Les modules math, cmath, random étant identiques entre la version Numworks et les modules builtins de MicroPython, ils ne font donc pas partie de cette implémentation mais sont parfaitement utilisables sans modification dans les scripts.

Note : les modules turtle et matplotlib.pyplot ne sont pas repris dans cette implémentation. Il est possible d'utiliser les modules turtle, matplotlib et casioplot de Casio Education qui sont parfaitement fonctionnels et fournis en exemple dans ports/sh/examples.

kandinsky

Version de base kandinsky Epsilon :

Le module kandinsky offre le support des primitives graphiques via les routines hautes performance de gint. Toutes les fonctions de ce module sont disponibles :

  • color(r,g,b) : Génère la valeur de la couleur r,g,b. Vous pouvez aussi simplement utiliser un tuple pour définir une couleur : (r,g,b).

  • get_pixel(x,y) : Renvoie la couleur du pixel aux coordonnées x,y sous forme de tuple (r,g,b).

  • set_pixel(x,y,color) : Allume le pixel x,y de la couleur color.

  • draw_string(text,x,y,[color1],[color2]) : Affiche le texte text aux coordonnées x,y. Les arguments color1 (couleur du texte) et color2 (couleur de lʼarrière plan du texte) sont optionnels.

  • fill_rect(x,y,width,height,color) : Remplit un rectangle de largeur width et de hauteur height avec la couleur color au point de coordonnées x et y.

Le module offre de plus un certain nombre de couleurs explicitement nommées et accessibles par une chaine de caractères. Les valeurs suivantes sont utilisables en lieu et place des paramètres de couleur des fonctions de kandinsky :

  • "red", "r"
  • "green", "g"
  • "blue", "b"
  • "black", "k"
  • "white", "w"
  • "yellow", "y"
  • "pink"
  • "magenta"
  • "grey", "gray"
  • "purple"
  • "orange"
  • "cyan"
  • "brown"

Version étendue kandinsky Upsilon :

Le fork Upsilon de l'OS Numwork offre diverses méthodes additionnelles permettant d'étendre les capacités du module kandinsky.

  • draw_line(x1,y1,x2,y2,color) : Dessine une ligne entre les points (x1,y1) et (x2,y2).

  • draw_circle(xc,yc,rc,color) : Dessine un cercle de centre (xc,yc) et de rayon rc.

  • fill_circle(xc,yc,rc,color) : Dessine un disque de centre (xc,yc) et de rayon rc.

  • fill_polygon(p,color) : trace un polygone plein reliant tous les points founis dans le tableau p.

from math import ceil
from kandinsky import *

SCREEN_W, SCREEN_H = 320, 222

def mod(l):
  x_min, y_min = l[0]
  x_max, y_max = 0, 0
  for k in range(len(l)):
    x_min = min(x_min, l[k][0])
    y_min = min(y_min, l[k][1])
    x_max = max(x_max, l[k][0])
    y_max = max(y_max, l[k][1])
  fx = max(1, (x_max-x_min)/SCREEN_W)
  fy = max(1, (y_max-y_min)/SCREEN_H)
  for k in range(len(l)):
    l[k][0] = ceil((l[k][0]-x_min)/fx)
    l[k][1] = ceil((l[k][1]-y_min)/fy)

l = [
  [0,200],
  [400,200],
  [400,250],
  [450,150],
  [0,200],
  [2,62],
  [223,236],
  [253,222],
  [274,236],
  [350,184],
  [121,2],
  [2,62]
]

mod(l)
fill_polygon( l, (255, 0, 0) )

Version étendue kandinsky pour fx-CG50 / Graph 90+E :

Les fonctions suivantes sont des ajouts pour tirer partie de l'écran large de la fxCG et qui sont donc une extension du module Kandinsky. Elles ne sont donc par définition pas compatible avec le Python Numwork. Ces fonctions sont reconnaisables à leurs appellations qui commencent toutes par CGEXT_ :

  • CGEXT_Enable_Wide_Screen() : Active l'écran étendu de la fxCG, aucun paramètre n'est nécessaire. Les coordonnées x de l'écran physique peuvent être négatives pour empiéter sur la bande blanche de gauche et supérieures à 319 pixels pour empièter sur la bande blanche de droite;

  • CGEXT_Disable_Wide_Screen() : Annule l'activation de l'écran étendu de la fxCG, aucun paramètre n'est nécessaire. Les coordonnées x de l'écran physique seront contraintes entre 0 et 320 pixels. Au-delà, le tracé ne sera pas effectué.

  • CGEXT_Is_Wide_Screen_Enabled() : Retourne True si l'écran étendu est actif et False dans le cas contraire.

  • CGEXT_Set_Margin_Color( color ) : Trace les marge de la fxCG50 (pourtours de l'écran Numworks) de la couleur passée en argument.

Note 1 : après avoir réalisé un tracé dans la zone étendue, il faut que celle-ci soit active pour permettre son effacement (typiquement via un appel à la fonction fill_rect() avec les paramètres adéquats).

Note 2 : En mode non étendu (par défaut à l'initialisation du module Kandinsky) les coordonnées de l'écran vont de (0,0) à (319,221) centré sur l'écran de la fxCG. En mode étendu, les coordonnées de l'écran vont de (-38,-1) à (358,223).

ion

Version de base ion Epsilon :

Le module ion donne accès à la fonction keydown(k) qui renvoie True si la touche k placée en argument est appuyée et False sinon.

La "conversion" des touches entre la machine Numworks et Casio fxCG50 se fait selon le mapping suivant :

Numworks Casio fxCG50 Numworks Key # Upsilon Key Name
KEY_LEFT KEY_LEFT 0 'left'
KEY_UP KEY_UP 1 'up'
KEY_DOWN KEY_DOWN 2 'down'
KEY_RIGHT KEY_RIGHT 2 'right'
KEY_OK KEY_F1 4 'OK'
KEY_BACK KEY_EXIT 5 'back'
KEY_HOME KEY_MENU 6 'home'
KEY_ONOFF KEY_ACON 7 'onOff'
... ... ... ...
KEY_SHIFT KEY_SHIFT 12 'shift'
KEY_ALPHA KEY_ALPHA 13 'alpha'
KEY_XNT KEY_XOT 14 'xnt'
KEY_VAR KEY_VARS 15 'var'
KEY_TOOLBOX KEY_OPTN 16 'toolbox'
KEY_BACKSPACE KEY_DEL 17 'backspace'
KEY_EXP KEY_EXP 17 'exp'
KEY_LN KEY_LN 19 'ln'
KEY_LOG KEY_LOG 20 'log'
KEY_IMAGINARY KEY_F2 21 'imaginary'
KEY_COMMA KEY_COMMA 22 'comma'
KEY_POWER KEY_POWER 23 'power'
KEY_SINE KEY_SIN 24 'sin'
KEY_COSINE KEY_COS 25 'cos'
KEY_TANGENT KEY_TAN 26 'tan'
KEY_PI KEY_F3 27 'pi'
KEY_SQRT KEY_F4 28 'sqrt'
KEY_SQUARE KEY_SQUARE 29 'square'
KEY_SEVEN KEY_7 30 '7'
KEY_EIGHT KEY_8 31 '8'
KEY_NINE KEY_9 32 '9'
KEY_LEFTPARENTHESIS KEY_LEFTP 33 '_paren_open_'
KEY_RIGHTPARENTHESIS KEY_RIGHTP 34 '_paren_close_'
... ... ... ...
KEY_FOUR KEY_4 36 '4'
KEY_FIVE KEY_5 37 '5'
KEY_SIX KEY_6 38 '6'
KEY_MULTIPLICATION KEY_MUL 39 '_star_'
KEY_DIVISION KEY_DIV 40 '_slash_'
... ... ... ...
KEY_ONE KEY_1 42 '1'
KEY_TWO KEY_2 43 '2'
KEY_THREE KEY_3 44 '3'
KEY_PLUS KEY_ADD 45 '_plus_'
KEY_MINUS KEY_SUB 46 '_hyphen_'
... ... ... ...
KEY_ZERO KEY_0 48 '0'
KEY_DOT KEY_DOT 49 '_dot_'
KEY_EE KEY_F5 50 'EE'
KEY_ANS KEY_NEG 51 'Ans'
KEY_EXE KEY_EXE 52 'EXE'

Version de base ion Upsilon :

Upsilon étend les méthodes du module ion en ajoutant les fonctions suivantes :

  • get_keys() : renvoi la liste des touches pressées (au format texte) selon les codes définis dans le tableau ci-dessus.

  • set_brightness( level ) : change la luminosité de l'écran (level prenant une valeur comprise entre 0 et 240 comprises).

  • get_brightness( ) : retourne la luminosité courante de l'écran (renvoie une valeur comprise entre 0 et 240 comprises).

  • battery( ) : retourne le voltage courant de la batterie (des piles sur Casio-fxCG).

  • battery_level( ) : retourne le l'état de charge de la batterie (des piles) sous forme d'un entier compris en 0 (déchargée(s)) et 4 (complètement chargée(s)).

  • battery_ischarging( ) : renvoie True si batterie en charge et False sinon (rencoie toujours Falsesur Casio fx-CG car piles sans fonction de recharge).

time

Le module time donne accès à deux fonctions :

  • monotonic() : Renvoie la valeur de lʼhorloge au moment où la fonction est appelée.

  • sleep(t) : Suspend lʼexécution pendant t secondes.