{"id":2661,"date":"2008-12-01T01:59:44","date_gmt":"2008-12-01T00:59:44","guid":{"rendered":"http:\/\/www.hyperbate.com\/dernier\/?p=2661"},"modified":"2008-12-01T01:59:44","modified_gmt":"2008-12-01T00:59:44","slug":"processing-dixieme-cours","status":"publish","type":"post","link":"https:\/\/hyperbate.fr\/dernier\/?p=2661","title":{"rendered":"Processing, dixi\u00e8me cours"},"content":{"rendered":"<p><img decoding=\"async\" class=\"imageadroite\" src=\"\/dernier\/files\/2008\/12\/typewriter_underwood.png\" alt=\"\" width=\"220\" height=\"190\" align=\"right\" \/>Apr\u00e8s la souris, parlons du clavier<sup><a href=\"#footnote_1_2661\" id=\"identifier_1_2661\" class=\"footnote-link footnote-identifier-link\" title=\"Le coin culture : tout le monde sait que la souris d&rsquo;ordinateur est une conqu&ecirc;te assez r&eacute;cente (th&eacute;orie: 1965, brevet: 1968, application industrielle: 1981), mais il est plus rare qu&rsquo;on se souvienne que le clavier, du moins le clavier coupl&eacute; &agrave; un ordinateur, est &agrave; peine plus ancien, puisque son usage informatique ne remonte qu&rsquo;au d&eacute;but des ann&eacute;es 1960. Auparavant, on communiquait avec les ordinateurs &agrave; l&rsquo;aide de cartes perfor&eacute;es ou simplement (?) par c&acirc;blage.\">1<\/a><\/sup> .\u00a0Processing est capable d&rsquo;\u00abintercepter\u00bb\u00a0(c&rsquo;est le terme consacr\u00e9) les \u00e9v\u00e8nements du clavier \u2014\u00a0ce qui est passablement banal. Tout comme dans le cas de la souris, on distingue la frappe d&rsquo;une touche (keyReleased) de la demi-frappe (keyPressed).<br \/>\nN\u00e9anmoins, le clavier et le bouton de la souris fonctionnent de mani\u00e8re passablement diff\u00e9rente car le clavier reconna\u00eet la r\u00e9p\u00e9tition de la frappe, ce qui signifie que si l&rsquo;on reste le doigt enfonc\u00e9 sur la touche \u00ab\u00a0a\u00a0\u00bb, l&rsquo;ordinateur se comportera comme si on avait appuy\u00e9 plusieurs fois de suite sur la touche. Ce param\u00e8tre est totalement impossible \u00e0 ma\u00eetriser car il d\u00e9pend de chaque syst\u00e8me d&rsquo;exploitation et des r\u00e9glages effectu\u00e9s par l&rsquo;utilisateur.<br \/>\nVoici un script tout simple qui utilise les deux fonctions d&rsquo;\u00e9v\u00e8nement (keyPressed() et keyReleased()) ainsi que la propri\u00e9t\u00e9 keyPressed :<\/p>\n<div class=\"code\">\n<pre>void setup(){\n  background(255); stroke(255,0,0);\n}\nvoid draw(){\n \u00a0if (keyPressed ){\n    line(50,50, random(100),random(100));\n\u00a0\u00a0}\n}\nvoid keyPressed(){\n  background(0);\n}\u00a0\nvoid keyReleased(){\n  background(255);\n}<\/pre>\n<\/div>\n<p><img decoding=\"async\" class=\"imageagauche\" src=\"\/dernier\/files\/2008\/12\/clavier_wikimedia_commons.png\" alt=\"\" width=\"220\" height=\"220\" align=\"left\" \/>Au d\u00e9marrage (<strong>setup()<\/strong>), je \u00ab\u00a0peins\u00a0\u00bb la fen\u00eatre en blanc et je r\u00e8gle la couleur des traits sur le rouge (255,0,0)<br \/>\nLa fonction d&rsquo;\u00e9v\u00e8nement <strong>keyPressed()<\/strong> est invoqu\u00e9e lorsque l&rsquo;on appuie sur le clavier. Elle a pour effet de \u00ab\u00a0peindre\u00a0\u00bb la fen\u00eatre en noir. La fonction d&rsquo;\u00e9v\u00e8nement <strong>keyReleased()<\/strong> est invoqu\u00e9e lorsque l&rsquo;on lache une touche que l&rsquo;on a enfonc\u00e9, et elle a ici pour effet de \u00ab\u00a0peindre\u00a0\u00bb la fen\u00eatre en blanc. Enfin, avec le gestionnaire <strong>draw()<\/strong>, qui s&rsquo;ex\u00e9cute r\u00e9guli\u00e8rement, je dis qu&rsquo;une ligne doit \u00eatre trac\u00e9e au hasard sur l&rsquo;\u00e9cran si, et seulement si, une touche du clavier est enfonc\u00e9e (<strong>if (keyPressed )<\/strong>).<br \/>\nNotez que, m\u00eame si elle ne contient rien, une fonction <strong>draw()<\/strong> doit imp\u00e9rativement \u00eatre r\u00e9dig\u00e9e dans le script pour que les fonction de gestion d&rsquo;\u00e9v\u00e8nements du clavier soient pris en compte.<\/p>\n<h4>Les touches du clavier<\/h4>\n<p>Processing est bien entendu capable de savoir quelle touche a \u00e9t\u00e9 enfonc\u00e9e. Le r\u00e9sultat de cet \u00e9v\u00e8nement est stock\u00e9 dans deux variables syst\u00e8mes, <strong>key<\/strong> et <strong>keyCode<\/strong>.<br \/>\nAvec key, on peut effectuer une v\u00e9rification de cette mani\u00e8re :<\/p>\n<div class=\"code\">\n<pre>void draw(){\n\u00a0\u00a0\/\/ gestionnaire vide mais obligatoire\n}\n\nvoid keyReleased(){\n\u00a0\u00a0if(key=='r'){\n\u00a0\u00a0 \u00a0 background(255,0,0);\n\u00a0\u00a0} \u00a0\n\u00a0\u00a0if(key=='v'){\n\u00a0\u00a0 \u00a0 background(0,255,0);\n\u00a0\u00a0} \u00a0\n\u00a0\u00a0if(key=='b'){\n\u00a0\u00a0 \u00a0 background(0,0,255);\n\u00a0\u00a0}\u00a0\u00a0\n}<\/pre>\n<\/div>\n<p>Avec ce script une s\u00e9rie de tests, appel\u00e9s lorsque l&rsquo;on touche au clavier (<strong>keyReleased()<\/strong>), sont effectu\u00e9s et sont dans certains cas suivis par un changement de la couleur de la sc\u00e8ne. Si la touche enfonc\u00e9e est &lsquo;<strong>r<\/strong>&lsquo;, alors l&rsquo;\u00e9cran est \u00ab\u00a0peint\u00a0\u00bb en rouge (<strong>background(255,0,0)<\/strong>), si la touche est &lsquo;<strong>v<\/strong>&lsquo;, l&rsquo;\u00e9cran est peint en vert et si la touche est &lsquo;<strong>b<\/strong>&lsquo;, il est \u00ab\u00a0peint\u00a0\u00bb en bleu. Les lettres sont ici \u00e9crite en minuscules, car pour key, b et B ou v et V ne sont pas les m\u00eames lettres.<br \/>\n<img decoding=\"async\" class=\"imageadroite\" src=\"\/dernier\/files\/2008\/12\/keyboard_arrows.png\" alt=\"\" width=\"220\" height=\"149\" align=\"right\" \/>On remarquera que le caract\u00e8re s&rsquo;\u00e9crit entre deux apostrophes droites ( <strong>&lsquo;<\/strong> &#8211; souvent utilis\u00e9 en remplacement de l&rsquo;apostrophe typographique\u00a0(<strong>\u2019<\/strong>)\u00a0ou de la minute (<strong>\u2032<\/strong>)).<\/p>\n<p><strong>keyCode<\/strong> s&rsquo;utilise de la m\u00eame mani\u00e8re, mais au lieu de contenir un caract\u00e8re, cette variable contient un code num\u00e9rique. Par exemple si je veux conna\u00eetre le keyCode apr\u00e8s que la touche &lsquo;<strong>a<\/strong>&lsquo; ait \u00e9t\u00e9 enfonc\u00e9e, Processing me renverra le chiffre 65. On peut par ailleurs comparer la variable keyCode \u00e0 un certain nombre de touches sp\u00e9ciales telles que\u00a0UP (fl\u00e8che haut), DOWN (fl\u00e8che bas), LEFT (fl\u00e8che gauche), RIGHT (fl\u00e8che droite), ALT, CONTROL et SHIFT (majuscule).<\/p>\n<div class=\"code\">\n<pre>void draw(){\n  \/\/ gestionnaire vide mais obligatoire\n}\nvoid keyReleased(){\n  background(255);\n  if(keyCode==UP){\n    rect(40,0,20,50);\u00a0\n  }\n  if(keyCode==DOWN){\n    rect(40,50,20,50);\n  }\n  if(keyCode==RIGHT){\n    rect(50,40,50,20);\n  }\n  if(keyCode==LEFT){\n    rect(0,40,50,20);\n  }\n}<\/pre>\n<\/div>\n<p>Dans cet exemple, lorsque la touche du clavier a \u00e9t\u00e9 utilis\u00e9e, la sc\u00e8ne est \u00ab\u00a0repeinte\u00a0\u00bb en blanc (background(255)), puis une s\u00e9rie de tests sont effectu\u00e9s pour savoir si la fl\u00e8che haut, la fl\u00e8che bas, la gauche ou la droite ont \u00e9t\u00e9 utilis\u00e9e. Pour chacun de ces cas possibles, un dessin diff\u00e9rent appara\u00eet \u00e0 l&rsquo;\u00e9cran.<\/p>\n<p>Encore un article assez aust\u00e8re. Les trois suivants seront, j&rsquo;en ai peur, encore pires.<\/p>\n<ol class=\"footnotes\"><li id=\"footnote_1_2661\" class=\"footnote\"> Le coin culture : tout le monde sait que la souris d&rsquo;ordinateur est une conqu\u00eate assez r\u00e9cente (th\u00e9orie: 1965, brevet: 1968, application industrielle: 1981), mais il est plus rare qu&rsquo;on se souvienne que le clavier, du moins le clavier coupl\u00e9 \u00e0 un ordinateur, est \u00e0 peine plus ancien, puisque son usage informatique ne remonte qu&rsquo;au d\u00e9but des ann\u00e9es 1960. Auparavant, on communiquait avec les ordinateurs \u00e0 l&rsquo;aide de cartes perfor\u00e9es ou simplement (?) par c\u00e2blage. <span class=\"footnote-back-link-wrapper\"> [<a href=\"#identifier_1_2661\" class=\"footnote-link footnote-back-link\">&#8617;<\/a>]<\/span><\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>Apr\u00e8s la souris, parlons du clavier1 .\u00a0Processing est capable d&rsquo;\u00abintercepter\u00bb\u00a0(c&rsquo;est le terme consacr\u00e9) les \u00e9v\u00e8nements du clavier \u2014\u00a0ce qui est passablement banal. Tout comme dans le cas de la souris, on distingue la frappe d&rsquo;une touche (keyReleased) de la demi-frappe (keyPressed). N\u00e9anmoins, le clavier et le bouton de la souris fonctionnent de mani\u00e8re passablement diff\u00e9rente [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[40],"tags":[],"class_list":["post-2661","post","type-post","status-publish","format-standard","hentry","category-processing"],"_links":{"self":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/posts\/2661","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2661"}],"version-history":[{"count":0,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=\/wp\/v2\/posts\/2661\/revisions"}],"wp:attachment":[{"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2661"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2661"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hyperbate.fr\/dernier\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}