π
<-
Chat plein-écran
[^]

Découvre participations concours Casio "May the 4th" 2023

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude cent20 » 03 Juin 2023, 07:49

Jamais deux sans trois dit-on, alors on te souhaite de gagner ta console _Orlando_ !


Je pense qu'il sera difficile de faire mieux sur fx92 en effet, il est bien parti pour gagner.
J'ai d'ailleurs un peu de mal à comprendre comment il marche ce script.
Est ce qu'on peut faire la même image en négatif ? L'écran tout noir et le dessin blanc ?

Sinon on propose la spécialité NSI dans notre lycée, aussi si tes parents Orlando décident de déménager vers Avignon, pense à nous :D
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
Avatar de l’utilisateur
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 46.1%
 
Messages: 1013
Images: 64
Inscription: 17 Mai 2012, 09:49
Localisation: Avignon
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: nsi_xyz

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude _Orlando_ » 03 Juin 2023, 12:33

J'ai d'ailleurs un peu de mal à comprendre comment il marche ce script.

Bonjour cent20,
Je vais essayer de t'expliquer le mieux possible comment marche le script.

Pour commencer, il faut savoir qu'il y a 7 variables modifiables sur la Casio fx92+, et que chacune de ces variables peut retenir un nb de jusqu'à 12 chiffres (au delà tous les chiffres ne sont pas gardés en mémoire).

Partie faite sur un ordinateur:
Je commence par créer un dessin en pixel art noir et blanc. Pour l'étoile de la mort, j'ai fait un dessin d'environ 14*15 pixels (avec 200 pixels). Je peux transformer ce dessin en 5 nb de 40 chiffres en binaire et ensuite convertir en décimal ce qui m'a donné 5 nb de 12 chiffres. (Nb: le nb décimal peut avoir jusqu'à 13 chiffres si le nombre binaire commence par plusieurs "1")

Partie faite sur la calculatrice:
Pour transformer les nb décimaux en dessin sur calculatrice, je divise successivement par 2 chaque nb de 12 chiffres et si cela donne un nb décimal, le programme dessine un pixel noir, sinon il avance mais n'en dessine pas.
Les résultats donnent le nb de 40 chiffres en binaire en partant de la fin, voilà pourquoi le dessin commence par la droite.

Est ce qu'on peut faire la même image en négatif ? L'écran tout noir et le dessin blanc ?

Si tu reconvertis le binaire inversé, le dessin devrait l'être aussi, mais l'arrière plan sera noir seulement dans la zone du dessin.

Sinon on propose la spécialité NSI dans notre lycée, aussi si tes parents Orlando décident de déménager vers Avignon, pense à nous :D

J'y penserai, mais pour l'instant je vais prendre la spécialité NSI dans mon lycée à Voiron :p
_Orlando_ - Vice dirigeant Geometry Dash

Hey Anonymous !
Tu veux toi aussi devenir membre de la communauté Geometry Dash ?
Va voir les critères de recrutement sur le topic : viewtopic.php?t=24870.

Image
Avatar de l’utilisateur
_Orlando_Dasheur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 17.8%
 
Messages: 50
Images: 6
Inscription: 29 Avr 2021, 07:30
Localisation: Voiron, France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: 2nde
YouTube: Geometry Dash CE

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude parisse » 03 Juin 2023, 21:03

Alors en fait il est possible d'éditer ces scripts avec micropy (et donc aussi d'accéder à getkey()...), je viens de relever la barre de taille maximale des scripts à 128K.

Mais il y a un truc bizarre, les temps d'affichage sont parfois mais pas toujours significativement plus lents avec micropy que ceux indiqués par critor pour l'interpréteur de Casio et j'aimerais bien comprendre pourquoi, pour le moment je ne vois pas. Par exemple le dessin de cent20 généré par img2calc met 50 secondes avec micropy contre 14 avec le Python built-in. Par contre star_wars.py met 32 secondes avec micropy contre 34s sur le Python Casio. Et ImageCasio.py un peu plus de 4 minutes vs 3.
L'hypothèse qui me paraissait la plus raisonnable ce serait le décodage du tuple de couleur dans set_pixel, sauf que si je remplace les tuples par des entiers dans palette (c'est accepté avec le module graphic) ça ne change pas la vitesse.
Le code C derrière set_pixel dans mon module graphic est ci-dessous. Les options de compilation sont -Os -g. J'ai essayé avec -O3 mais ça n'a pas d'effet sur la vitesse.
Code: Tout sélectionner
static mp_obj_t graphic_set_pixel(size_t n_args, const mp_obj_t *args) {
  if (n_args<2){
    sync_screen();
    return mp_const_none;
  }
  uint16_t x = mp_obj_get_int(args[0]), y = mp_obj_get_int(args[1]),color=0;
  if (n_args==3)   
    color = mp_get_color(args[2]);
  c_set_pixel(x,y,color);
  return mp_const_none;
}

