Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Casio Basic Web Interpreter
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Casio Basic Web Interpreter

Posté le 29/08/2014 15:06

Je vous présente ici mon projet "Casio Basic Web Interpreter" qui a débuté en 2014 et dont le développement se poursuis encore actuellement.

Il s'agit d'un interpréteur pour le langage basic des calculatrices Casio.
Le truc c'est que c'est un interpréteur en mode web, le rendu (=écran de la calculatrice) se fait sur un canvas HTML5.

Donc c'est ici => Casio Basic Web Interpreter



ATTENTION : ce que je partage avec vous est dans une version "alpha", il manque encore beaucoup de choses...
J'ai mis pleins de programmes en exemple.

En vrac la liste des instructions supportées :

[color1] Plot
[color1] PlotOn
PlotOff
PlotChg
[color1] PxlOn
PxlOff
PxlChg
PxlTest
[color1] Line
[color1] [sketchMode2] F-Line
[color1] [sketchMode2] Horizontal
[color1] [sketchMode2] Vertical
[color1] [sketchMode2] Circle
Plot/Line-Color color1
S-L-Normal
S-L-Dot
S-L-Broken
S-L-Thick
S-L-Normal
S-L-Thin
Cls
ClrText
ClrGraph
BG-Pict
BG-None
StoPict
RclPict
AxesOn
AxesOff
LabelOn
LabelOff
Isz
Dsz
Lbl
Goto
Prog
Return
Stop
Mcl
Range
ViewWindow
Menu
Locate
Text
expr->variable
expr->variableStart~variableEnd
variable
"string"
?->variable
"string"?->variable
Ran#
RanInt#
GetKey
MOD(
Int
Intg
Frac
Deg
Rad
Grad
sin
cos
tan
Rec
Pol
Ans
+
-
*
/
=> (If)
If/Then/Else/IfEnd
<=
>=
=
<> (or !=)
<
>
And/Or/Xor/Not
(expr)
-expr
Do/LpWhile
While/WhileEnd
For/Next
Break

{1,2,3,4}->List n
List n->List m
List Ans
x->Dim List n
Dim List n
Filen
Seq(
x->List n[expr]
List n
List n[expr]
ClrList
ClrList n
Sum list
Prod list
Mean(list
Median(list
Max(list
Min(list
SortA(list
SortD(list
Fill(value,list)
Augment(list,list)
Cuml list
?List list
Percent list
RanInt#(min,max,nb)
RanList#(int)

[[1,2,3][4,5,6]...]->Mat n
Mat n
Mat Ans
{l,c}->Dim Mat n
Dim Mat i
x->Mat n[expr,expr]
Mat n[expr,expr]
Mat n->Mat m

1 color can be Black, Blue, Red, Magenta, Green, Cyan or Yellow
2 sketchMode can be SketchNormal, SketchThick, SketchBroken, SketchDot, SketchThin


Vous trouverez les sources sur GitHub.

A bientôt.
Krevo_


Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante
Hackcell Hors ligne Maître du Puzzle Points: 1531 Défis: 11 Message

Citer : Posté le 06/11/2018 18:51 | #


Sur mon tel sa marche bien... T'utilise un vrai navigateur ??
Kikoodx Hors ligne Ancien labélisateur Points: 3038 Défis: 11 Message

Citer : Posté le 06/11/2018 18:53 | #


Hackcell a écrit :
Sur mon tel sa marche bien... T'utilise un vrai navigateur ??

Oui...
Mais bizarrement maintenant ça fonctionne...
Je peux affirmer que ce n'était pas le cas ce midi
ouais ouais
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 06/11/2018 22:16 | #


Par contre, si qqun peut m'aider pour une vraie calc (Graph90+E par exemple) je sais pas s'ils ont changer un truc ou quoi mais un programme comme le 'random num' n'affiche pas les valeurs 'inlermediaire' mais seulement '0' en fin de programme.

C'est ouf ce changement dans l'interpreteur ... il y a (très?) longtemps (quand j'étais au Lycée lol) c'était pas comme ça l'interpréteur basic des casio.

Il faut faire quoi des "Locate" par exemple ?


Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 07/11/2018 07:44 | #


En fait, c'est pas nouveau... aussi loin que j'aie programmé en Basic (6 ans ?), l'affichage n'a jamais été automatique. Écrire Ran# tout seul met à jour la valeur de Ans, sauf que Ans n'est affiché qu'à la fin du programme. Et manifestement Dsz A met aussi à jour Ans donc tu te retrouves avec un 0 à la fin.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 10/11/2018 19:56 | #


Je vais m'atteler à ne plus afficher les calculs intermédiaires .... + pleins d'autres choses sous le coude.
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 10/11/2018 20:07 | #


Bonne nouvelle ! N'hésite pas à écrire dans la Revue des Projets !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 11/11/2018 14:25 | #


J'ai raté la revue des projets du jour :-( J'ai mis en ligne ce matin, une version où j'ai revu la gestion des couleurs. Et je vous propose donc 2 "color scheme" : un noir et blanc et un bleu/vert (nouveau !). ça peut paraître pas grand chose mais je préfère bien finaliser les autres trucs en cours. Au moins, j'ai un peu d'activité sur ce projet en ce moment.
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 11/11/2018 14:35 | #


En fait il n'y a pas d'article proposé pour cette RDP ! Si tu as quelque chose, envoie-moi ton texte par MP, et je m'en occuperai !

Moi j'aime bien la couleur de l'écran, c'est le genre de fonctionnalités qui montrent quand tu te soucies des détails.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 11/11/2018 17:29 | #


Merci pour les commentaires. J'ai été inspiré par une copie d'écran de 'Tetris' en 1ere page du tuto basic Casio.
Pas eu le temps pour la revue ou un texte, ça viendra plus tard.

Ajouté le 17/11/2018 à 17:58 :
Petite info du jour :
- ajout de la fonction 'GetKey' avec un petit clavier virtuel et un programme d'exemple éponyme.

(ATTENTION: Ce clavier virtuel pour l'instant permet de simuler la pression de touches pour la fonction 'GetKey' mais ne permet pas de saisir des chiffres sur un ?->Var ... il faut utiliser le clavier de son ordinateur .... et inversement le clavier de l'ordinateur n'affecte pas la valeur de 'GetKey'..... mais ça viendra tout ça .....)
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 17/11/2018 18:20 | #


Krevo, selon moi tu devrais regarder du côté de CBasic (si tu ne l'as pas déjà fait) : https://www.planet-casio.com/Fr/forums/topic14738-4-C.Basic-Projets.html

Vu que sentaro21 a déjà implémenté la plupart du basic (ayant fait b2c, c'est franchement un travail impressionnant ce qu'il a fait, il fait tourner des jeux de neotux et tout...) il ne te resterait qu'à modifier le code pour le faire tourner en JS
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 20/11/2018 22:31 | #


Je n'ai pas pris cette voie. Je n'ai entendu parler de CBasic seulement il y a quelques jours semaines. J'ai démarré mon projet en Août 2014, j'ai choisi une voie .... et le but est plutôt de me faire plaisir en essayant de faire tourner des programmes anciens que j'avais écris il y a très très longtemps .... (bien avant que planete-casio ne soit ouvert c'est dire ....). et aussi j'aime bien les thèmes Javascript/Html5 (canvas) ... pas forcément envie de porter du C que j'ai pas écrit (c'est un autre passe-temps)

... après c'est vrai qu'il y a eu pas mal de pause sur mon projet... et là j'ai à nouveau un peu de temps et j'essaye d'avancer. Donc tant que j'y arrive en terme de temps, j'avance ...

J'ai d'autres projets perso. (de programmation ou pas ...) et donc j'alterne comme je peux entre mes différentes occupations.

Cette année il y a aussi un gros changement, .... j'ai la calculatrice de mon fils sur laquelle je peux faire des tests / essais. Alors qu'avant septembre je n'avais plus de calculatrice.

Bref, ... donc si je prends le temps (J'ai 24h par jour comme tout le monde ... donc tout est question de répartition), il y a de très très bonnes choses à venir.... j'invite donc ceux que ça intéresse à suivre les nouvelles qui vont suivre.

Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 20/11/2018 22:55 | #


Je suis assez d'accord avec toi, fonce dans ce que tu avais prévu ! Tu fais un travail remarquable, et c'est super le partager ici. Pas besoin de te poser trop de questions !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 21/11/2018 19:57 | #


J'essaye actuellement de remettre une indication de localisation sur les "Syntax error" .... un des "known problem" que j'ai listé + une petite modif. d'interface qui va avec.

A suivre ....
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 21/11/2018 21:52 | #


Je suppose que l'outil avec lequel tu implémentes ta grammaire peut servir ici, non ? Je vois que ça te prend facilement 3000 lignes à cause du code généré

Oh, d'ailleurs, est-ce que tu as pensé à une licence pour ta grammaire ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 21/11/2018 22:27 | #


Le parser me donne un offset dans la string parsée. Je suis juste en train d'essayer de faire correspondre avec un numéro de ligne réel du programme en entrée.

Oui, ya un gros code généré .... les sources sont bien plus petites bien sûr.
J'ai tout mis en licence BSD sur mon github.

Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 21/11/2018 22:55 | #


Bon courage !

La grammaire resservira peut-être, si c'est le cas je te le ferai savoir.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 25/11/2018 16:35 | #


Les news :
- Syntax error avec le numéro de ligne correspondante (..... ce qui m'a amené à envisager de faire monter la version du compilateur/parser "js/cc" car je pense que j'aurais moins galéré .... mais ça ne se fait pas sans bien tester et éventuellement réécrire certains morceaux) ... du coup le textarea est augmenté à sa gauche avec les numéro de lignes ce qui est plus pratique.
- GetKey : j'ai mis un mapping / correspondance clavier du pc <-> clavier virtuel calculatrice (donc on peut cliquer sur les touches du clavier virtuel et ça alimente getKey et réponds aussi à l'input ... et inversement)... voir les programmes d'exemple "GetKey" et "TextMenu".


Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 25/11/2018 22:14 | #


Wow, c'est impressionnant ! As-tu pensé à donner le focus à la zone du programme quand on lance un programme avec un bouton ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 25/11/2018 22:26 | #


Normalement, c'est bon pour les histoires de focus. J'ai beaucoup testé hier, ça doit être ok.J'ai eu et corrigé par mal de soucis (Par exemple en cliquant sur "Hello◢", ça gardais le focus sur le bouton puis quand on faisait Entrée pour terminer le programme en pause ... alors ça relancait le même programme car ça jouait aussi le "entrée" sur le bouton .....) C'est vrai que c'est pas tjrs simple ... quand on commence à capturer les évènements clavier. (J'avoue que niveau clavier il me resterais à faire que ces boutons fonctionnent quand on est en version mobile ou tablette, ça pourrais être pratique à terme)

A suivre ....
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Lephenixnoir Hors ligne Administrateur Points: 24563 Défis: 170 Message

Citer : Posté le 26/11/2018 18:06 | #


Hmm, ça ne focus pas l'écran chez moi, quand je clique sur le bouton Getkey. Je peux t'aider pour tester avec logs si tu veux. Enfin ne t'en fais pas trop !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Krevo_ Hors ligne Maître du Puzzle Points: 412 Défis: 2 Message

Citer : Posté le 26/11/2018 18:49 | #


Ok, ..j'ai testé avec Firefox :-( j'ai uploadé 2 légères retouches.
Il faut que je pense à bien tester avec Chrome ET Firefox ....
Casio Basic Web Interpreter, c'était le basic Casio dans votre navigateur web !
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 74 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd