{"id":3537,"date":"2020-03-17T16:49:11","date_gmt":"2020-03-17T15:49:11","guid":{"rendered":"https:\/\/www.lyceelecorbusier.eu\/p5js\/?p=3537"},"modified":"2020-03-17T17:12:26","modified_gmt":"2020-03-17T16:12:26","slug":"243-cartes-postales-en-couleurs-veritables-243-cartes-postales-en-couleurs-veritables-cache-pour-les-etudiants","status":"publish","type":"post","link":"https:\/\/www.lyceelecorbusier.eu\/p5js\/?p=3537","title":{"rendered":"243 cartes postales en couleurs v\u00e9ritables"},"content":{"rendered":"<p style=\"text-align: left;\">Durant ce cours vous allez cr\u00e9er un g\u00e9n\u00e9rateur d&#8217;image qui vous permettra de cr\u00e9er 243 images diff\u00e9rentes.<\/p>\n<p style=\"text-align: left;\">En octobre 1978, <strong>Georges PEREC<\/strong> \u00e9crit <em>&#8220;Deux cent quarante trois cartes postales en couleurs v\u00e9ritables&#8221;<\/em> d\u00e9di\u00e9es \u00e0 <strong>Italo CALVINO<\/strong>.<\/p>\n<table class=\"alignleft\" style=\"width: 100%; border-style: dotted;\" border=\"1\">\n<tbody>\n<tr>\n<td>&#8220;Nous campons pr\u00e8s d\u2019Ajaccio. Il fait tr\u00e8s beau.<br \/>\nOn mange bien. J\u2019ai pris un coup de soleil.<br \/>\nBons baisers.&#8221;<\/td>\n<td>&#8220;On est \u00e0 l\u2019h\u00f4tel Alcazar. On bronze.<br \/>\nAh ce qu\u2019on est bien !Je me suis fait un tas de potes.<br \/>\nOn rentre le 7.&#8221;<\/td>\n<td>&#8220;On est \u00e0 l\u2019h\u00f4tel Alcazar. On bronze.<br \/>\nAh ce qu\u2019on est bien !Je me suis fait un tas de potes.<br \/>\nOn rentre le 7.&#8221;<\/td>\n<td>&#8220;Nous naviguons dans les environs de l\u2019Ile-Rousse.<br \/>\nOn se laisse bronzer. On mange admirablement.<br \/>\nJ\u2019ai pris un de ses coups de soleil !<br \/>\nBaisers et tout.&#8221;<\/td>\n<td>&#8220;On vient de faire le Dahomey. Nuits superbes.<br \/>\nBaignades sensas. Balades \u00e0 dos de chameau.<br \/>\nNous serons \u00e0 Paris le 15.&#8221;<\/td>\n<\/tr>\n<tr>\n<td>&#8220;Nous avons fini par atterrir \u00e0 Nice.<br \/>\nFarniente et dodo. Ah qu\u2019on est bien (malgr\u00e9 les coups de soleil).<br \/>\nBaisers.&#8221;<\/td>\n<td>&#8220;Un petit mot d\u2019Urbino. Il fait beau.<br \/>\nViva les scampi fritti et les fritto misto !<br \/>\nSans oublier Giotto et tutti quanti.<br \/>\nAmicales pens\u00e9es.&#8221;<\/td>\n<td>&#8220;On est \u00e0 l\u2019h\u00f4tel Les Jonquilles. Temps merveilleux.<br \/>\nOn va \u00e0 la plage. Avons fait connaissance avec tout plein de gens charmants.<br \/>\nOn vous embrasse.&#8221;<\/td>\n<td>&#8220;Nous sommes \u00e0 l\u2019h\u00f4tel des Quatre-Sergents.<br \/>\nBronzage. The Foot ! Coups de soleil.<br \/>\nTout plein de pens\u00e9es pour vous.&#8221;<\/td>\n<td>&#8220;Souvenir d\u2019Hell\u00e9nie. On se dore au soleil. Extra !<br \/>\nOn s\u2019est fait plein d\u2019amis.<br \/>\nMille pens\u00e9es.&#8221;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 style=\"text-align: left;\">Consignes<\/h2>\n<p style=\"text-align: left;\">Fabriquer 243 images diff\u00e9rentes,<br \/>\n\u00e0 partir de 3 ingr\u00e9dients de base : premier plans \/ d\u00e9cors \/ ciels<\/p>\n<p><strong>3<\/strong> -&gt; ciels<br \/>\n<strong>9<\/strong> -&gt; d\u00e9cors<br \/>\n<strong>9<\/strong> -&gt; premiers plans<br \/>\n<strong>3 x 9 x 9 = 243<\/strong><\/p>\n<p style=\"text-align: left;\">Ouvrir le sketch dans openprocessing : <a href=\"https:\/\/www.openprocessing.org\/sketch\/467363\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.openprocessing.org\/sketch\/467363<\/a><br \/>\n\u2014 Identifiez-vous et acc\u00e9dez au code<img loading=\"lazy\" width=\"83\" height=\"70\" class=\"size-full wp-image-3538 alignnone\" src=\"https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/code.png\" alt=\"\" \/> , afficher l&#8217;onglet &#8220;Files&#8221;\u00a0<img loading=\"lazy\" width=\"38\" height=\"56\" class=\"alignnone size-full wp-image-3539\" src=\"https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/files.png\" alt=\"\" \/><\/p>\n<p style=\"text-align: left;\"><img loading=\"lazy\" width=\"1936\" height=\"1887\" class=\"alignnone size-full wp-image-3540\" src=\"https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1.png\" alt=\"\" srcset=\"https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1.png 1936w, https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1-300x292.png 300w, https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1-1024x998.png 1024w, https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1-768x749.png 768w, https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1-1536x1497.png 1536w, https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1-1642x1600.png 1642w, https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1-1231x1200.png 1231w, https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/screen1-960x936.png 960w\" sizes=\"(max-width: 1936px) 100vw, 1936px\" \/><\/p>\n<p style=\"text-align: left;\">\u2014 Cliquez dans le code et faites &#8220;Entr\u00e9e&#8221;, utiliser le bouton\u00a0<img loading=\"lazy\" width=\"161\" height=\"79\" class=\"alignnone size-full wp-image-3541\" src=\"https:\/\/www.lyceelecorbusier.eu\/p5js\/wp-content\/uploads\/sites\/25\/2020\/03\/save-as-fork.png\" alt=\"\" \/> pour sauvegarder votre copie.<\/p>\n<h2 style=\"text-align: left;\">Analyse du code<\/h2>\n<p><strong>Nous allons lire le code du d\u00e9but \u00e0 la fin<\/strong><\/p>\n<p style=\"text-align: left;\">Les 3 variables sont d\u00e9clar\u00e9es comme liste (arrays*)<span style=\"background-color: #ffff00;\"><em><br \/>\n<\/em><\/span><em><span style=\"background-color: #ffff00;\">let fond = [];<\/span><\/em><br \/>\n<em><span style=\"background-color: #ffff00;\">let decor = [];<\/span><\/em><br \/>\n<em><span style=\"background-color: #ffff00;\">let motif = [];<\/span><\/em><\/p>\n<p style=\"text-align: left;\">Une <em>array<\/em> est une liste de variables. Les<em> arrays<\/em> sont pratiques car elles permettent d\u2019utiliser beaucoup de variables sans \u00eatre oblig\u00e9 de les nommer chacune.<br \/>\nPar exemple lorsque nous avons plusieurs dizaines d\u2019images dans une base de donn\u00e9es.<br \/>\nOn y reviendra en cours&#8230;<\/p>\n<p style=\"text-align: left;\"><span style=\"background-color: #ffff00;\"><em>let recording = false;<br \/>\n<\/em><span style=\"background-color: #ffffff;\">Cette variable nous dit que l&#8217;enregistrement d&#8217;image n&#8217;est pas vrai. Elle nous sera utile pour enregistrer des images quand nous le voudrons.<\/span> <\/span><\/p>\n<p><span style=\"background-color: #ffff00;\"><em>function preload(){ }<\/em><\/span> permet d&#8217;\u00e9viter que l&#8217;affichage ne commence avant que toutes les images soient charg\u00e9es en m\u00e9moire.<br \/>\nIl est possible de charger individuellement chaque image dans la fonction preload mais il faut \u00e9crire une ligne de code par image :<br \/>\n<span style=\"background-color: #ffff00;\"><em>img = loadImage(&#8220;fond_1.png&#8221;);<\/em><\/span><br \/>\nPour les 21 images cr\u00e9\u00e9es pour le projet il faudrait 21 lignes. \ud83d\ude41<\/p>\n<p><strong><span style=\"background-color: #00ff00;\">Les boucles<\/span><\/strong> permettent de simplifier l&#8217;\u00e9criture du code.<br \/>\n<span style=\"background-color: #ffff00;\"><em>for (let i=0; i &lt; 3; i++) {<\/em><\/span><br \/>\n<span style=\"background-color: #ffff00;\"><em> fond [i] = loadImage(&#8220;fond_&#8221; + i + &#8220;.png&#8221;);<\/em><\/span><br \/>\n<span style=\"background-color: #ffff00;\"><em> }<\/em><\/span><\/p>\n<p style=\"text-align: left;\"><span style=\"background-color: #00ff00;\">signifie :<\/span><br \/>\nPour la variable de valeur i, tant que i est inf\u00e9rieure \u00e0 3 il faut incr\u00e9menter (augmenter) cette valeur de 1 \u00e0 chaque ex\u00e9cution du programme.<br \/>\nLa seconde ligne pr\u00e9charge les images du fond. La variable fond ayant \u00e9t\u00e9 d\u00e9clar\u00e9e sous forme de liste toutes les valeurs de i sont charg\u00e9es. 3 images ici.<br \/>\nLa fonction<span style=\"background-color: #ffff00;\"><em> loadImage ()<\/em><\/span> charge toutes les images nomm\u00e9es <span style=\"background-color: #ffff00;\">fond_0.png<\/span>, <span style=\"background-color: #ffff00;\">fond_1.png<\/span>, <span style=\"background-color: #ffff00;\">fond_2.png<\/span><br \/>\nATTENTION : en algorithmique 0 est une valeur.<\/p>\n<p><span style=\"background-color: #ffff00;\"><em>function setup(){}<\/em><\/span> (rappel : setup est ex\u00e9cut\u00e9 1 seule fois) fixe ici la taille de note &#8220;sc\u00e8ne&#8221;, le fond est blanc et la vitesse d&#8217;ex\u00e9cution du programme.<span style=\"background-color: #ffff00;\"><em> frameRate()<\/em><\/span> indique le nombre d&#8217;images \u00e0 afficher par seconde. Par exemple, l&#8217;appel de fonction <span style=\"background-color: #ffff00;\"><em>frameRate(30)<\/em><\/span> tentera de rafra\u00eechir 30 fois par seconde. Si le processeur n&#8217;est pas assez rapide pour maintenir la fr\u00e9quence sp\u00e9cifi\u00e9e, la fr\u00e9quence d&#8217;images ne sera pas atteinte. La fr\u00e9quence d&#8217;images par d\u00e9faut est bas\u00e9e sur la fr\u00e9quence d&#8217;images de l&#8217;\u00e9cran (ici aussi appel\u00e9e &#8220;fr\u00e9quence de rafra\u00eechissement&#8221;), qui est r\u00e9gl\u00e9e \u00e0 60 images par seconde sur la plupart des ordinateurs. Une fr\u00e9quence d&#8217;images de 24 images par seconde (habituelle pour les films) ou plus sera suffisante pour des animations lisses.<\/p>\n<p style=\"text-align: left;\"><span style=\"background-color: #ffff00;\"><em>function draw() {}<\/em><\/span> (rappel : draw est ex\u00e9cut\u00e9 en boucle) va permettre d&#8217;afficher les images pr\u00e9charg\u00e9es.<\/p>\n<p><span style=\"background-color: #ffff00;\"><em>imageMode (CENTER);<\/em><\/span> indique au programme qu&#8217;il doit afficher les images en consid\u00e9rant que les coordonn\u00e9es de l&#8217;image, x=0 et y=0 se trouvent au centre de celle-ci et non dans le coin en-haut \u00e0 gauche qui est l&#8217;origine par d\u00e9faut.<\/p>\n<p><span style=\"background-color: #ffff00;\"><em>image(fond[int(random(fond.length))],540,383);<\/em><\/span><br \/>\nCette instruction affiche les images de la variable fond.<br \/>\n<span style=\"background-color: #ffff00;\"><em>int(random(fond.length))<\/em><\/span> charge al\u00e9atoirement une des trois images pr\u00e9charg\u00e9e.<br \/>\nToutes les images ayant la m\u00eame dimension<span style=\"background-color: #00ff00;\"><strong> 1086 px sur 766 px,<\/strong><\/span> elles doivent s&#8217;afficher au centre la position indiqu\u00e9e est <span style=\"background-color: #00ff00;\">x = 540 px<\/span> et <span style=\"background-color: #00ff00;\">y = 383 px<\/span>.<\/p>\n<p><span style=\"background-color: #ffff00;\"><em>if (recording == true){<\/em><\/span><br \/>\n<span style=\"background-color: #ffff00;\"><em> save(&#8220;generative_&#8221; + floor(random(1000000)) + &#8220;.png&#8221;); <\/em><\/span><br \/>\n<span style=\"background-color: #ffff00;\"><em> }<\/em><\/span><br \/>\nAutre \u00e9l\u00e9ment essentiel en programmation, les conditions.<br \/>\nDans le cas pr\u00e9sent la condition est la suivante : si la variable <em>recording<\/em> est vraie alors une image au format <em>png<\/em> est sauvegard\u00e9e sur le disque dur.<br \/>\nPar d\u00e9faut <em>let recording = false;<\/em><\/p>\n<p><span style=\"background-color: #ffff00;\"><em>function keyTyped(){}<\/em><\/span> permet d&#8217;attribuer des actions \u00e0 des touches du clavier<br \/>\n<span style=\"background-color: #ffff00;\"><em>if (key == &#8216;0&#8217;){ recording = true; }<\/em><\/span><br \/>\nAppuyer sur la touche 0 commence l&#8217;enregistrement d&#8217;images<br \/>\n<span style=\"background-color: #ffff00;\"><em>if (key == &#8216;1&#8217;){ recording = false; }<\/em><\/span><br \/>\nAppuyer sur la touche 1 stoppe l&#8217;enregistrement d&#8217;images<br \/>\n<em><span style=\"background-color: #ffff00;\">if (key == &#8216;2&#8217;){ noLoop(); }<\/span><\/em><br \/>\nArr\u00eate la lecture en boucle de la fonction draw<br \/>\n<span style=\"background-color: #ffff00;\"><em>if (key == &#8216;3&#8217;){ loop(); }<\/em><\/span><br \/>\nRelance la lecture de la function draw<\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: left;\">Cr\u00e9er vos cartes postales<\/h2>\n<p style=\"text-align: left;\">Quelques exemples ant\u00e9rieurs et pas forc\u00e9ment exemplaires :<\/p>\n<p style=\"text-align: left;\">\u2014 <a href=\"https:\/\/www.openprocessing.org\/sketch\/475530\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.openprocessing.org\/sketch\/475530<\/a><\/p>\n<p style=\"text-align: left;\">\u2014 <a href=\"https:\/\/www.openprocessing.org\/sketch\/475523\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.openprocessing.org\/sketch\/475523<\/a><\/p>\n<p style=\"text-align: left;\">\u2014 <a href=\"https:\/\/www.openprocessing.org\/sketch\/479166\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.openprocessing.org\/sketch\/479166<\/a> (avec une l\u00e9g\u00e8re variante du code)<\/p>\n<p style=\"text-align: left;\">\u2014 <a href=\"https:\/\/www.openprocessing.org\/sketch\/475518\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.openprocessing.org\/sketch\/475518<\/a> (sans commentaire)<\/p>\n<p style=\"text-align: left;\">Attention respecter <strong><span style=\"background-color: #00ff00;\">scrupuleusement<\/span><\/strong> les consignes<\/p>\n<p>\u2014 Trouver des images.<br \/>\n\u2014 Pr\u00e9parer les images.<br \/>\n\u2014 Toutes les images doivent \u00eatre des <span style=\"background-color: #ffff00;\"><strong>.png<\/strong><\/span><br \/>\n\u2014 Les <strong>fonds<\/strong> et le <strong>d\u00e9cors<\/strong> doivent \u00eatre \u00e0 la bonne taille<span style=\"background-color: #ffff00;\"><strong> 1080 pixels x 766 pixels<\/strong><\/span><br \/>\n\u2014 Les <strong>d\u00e9cors<\/strong> et <strong>motifs<\/strong> doivent \u00eatre en <span style=\"background-color: #ffff00;\"><strong>png transparents<\/strong><\/span><br \/>\n\u2014 <strong>nommer vos images<\/strong> en respectant les r\u00e8gles de nommage, si cela ne fonctionne pas \u00e0 la fin c&#8217;est en g\u00e9n\u00e9ral parce qu&#8217;il y a une erreur dans les nom de fichier (je rappelle 00 est la premi\u00e8re).<br \/>\n\u2014\u2014<strong> images ciels<\/strong> : fond_00.png \/ fond_01.png \/ fond_02.png \/ taille 1080 X 766<br \/>\n\u2014\u2014<strong> images d\u00e9cors<\/strong> : decor_00.png \/\u2026 \/ decor_08.png \/ taille 1080 X 766<br \/>\n\u2014\u2014 <strong>images motifs<\/strong> : motif_00.png \/ \u2026 \/ motif_08.png \/ taille variable<\/p>\n<p><strong>Dans openprocessing :<\/strong><\/p>\n<p>\u2014 Supprimer les images existantes dans OpenProcessing<br \/>\n\u2014 Ajouter vos images \u00e0 la place des images existantes.<br \/>\n\u2014 G\u00e9n\u00e9rer vos cartes postales\u2026 adapter le code si n\u00e9cessaire.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Durant ce cours vous allez cr\u00e9er un g\u00e9n\u00e9rateur d&#8217;image qui vous permettra de cr\u00e9er 243 images diff\u00e9rentes. En octobre 1978, Georges PEREC \u00e9crit &#8220;Deux cent quarante trois cartes postales en couleurs v\u00e9ritables&#8221; d\u00e9di\u00e9es \u00e0 Italo CALVINO. &#8220;Nous campons&#8230; <a class=\"read-more\" href=\"https:\/\/www.lyceelecorbusier.eu\/p5js\/?p=3537\">Lire la suite&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/3537"}],"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=3537"}],"version-history":[{"count":5,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/3537\/revisions"}],"predecessor-version":[{"id":3548,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=\/wp\/v2\/posts\/3537\/revisions\/3548"}],"wp:attachment":[{"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lyceelecorbusier.eu\/p5js\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}