int mp_get_color(mp_obj_t tuple){
  if (MP_OBJ_IS_SMALL_INT(tuple))
    return MP_OBJ_SMALL_INT_VALUE(tuple) & 0xffffffff;
  if (MP_OBJ_IS_STR(tuple)){
    const char * col=mp_obj_str_get_str(tuple);
    if (strcmp(col,"black")==0)
      return 0xffff;
    if (strcmp(col,"white")==0)
      return 0;
    if (strcmp(col,"blue")==0)
      return 2079;
    if (strcmp(col,"red")==0)
      return 63488;
    if (strcmp(col,"green")==0)
      return 2016;
    if (strcmp(col,"magenta")==0)
      return 63519;
    if (strcmp(col,"yellow")==0)
      return 65504;
    if (strcmp(col,"cyan")==0)
      return 2047;
    return -1;
  }
  size_t len;
  mp_obj_t * elem;
  mp_obj_get_array(tuple, &len, &elem);
  if (len != 3) {
    mp_raise_TypeError("color needs 3 components");
  }
  int r,g,b;
  if (MP_OBJ_IS_SMALL_INT(elem[0]))
    r=MP_OBJ_SMALL_INT_VALUE(elem[0]) & 0xff;
  else
    r=mp_int_float2color(elem[0]);
  if (MP_OBJ_IS_SMALL_INT(elem[1]))
    g=MP_OBJ_SMALL_INT_VALUE(elem[1]) & 0xff;
  else
    g=mp_int_float2color(elem[1]);
  if (MP_OBJ_IS_SMALL_INT(elem[2]))
    b=MP_OBJ_SMALL_INT_VALUE(elem[2]) & 0xff;
  else
    b=mp_int_float2color(elem[2]);
  return mp_rgb(r,g,b);
}

#define mp_rgb(r,g,b) ((((r<<5)>>8)<<11) | (((g<<6)>>8)<<5) | ((b<<5)>>8))

void c_set_pixel(int x,int y,int c){
  freeze=true;
  y += c_yshift;
  os_set_pixel(x,y,c);
}

unsigned short* VRAMsave =0;
void os_set_pixel(int x0, int y0,int color) {
  if (x0<0 || x0>=LCD_WIDTH_PX || y0<clip_ymin || y0>=LCD_HEIGHT_PX)
    return;
  if (!VRAMsave)
    VRAMsave = (unsigned short*)GetVRAMAddress();
  unsigned short * VRAM = VRAMsave + (y0*LCD_WIDTH_PX + x0);
  *VRAM=color;
}


Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude critor » 03 Juin 2023, 22:04

Je n'ai pas le code, mais deux autres participations par les élèves de @bebertii / Marcellus Wallace.

Une image de Stormtrooper, avec l'originalité d'être dessinée par turtle comme tu peux remarquer en bas à droite :
Image
Source : https://twitter.com/bebertii/status/1665024200845713408

Et un vaisseau dessiné également avec turtle, d'autant plus remarquable qu'il n'y a pas les fonctions de remplissage de formes dans le turtle de Casio :
Image
Source : https://twitter.com/bebertii/status/1665025428296286215
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.2%
 
Messages: 41493
Images: 14577
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude parisse » 04 Juin 2023, 08:06

Bon, comme je ne comprends pas pourquoi les images de img2calc s'affichent plus lentement avec micropy, j'ai décidé de recoder en C une fonction draw_rle_image, qui fait maintenant partie du module graphic de micropy (mêmes arguments que ceux de draw_image de img2calc mais attention si on met des valeurs aux paramètres zoomx, zoomy et itransp, il ne faut pas mettre le préfixe zoomx=, juste la valeur du paramètre).

L'affichage du dessin de cent20 se fait en environ 1 seconde avec la fonction draw_rle_image.

