{"id":2019,"date":"2016-01-01T00:52:29","date_gmt":"2015-12-31T23:52:29","guid":{"rendered":"http:\/\/www.lyceelecorbusier.eu\/p5js\/?p=2019"},"modified":"2016-02-13T14:09:56","modified_gmt":"2016-02-13T13:09:56","slug":"p5-js-8-interactions-avec-le-clavier","status":"publish","type":"post","link":"https:\/\/www.lyceelecorbusier.eu\/p5js\/?p=2019","title":{"rendered":"\/ p5.js \/ 8 \/ interactions"},"content":{"rendered":"<p style=\"text-align: center;\"><!--more--><\/p>\n<h4>Avec la souris<\/h4>\n<p>La variable <em>mouseX<\/em> stocke les coordonn\u00e9es en X de la souris, <em>mouseY<\/em> celle en Y.<\/p>\n<pre>function setup() {\r\ncreateCanvas(480, 120);\r\nfill(0, 102);\r\nnoStroke();\r\n}\r\nfunction draw() {\r\nellipse(mouseX, mouseY, 9, 9);\r\n}<\/pre>\n<p><span id=\"result_box\" class=\"\" lang=\"fr\"><span class=\"hps\">Les variables<\/span> <em><span class=\"hps\">pmouseX<\/span><\/em> et <span class=\"hps\">pmouseY<\/span>\u00a0<span class=\"hps\">stockent<\/span> <span class=\"hps\">la position de la <\/span><span class=\"hps\">souris \u00e0<\/span> <span class=\"hps\">l&#8217;image pr\u00e9c\u00e9dente.<\/span><\/span><\/p>\n<pre>function setup() {\r\ncreateCanvas(480, 120);\r\nstrokeWeight(4);\r\nstroke(0, 102);\r\n}\r\nfunction draw() {\r\nline(mouseX, mouseY, pmouseX, pmouseY);\r\n}<\/pre>\n<p><span id=\"result_box\" class=\"\" lang=\"fr\"><span class=\"hps\">La variable<\/span> <em>mouseIsPressed<\/em> <span class=\"hps\">de la souris est<\/span> <span class=\"hps\">utilis\u00e9 avec<\/span> <span class=\"hps\">l&#8217;instruction <em>if<\/em><\/span> <span class=\"hps\">pour d\u00e9terminer quand<\/span> <span class=\"hps\">une ligne de code<\/span> <span class=\"hps\">sera ex\u00e9cut\u00e9<\/span> <span class=\"hps\">et quand<\/span> elle<span class=\"hps\"> ne l&#8217;est pas<\/span>.\u00a0<\/span><\/p>\n<pre>function setup(){\r\ncreateCanvas(500,500);\r\n}\r\nfunction draw(){\r\n\u00a0 for(var i=0;i&lt;500 ;i+=5){\r\n\u00a0\u00a0\u00a0 rect(i, 0, 3, 500);\r\n\u00a0 }\r\n\u00a0 if (mouseIsPressed) { \/\/ ou bien (mouseIsPressed == true) \r\n\u00a0 for(\u00a0 var i=500 ; i&gt;0 ; i-=4) {\r\n\u00a0\u00a0\u00a0\u00a0 \/\/ellipse(i,0, i,i);\r\n\u00a0\u00a0\u00a0\u00a0 ellipse(width\/2,height\/2, i,i);\r\n\u00a0 }\r\n\u00a0 }\r\n}<\/pre>\n<p><em>if<\/em> &amp; <em>else<\/em> : donnent deux possibilit\u00e9s<\/p>\n<pre>function setup(){\r\ncreateCanvas(500,500);\r\n}\r\n\r\nfunction draw(){\r\n\u00a0 for(var i=0;i&lt;500 ;i+=5){\r\n\u00a0 \u00a0\u00a0 \u00a0fill(255);\r\n\u00a0\u00a0\u00a0 rect(i, 0, 3, 500);\r\n\u00a0 }\r\n\u00a0 for(\u00a0 var i=500 ; i&gt;0 ; i-=4) {\r\n\u00a0 if (mouseIsPressed == true) {\r\n\u00a0\u00a0\u00a0 ellipse(width\/2,height\/2, i,i);\r\n\u00a0 }else{\r\n\u00a0 \u00a0\u00a0 \u00a0ellipse(i,0, i,i);\r\n\u00a0 }\r\n}\r\n}<\/pre>\n<p>Utiliser plusieurs bouton de la souris : click droit &amp; click gauche<\/p>\n<pre>function setup(){\r\ncreateCanvas(500,500);\r\n}\r\n\r\nfunction draw(){\r\n\u00a0\u00a0 \u00a0 for(var i=0;i&lt;500 ;i+=5){\r\n\u00a0\u00a0\u00a0 rect(i, 0, 3, 500);\r\n\u00a0 }\r\n\u00a0\u00a0 \u00a0if (mouseIsPressed) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (mouseButton == RIGHT) {\r\n\u00a0\u00a0 \u00a0 \u00a0\u00a0\u00a0 \u00a0for(\u00a0 var i=500 ; i&gt;0 ; i-=4) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ellipse(width\/2,height\/2, i,i);\r\n\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0 \u00a0\u00a0 \u00a0}else{\r\n\u00a0 \u00a0\u00a0 \u00a0\u00a0 for(\u00a0 var i=500 ; i&gt;0 ; i-=4) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ellipse(i,500, i,i);\r\n\u00a0 \u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0}\r\n}<\/pre>\n<h4>Le clavier<\/h4>\n<p><span id=\"result_box\" class=\"\" lang=\"fr\"><em><span class=\"hps\">p5.js<\/span><\/em> <span class=\"hps\">garde la trace<\/span> <span class=\"hps\">du moment o\u00f9<\/span> <span class=\"hps\">une touche<\/span> <span class=\"hps\">sur un clavier<\/span> <span class=\"hps\">est enfonc\u00e9e,<\/span> <span class=\"hps\">ainsi la m\u00e9moire de\u00a0<\/span><span class=\"hps\">la derni\u00e8re touche<\/span> <span class=\"hps\">enfonc\u00e9e.<\/span>\u00a0<\/span><\/p>\n<pre>function setup() {\r\n\u00a0 createCanvas(600, 600);\r\n}\r\n\u00a0\r\nfunction draw() {\r\n  background(255);\r\n\u00a0 for (var x=0; x &lt;= width; x+=40) {\r\n\u00a0\u00a0\u00a0 for (var y=0; y &lt;= height; y+=80) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 ellipse(x, y, 40, 40);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 if (keyIsPressed) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 rect(x,y+20,40,40);\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 }\r\n\u00a0\u00a0\u00a0 }\r\n\u00a0 }\r\n}<\/pre>\n<p>Dans cet exemple 3 touches sont utilis\u00e9es, h, j &amp; k. L&#8217;op\u00e9rateur || (ou) permet d&#8217;utiliser soit les bas de casse soit les capitales.<\/p>\n<pre>function setup() {\r\n\u00a0 createCanvas(400, 400);\r\n}\r\n\u00a0\r\nfunction draw() {\r\n\u00a0\u00a0 \u00a0var l = random(0,200);\r\n\u00a0 noStroke();\r\n\u00a0 fill(random(100), random(150, 220), random(150, 220), random(100, 150));\r\n\u00a0 if (keyIsPressed) {\r\n\u00a0\u00a0 \u00a0if ((key == 'h') || (key == 'H')) {\r\n\u00a0 ellipse(random(0, 400), random(0,400), l, l);\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0if ((key == 'g') || (key == 'G')) {\r\n\u00a0 rect(random(0, 400), random(0, 400),l, l);\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0 if ((key == 'j') || (key == 'J')) {\r\n\u00a0 triangle(random(0,400), random(0,400), random(0,400), random(0,400), random(0,400), random(0,400));\r\n\u00a0 }\r\n\u00a0 }\r\n}<\/pre>\n<p>Pour d\u00e9placer un \u00e9l\u00e9ment au clavier avec les fl\u00e8ches directionnelles utiliser UP_ARROW, DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW.<\/p>\n<pre>var x = 400\/2-25;\r\nvar y = 400\/2-25;\r\nfunction setup() {\r\ncreateCanvas(400, 400);\r\n}\r\nfunction draw() {\r\nbackground(200);\r\n\u00a0\u00a0 \u00a0if (keyIsPressed) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0if (keyCode == LEFT_ARROW) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0x--;\r\n\u00a0\u00a0 \u00a0}if (keyCode == RIGHT_ARROW) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0x++;\r\n\u00a0\u00a0 \u00a0}if (keyCode == DOWN_ARROW) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0y++;\r\n\u00a0\u00a0 \u00a0} if (keyCode == UP_ARROW) {\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0y--;\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0}\r\nrect(x, y, 50, 50);\r\n}<\/pre>\n<h4>L&#8217;\u00e9cran tactile<\/h4>\n<p>Pour les \u00e9crans tactiles <em>p5.js<\/em> propose plusieurs variables qui fonctionnent comme celles de la souris.<\/p>\n<pre>function setup() {\r\ncreateCanvas(800, 600);\r\n}\r\nfunction draw() {\r\nbackground(200);\r\nline(20, 20, width-20, height-20);\r\nif (touchIsDown) {\r\nline(width-20, 20, 20, height-20);\r\n}\r\n}<\/pre>\n<p>De m\u00eame <em>touchX<\/em> &amp; <em>touchY<\/em> existent<\/p>\n<pre>function setup() {\r\ncreateCanvas(800, 600);\r\nfill(0, 102);\r\nnoStroke();\r\n}\r\nfunction draw() {\r\nellipse(touchX, touchY, 30, 30);\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/2019"}],"collection":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2019"}],"version-history":[{"count":16,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/2019\/revisions"}],"predecessor-version":[{"id":2567,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/2019\/revisions\/2567"}],"wp:attachment":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}