progrem
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| progrem [2019/05/21 15:18] – créée bigMax | progrem [2019/06/18 06:56] (Version actuelle) – bigMax | ||
|---|---|---|---|
| Ligne 9: | Ligne 9: | ||
| * La " | * La " | ||
| * L' | * L' | ||
| + | |||
| + | ===== Un progrem qui déssine ===== | ||
| + | Un progrem qui dessine dessinerait des images fixes ou animées. Le dessin produit serait " | ||
| + | Je propose que le dessin soit constitué d'une grille de pixel. La fonction principale du Progrem serait de colorier chaque case une par une. La fonction est pure : elle reçoit les coordonnées d'une case et elle détermine la couleur de la case. | ||
| + | |||
| + | ===== Le code d'un Progrem ===== | ||
| + | On se concentre sur l' | ||
| + | |||
| + | Un premier progrem qui déssine le coeur déEugene Beutem est doté d'une fonction de coloriage comme celle-ci: | ||
| + | |||
| + | <code js> | ||
| + | function colorerProgrem ( colonne, ligne, contexte ) { | ||
| + | var x = colonne * contexte.resolutionCartesienneEnX + contexte.decallageCartesienEnX; | ||
| + | var y = ligne * contexte.resolutionCartesienneEnY + contexte.decallageCartesienEnY; | ||
| + | var equationEugenePartieGauche = Math.pow(Math.pow(x, | ||
| + | var equationEugenePartieDroite = Math.pow(x, 2) * Math.pow(y, 3); | ||
| + | var equationEugeneDifference = equationEugenePartieGauche - equationEugenePartieDroite; | ||
| + | var couleur; | ||
| + | if ( equationEugeneDifference < 0 ) { | ||
| + | couleur = ' | ||
| + | } else { | ||
| + | couleur = ' | ||
| + | } | ||
| + | return couleur; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Mettre en avant le code du Progrem ===== | ||
| + | * Colorer | ||
| + | * Surligner | ||
| + | * Souligner | ||
| + | * Encadrer | ||
| + | * Mettre en gras | ||
| + | |||
| + | Stratégie : | ||
| + | * Attribuer une couleur aux variables à leur rencontre. | ||
| + | * Historiser dans une pile les affectations de variables. | ||
| + | * Colorer les blocks de code éxecutés (if / then / else) | ||
| + | * Mettre en exergue l' | ||
| + | * Encadrer la case en cours de coloriage. | ||
| + | * Indiquer les index des lignes et colonnes. | ||
| + | * Historiser dans une pile les commentaires ou bien afficher dans une bulle les commentaires. | ||
| + | * Ajouter un bouton play / pause / next step. | ||
| + | * Ajouter une commande à " | ||
| + | * Ajouter une commande à " | ||
| + | * Permettre la rédaction de Progrem en live dans un éditeur de texte. | ||
| + | |||
| + | |||
| + | ===== Coder un lecteur de progrem en typescript ===== | ||
| + | Nous utiliserons le gestionnaire de paquet npm (sudo apt install npm). | ||
| + | Nous délaigerons la compilation du typescript et la fabrication du bundle javascript à webpack | ||
| + | |||
| + | ==== Initialisation du projet ==== | ||
| + | < | ||
| + | cd progrem-veiwer | ||
| + | npm init | ||
| + | npm install webpack webpack-cli --save-dev | ||
| + | npm install typescript ts-loader --save-dev | ||
| + | ./ | ||
| + | </ | ||
| + | |||
| + | Il faut ensuite configurer webpack en ajoutant à la racine du projet le fichier // | ||
| + | < | ||
| + | const path = require(' | ||
| + | |||
| + | module.exports = { | ||
| + | entry: ' | ||
| + | devtool: ' | ||
| + | watch: true, | ||
| + | module: { | ||
| + | rules: [ | ||
| + | { | ||
| + | test: /\.tsx?$/, | ||
| + | use: ' | ||
| + | exclude: / | ||
| + | } | ||
| + | ] | ||
| + | }, | ||
| + | resolve: { | ||
| + | extensions: [ ' | ||
| + | }, | ||
| + | output: { | ||
| + | filename: ' | ||
| + | path: path.resolve(__dirname, | ||
| + | } | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Webpack se chargera alors de lire notre point d' | ||
| + | |||
| + | Il faut alors modifier le fichier package.json pour indiquer que l'on va déléguer le build à webpack en ajoutant le script " | ||
| + | < | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | </ | ||
| + | |||
| + | Il ne nous reste alors plus qu'à lancer le build avec la commande : | ||
| + | < | ||
| + | npm run buil | ||
| + | </ | ||
| + | Webpack restera alors démarré pour compiler et packager les sources du projet. | ||
| + | |||
| + | ==== Ajout du framework de test unitaire jasmine ==== | ||
| + | < | ||
| + | npm install --save-dev jasmine-core jasmine @types/ | ||
| + | ./ | ||
| + | ./ | ||
| + | </ | ||
| + | |||
| + | avec un fichier jasmine.json comme suit: | ||
| + | < | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | ], | ||
| + | " | ||
| + | " | ||
| + | ], | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | et un fichier package.json dont le script test est définit ainsi : | ||
| + | < | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | On peut alors lancer les test unitaires avec la commande : | ||
| + | < | ||
| + | npm test | ||
| + | </ | ||
progrem.1558451930.txt.gz · Dernière modification : de bigMax