Il restera à importer ce code sur les autres versions de micropy/KhiCAS puis mettre à jour img2calc.
Code: Tout sélectionner
// Code inspired by draw_image from https://tiplanet.org/forum/img2calc.php
static mp_obj_t graphic_draw_rle_image(size_t nargs, const mp_obj_t *args) {
  if (!mp_obj_is_str_or_bytes(args[0]))
    mp_raise_TypeError("Bad image data");
  size_t lenrle; const char * rle=mp_obj_str_get_data(args[0],&lenrle);
  size_t nvals;
  mp_obj_t * pal;
  mp_obj_get_array(args[4], &nvals, &pal); 
  int x0=mp_obj_get_int(args[1]),y0=mp_obj_get_int(args[2]),w=mp_obj_get_int(args[3]);
  int zoomx=1,zoomy=1,itransp=-1;
  if (nargs>5) zoomx=mp_obj_get_int(args[5]);
  if (nargs>6) zoomy=mp_obj_get_int(args[6]);
  if (nargs>7) itransp=mp_obj_get_int(args[7]);
  int i=0, x=0, nbits=0;
  nvals--;
  while(nvals){
    nvals >>= 1;
    nbits += 1;
  }
  int maskval = (1 << nbits) - 1;
  int maskcnt = (0xFF >> nbits >> 1) << nbits;
  while (i<lenrle){
    char v = rle[i];
    int mv = v & maskval;
    int c = (v & maskcnt) >> nbits;
    if ( (v & 0b10000000) || nbits == 8){
      i += 1;
      c |= rle[i] << (7 - nbits + (nbits == 8));
    }
    c += 1;
    if (c<w-x && mv!=itransp){
      c_fill_rect(x0 + x*zoomx, y0, c*zoomx, zoomy, mp_get_color(pal[mv]));
      x += c;
      i += 1;
      continue;
    }
    while (c){
      int cw = c<w-x?c:w-x;
      if (mv != itransp)
        c_fill_rect(x0 + x*zoomx, y0, cw*zoomx, zoomy, mp_get_color(pal[mv]));
      c -= cw;
      x = (x + cw) % w;
      y0 += x==0?zoomy:0;
    }
    i += 1;
  }
  return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(graphic_draw_rle_image_obj, 5, 8, graphic_draw_rle_image);
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude critor » 04 Juin 2023, 09:17

critor a écrit:Je n'ai pas le code, mais deux autres participations par les élèves de @bebertii / Marcellus Wallace.

Une image de Stormtrooper, avec l'originalité d'être dessinée par turtle comme tu peux remarquer en bas à droite :
Image
Source : https://twitter.com/bebertii/status/1665024200845713408

Et un vaisseau dessiné également avec turtle, d'autant plus remarquable qu'il n'y a pas les fonctions de remplissage de formes dans le turtle de Casio :
Image
Source : https://twitter.com/bebertii/status/1665025428296286215


J'ai le code. :)
Image

Image
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.2%
 
Messages: 41493
Images: 14577
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude critor » 04 Juin 2023, 10:50

Une partie a été rajoutée à l'article pour présenter la participation de Matteo.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.2%
 
Messages: 41493
Images: 14577
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude critor » 04 Juin 2023, 13:46

Toute une partie a été rajoutée concernant la participation de Souleyman, qui s'est donné la peine de coder un véritable convertisseur d'image pour Python-turtle.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 42.2%
 
Messages: 41493
Images: 14577
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude bouboule1 » 05 Juin 2023, 18:07

Voici ma participation avec fx 92 collège je ne pense pas que je vais gagner :sob: en tout cas bien joué à toutes vos participations elles sont juste incroyables . :~o
Avatar de l’utilisateur
bouboule1
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Prochain niv.: 20%
 
Messages: 3
Inscription: 11 Mai 2023, 19:07
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: 4 eme

Re: Découvre participations concours Casio "May the 4th" 202

Message non lude bouboule1 » 05 Juin 2023, 18:10

oups j'ai oublié de mettre mon dessin en pièce jointe le voici ( c'est un baby yoda)
Fichiers joints
dessin.jpg
Avatar de l’utilisateur
bouboule1
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Prochain niv.: 20%
 
Messages: 3
Inscription: 11 Mai 2023, 19:07
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: 4 eme

PrécédenteSuivante

Retourner vers News Casio

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 40 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.
1356 utilisateurs:
>1317 invités
>34 membres
>5 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)