{"id":1850,"date":"2022-01-04T08:42:00","date_gmt":"2022-01-04T07:42:00","guid":{"rendered":"http:\/\/labodemaths.fr\/WordPress3\/?p=1850"},"modified":"2022-01-18T08:55:30","modified_gmt":"2022-01-18T07:55:30","slug":"nsi-js-et-html-ardoise-magique","status":"publish","type":"post","link":"https:\/\/labodemaths.fr\/WordPress3\/nsi-js-et-html-ardoise-magique\/","title":{"rendered":"NSI, JS et HTML, ARdoise Magique"},"content":{"rendered":"\n<p>On consid\u00e8re les fichiers html et js suivants :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;html lang=\"fr\">&lt;head>&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\">\n&lt;title>Dessiner et programmer avec canvas_V1&lt;\/title>\n&lt;script src=\".\/Dessiner et programmer avec canvas_V1_files\/index.js\">&lt;\/script>\n&lt;\/head>\n&lt;body onload=\"draw()\">\n&lt;canvas id=\"tutoriel\" width=\"400\" height=\"400\">&lt;\/canvas>\n&lt;\/body>&lt;\/html><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ on appelle la fonction draw lorsque la page est bien charg\u00e9e dans le HTML\n\/\/ par onload=\"draw()\" comme propri\u00e9t\u00e9 de l'\u00e9l\u00e9ment\n\/\/ body\nfunction draw() {\n  \/\/ on d\u00e9clare un \u00e9l\u00e9ment canvas qui correspond \u00e0 l'\u00e9l\u00e9ment dont l'id est tutoriel\n   var canvas = document.getElementById(\"tutoriel\");\n   \/\/ on d\u00e9clare notre feuille de dessin ctx qui sera une version 2D du canvas\n   var ctx = canvas.getContext(\"2d\");\n   \/\/ on utilise une variable bol\u00e9enne pour indiquer si le crayon est lev\u00e9 ou non\n   var dessiner=false;\n\/\/ on installe 2 d\u00e9tecteurs d'\u00e9v\u00e9nements sur l'\u00e9l\u00e9ment canvas\n    \/\/ premier d\u00e9tecteur pour savoir si on abaisse\n\/\/ la souris sur le canvas ( \u00e9quivalent de clic)\n canvas.addEventListener(\"mousedown\", on_abaisse_le_stylo, false);\n    \/\/ second d\u00e9tecteur pour savoir si on bouge\n    \/\/ la souris sur le canvas\n canvas.addEventListener(\"mousemove\", dessiner_avec_la_souris, false);\n\n\n \/\/ si l'evenement mousedown est d\u00e9tect\u00e9, on abaisse ou on releve le stylo\n function on_abaisse_le_stylo(){\n     \/\/ si dessiner est \u00e0 vrai, on le passe \u00e0 faux\n     \/\/ sinon il est \u00e0 faux et on le passe \u00e0 vrai\n   if (dessiner==true){dessiner=false;}else{dessiner=true;}\n\n     }\n\n \/\/ si la souris est en mouvement\n function dessiner_avec_la_souris(evt){\n   \/\/ on dessine si le stylo est baiss\u00e9\n   if (dessiner==true){\n    \/\/ on recherche la position de la souris\n    \/\/ par rapport au canvas\n   var mousePos = getMousePos(canvas, evt);\n    \/\/ on dessine le cercle \u00e0 la position de la souris\n   ctx.beginPath();\n    ctx.fillStyle=\"black\";\n    ctx.arc(mousePos.x, mousePos.y, 15, 0, 2*Math.PI);\n    ctx.fill();\n       ctx.closePath();\n  }\n}\n\n\/\/ fonction qui d\u00e9termine la position de la souris par rapport \u00e0 la page et\n\/\/ par rapport \u00e0 la position du canvas dans la page\n\/\/ x et y sont alors les coordonn\u00e9es de la souris par rapport \u00e0 l'espace du canvas\n\/\/ evt fait r\u00e9f\u00e9rence \u00e0 l'\u00e9v\u00e9nement position de la\n\/\/ souris donc \u00e0 la souris\nfunction getMousePos(canvas, evt) {\n    \/\/ on r\u00e9cup\u00e8re les coordonn\u00e9es du canvas\n    \/\/ par rapport \u00e0 la page\n         var rect = canvas.getBoundingClientRect();\n    \/\/ on calcule les coordonn\u00e9es de la souris\n    \/\/ dans le canvas\n    \/\/ on retourne les valeurs trouv\u00e9es\n         return {\n           x: evt.clientX - rect.left,\n           y: evt.clientY - rect.top\n         };\n       }\n}\n<\/code><\/pre>\n\n\n\n<h3>Exercice 1<\/h3>\n\n\n\n<p>Ressource : <a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/Input\/button\" data-type=\"URL\" data-id=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/Input\/button\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/Input\/button<\/a><\/p>\n\n\n\n<p>Modifier le HTML et le JS pour :<br>1. Agrandir l&rsquo;espace de dessin,<br>2. Mettre un texte avant et apr\u00e8s le canvas indiquant \u00e0 l&rsquo;utilisateur la marche \u00e0 suivre,<br>3. Changer la couleur du crayon,<br>4. Modifier la taille du crayon.<\/p>\n\n\n\n<h3>Exercice 2<\/h3>\n\n\n\n<p>Ajouter un bouton permettant d&rsquo;effacer l&rsquo;espace de dessin et un autre permettant de choisir la couleur du crayon.<\/p>\n\n\n\n<p>Proposition de correction :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html>\n&lt;!-- saved from url=(0043)https:\/\/labodemaths.fr\/ISN\/Ardoise_magique\/ -->\n&lt;html lang=\"fr\">&lt;head>&lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\">\n  \n  &lt;title>Dessiner et programmer avec canvas_V1&lt;\/title>\n&lt;script src=\".\/Dessiner et programmer avec canvas_V1_files\/index.js\">&lt;\/script>\n&lt;\/head>\n&lt;body onload=\"draw()\">\n&lt;h1>Mon ardoise&lt;\/h1>\n&lt;canvas id=\"tutoriel\" width=\"800\" height=\"400\">&lt;\/canvas>\n&lt;h2>Cliquer pour dessiner&lt;\/h2>\n &lt;input type=\"color\" aria-label=\"S\u00e9lectionner la couleur du crayon\">\n &lt;input type=\"button\" value=\"Effacer\">\n&lt;\/body>&lt;\/html><\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\n\/\/ on appelle la fonction draw lorsque la page est bien charg\u00e9e dans le HTML\n\/\/ par onload=\"draw()\" comme propri\u00e9t\u00e9 de l'\u00e9l\u00e9ment\n\/\/ body\nfunction draw() {\n  \/\/ on d\u00e9clare un \u00e9l\u00e9ment canvas qui correspond \u00e0 l'\u00e9l\u00e9ment dont l'id est tutoriel\n   var canvas = document.getElementById(\"tutoriel\");\n   \/\/ on d\u00e9finit la largeur et la hauteur du canvas\n   var width = canvas.width\n   var height = canvas.height \n   \/\/ on d\u00e9clare notre feuille de dessin ctx qui sera une version 2D du canvas\n   var ctx = canvas.getContext(\"2d\");\n   \/\/ on recup\u00e8re nos boutons\n   var bouton_effacer = document.querySelector('input&#91;type=\"button\"]');\n   var bouton_couleur = document.querySelector('input&#91;type=\"color\"]');\n   \/\/ on utilise une variable bol\u00e9enne pour indiquer si le crayon est lev\u00e9 ou non\n   var dessiner=false;\n\/\/ on installe 2 d\u00e9tecteurs d'\u00e9v\u00e9nements sur l'\u00e9l\u00e9ment canvas\n    \/\/ premier d\u00e9tecteur pour savoir si on abaisse\n\/\/ la souris sur le canvas ( \u00e9quivalent de clic)\n canvas.addEventListener(\"mousedown\", on_abaisse_le_stylo, false);\n    \/\/ second d\u00e9tecteur pour savoir si on bouge\n    \/\/ la souris sur le canvas\n canvas.addEventListener(\"mousemove\", dessiner_avec_la_souris, false);\n\nbouton_effacer.onclick = function() {\n  ctx.fillStyle = 'rgb(255,255,255)';\n  ctx.fillRect(0,0,width,height);\n}\n \/\/ si l'evenement mousedown est d\u00e9tect\u00e9, on abaisse ou on releve le stylo\n function on_abaisse_le_stylo(){\n     \/\/ si dessiner est \u00e0 vrai, on le passe \u00e0 faux\n     \/\/ sinon il est \u00e0 faux et on le passe \u00e0 vrai\n   if (dessiner==true){dessiner=false;}else{dessiner=true;}\n\n     }\n\n \/\/ si la souris est en mouvement\n function dessiner_avec_la_souris(evt){\n   \/\/ on dessine si le stylo est baiss\u00e9\n   if (dessiner==true){\n    \/\/ on recherche la position de la souris\n    \/\/ par rapport au canvas\n   var mousePos = getMousePos(canvas, evt);\n    \/\/ on dessine le cercle \u00e0 la position de la souris\n   ctx.beginPath();\n    ctx.fillStyle=bouton_couleur.value;\n    ctx.arc(mousePos.x, mousePos.y, 5, 0, 2*Math.PI);\n    ctx.fill();\n       ctx.closePath();\n  }\n}\n\n\/\/ fonction qui d\u00e9termine la position de la souris par rapport \u00e0 la page et\n\/\/ par rapport \u00e0 la position du canvas dans la page\n\/\/ x et y sont alors les coordonn\u00e9es de la souris par rapport \u00e0 l'espace du canvas\n\/\/ evt fait r\u00e9f\u00e9rence \u00e0 l'\u00e9v\u00e9nement position de la\n\/\/ souris donc \u00e0 la souris\nfunction getMousePos(canvas, evt) {\n    \/\/ on r\u00e9cup\u00e8re les coordonn\u00e9es du canvas\n    \/\/ par rapport \u00e0 la page\n         var rect = canvas.getBoundingClientRect();\n    \/\/ on calcule les coordonn\u00e9es de la souris\n    \/\/ dans le canvas\n    \/\/ on retourne les valeurs trouv\u00e9es\n         return {\n           x: evt.clientX - rect.left,\n           y: evt.clientY - rect.top\n         };\n       }\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>On consid\u00e8re les fichiers html et js suivants : Exercice 1 Ressource : https:\/\/developer.mozilla.org\/fr\/docs\/Web\/HTML\/Element\/Input\/button Modifier&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/labodemaths.fr\/WordPress3\/nsi-js-et-html-ardoise-magique\/\">Read the post<span class=\"screen-reader-text\">NSI, JS et HTML, ARdoise Magique<\/span><\/a><\/div>\n","protected":false},"author":2,"featured_media":1851,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[57],"tags":[],"_links":{"self":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts\/1850"}],"collection":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/comments?post=1850"}],"version-history":[{"count":1,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts\/1850\/revisions"}],"predecessor-version":[{"id":1852,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/posts\/1850\/revisions\/1852"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/media\/1851"}],"wp:attachment":[{"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/media?parent=1850"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/categories?post=1850"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/labodemaths.fr\/WordPress3\/wp-json\/wp\/v2\/tags?post=1850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}