{"id":181,"date":"2015-11-14T02:00:38","date_gmt":"2015-11-14T01:00:38","guid":{"rendered":"http:\/\/www.cmarzin.fr\/site\/?p=181"},"modified":"2016-01-07T23:47:27","modified_gmt":"2016-01-07T22:47:27","slug":"bejeweled","status":"publish","type":"post","link":"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/","title":{"rendered":"Bejeweled"},"content":{"rendered":"<p><script type=\"text\/javascript\" src=\"[insert_php]echo get_site_url();[\/insert_php]\/content\/tutos\/bejeweled\/jeu.js\"><\/script><\/p>\n<div class=\"sources\"><i class=\"fa fa-download\"><\/i> <a href=\"[insert_php]echo get_site_url();[\/insert_php]\/content\/tutos\/bejeweled\/bejeweled.rar\">Javascript<\/a> <a href=\"[insert_php]echo get_site_url();[\/insert_php]\/content\/tutos\/bejeweled\/bejeweledfla.rar\">Actionscript<\/a>\n<\/div>\n<h2 class=\"bloctitle\">Pr\u00e9sentation<\/h2>\n<div class=\"bloc\">\n<div class=\"captures\">\n\t\t<style type=\"text\/css\">\n\t\t\t#gallery-1 {\n\t\t\t\tmargin: auto;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-item {\n\t\t\t\tfloat: left;\n\t\t\t\tmargin-top: 10px;\n\t\t\t\ttext-align: center;\n\t\t\t\twidth: 25%;\n\t\t\t}\n\t\t\t#gallery-1 img {\n\t\t\t\tborder: 2px solid #cfcfcf;\n\t\t\t}\n\t\t\t#gallery-1 .gallery-caption {\n\t\t\t\tmargin-left: 0;\n\t\t\t}\n\t\t\t\/* see gallery_shortcode() in wp-includes\/media.php *\/\n\t\t<\/style>\n\t\t<div id='gallery-1' class='gallery galleryid-181 gallery-columns-4 gallery-size-thumbnail'><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled1.jpg' title=\"\" data-rl_title=\"\" class=\"rl-gallery-link\" data-rl_caption=\"\" data-rel=\"lightbox-gallery-1\"><img width=\"300\" height=\"169\" src=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled1-300x169.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled1-300x169.jpg 300w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled1-1024x578.jpg 1024w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled1.jpg 1273w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled2.jpg' title=\"\" data-rl_title=\"\" class=\"rl-gallery-link\" data-rl_caption=\"\" data-rel=\"lightbox-gallery-1\"><img width=\"300\" height=\"169\" src=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled2-300x169.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled2-300x169.jpg 300w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled2-1024x578.jpg 1024w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled2.jpg 1912w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled3.jpg' title=\"\" data-rl_title=\"\" class=\"rl-gallery-link\" data-rl_caption=\"\" data-rel=\"lightbox-gallery-1\"><img width=\"300\" height=\"169\" src=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled3-300x169.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled3-300x169.jpg 300w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled3-1024x578.jpg 1024w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled3.jpg 1912w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\n\t\t\t<\/dt><\/dl><dl class='gallery-item'>\n\t\t\t<dt class='gallery-icon landscape'>\n\t\t\t\t<a href='https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled4.jpg' title=\"\" data-rl_title=\"\" class=\"rl-gallery-link\" data-rl_caption=\"\" data-rel=\"lightbox-gallery-1\"><img width=\"300\" height=\"169\" src=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled4-300x169.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled4-300x169.jpg 300w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled4-1024x578.jpg 1024w, https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled4.jpg 1912w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>\n\t\t\t<\/dt><\/dl><br style=\"clear: both\" \/>\n\t\t<\/div>\n<\/div>\n<p>Ce jeu a port\u00e9 de nombreux noms mais \u00e0 la base il s&rsquo;agit d&rsquo;un jeu vid\u00e9o sur navigateur web d\u00e9velopp\u00e9 par PopCap Games et sorti en 2001. Son but est ultra simple, dans un plateau compos\u00e9 de colonnes et de lignes, vous devez aligner verticalement ou horizontalement plus de deux pi\u00e8ces de m\u00eame type pour les faire dispara\u00eetre. Toutes les pi\u00e8ces se trouvant au dessus venant combler le trou laiss\u00e9 par les pi\u00e8ces retir\u00e9es, et de nouvelles pi\u00e8ces \u00e9tant g\u00e9n\u00e9r\u00e9es pour combler le vide ainsi laiss\u00e9 par les pi\u00e8ces descendues. La base du jeu est donc extr\u00eamement simple et s&rsquo;agr\u00e9mente de nouvelles fonctionnalit\u00e9s selon les versions.\n<\/p><\/div>\n<div class=\"lsep\"><\/div>\n<div class=\"sourcesdown\"><i class=\"fa fa-book\"><\/i> <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Bejeweled\" target=\"_blank\">Wikipedia<\/a> <a href=\"http:\/\/forums.mediabox.fr\/wiki\/tutoriaux\/javascript\/divers\/exercice_bejeweled\" target=\"_blank\">Mediabox<\/a><\/div>\n<h2 class=\"bloctitle\">Le code Javascript de la classe jeu.js<\/h2>\n<div class=\"bloccode\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\/\/ variables\r\nvar canvas, ctx, W, H, posX, posY, decalX, decalY, T, i, j, C, L, score, p, choix, rendu, marqueur, images, stock, images;\r\n \r\n\/\/ importer un fichier \r\nfunction include(fileName){\r\n\tdocument.write(&quot;&lt;script type='text\/javascript' src='js\/&quot;+fileName+&quot;.js'&gt;&lt;\/script&gt;&quot; );\r\n}\r\ninclude(&quot;tuile&quot;); \r\n \r\n\/\/ quand la page est charg\u00e9e\r\nwindow.onload = function() {\r\n    canvas = document.getElementById('canvas');\r\n    ctx = canvas.getContext('2d');\r\n\tW = 480;\r\n\tH = 480;\r\n\tposX = canvas.offsetLeft;\r\n\tposY = canvas.offsetTop;\r\n\tcanvas.width = W;\r\n\tcanvas.height = H;\r\n\tdecalX = 45;\r\n\tdecalY = 45;\r\n\tT = 45;\r\n\tloadImages(9);\r\n}\t\t\r\n \r\n\/\/ chargement des images\r\nfunction loadImages(nbImg){\r\n\timages = &#x5B;];\r\n\tfor(i=1; i&lt;nbImg+1; i++){\r\n\t\tvar b = new Image();\r\n\t\tb.src = &quot;assets\/tuile&quot;+i+&quot;.png&quot;;\r\n\t\tb.onload = function() {\r\n\t\t\timages.push(this);\r\n\t\t\tif(--nbImg==0) init();\r\n\t\t};\r\n\t}\r\n}\r\n \r\n\/\/ initialisation du jeu\r\nfunction init() {\t\r\n\tstock = \t&#x5B;];\r\n\tsupprime = \t&#x5B;];\r\n\tfor(i=0; i&lt;8; i++) stock.push(&#x5B;]);\r\n\tmarqueur = {};\r\n\tmarqueur.x = -1000;\r\n\tmarqueur.y = -1000;\r\n\tscore = 0;\r\n\twhile(true){\r\n\t\tfor (i=0; i&lt;8*8; i++) new Tuile(i%8,parseInt(i\/8),T,decalX,decalY,stock);\r\n\t\tif (chercheCombis().length != 0) continue;\r\n\t\tif (!solutions()) continue;\r\n\t\tbreak;\r\n\t}\t\r\n\trender();\r\n\tcanvas.addEventListener(&quot;click&quot;, clickPiece, false);\r\n\tsetInterval(main, 15);\r\n}\r\n \r\n\/\/ d\u00e9placer les pi\u00e8ces\r\nfunction main(){\r\n\tvar M = false;\r\n\tfor (i=0; i&lt;8*8; i++){\r\n\t\tp = stock&#x5B;i%8]&#x5B;parseInt(i\/8)];\r\n\t\tif (p != null)\tM = p.move(M);\r\n\t}\r\n\tif(!M) changePieces();\r\n\trender();\r\n}\r\n \r\n\/\/ changer les pieces\r\nfunction changePieces(){\r\n\tvar c = chercheCombis();\r\n\tfor (i=0; i&lt;c.length; i++){\r\n\t\tfor (j=0; j&lt;c&#x5B;i].length; j++){\r\n\t\t\tp = c&#x5B;i]&#x5B;j];\r\n\t\t\tscore += (c&#x5B;i].length-1)*50;\r\n\t\t\tstock&#x5B;p.C]&#x5B;p.L] = null;\r\n\t\t\tfor (L=p.L-1; L&gt;=0; L--){\r\n\t\t\t\tif (stock&#x5B;p.C]&#x5B;L] != null){\r\n\t\t\t\t\tstock&#x5B;p.C]&#x5B;L].L++;\r\n\t\t\t\t\tstock&#x5B;p.C]&#x5B;L+1] = stock&#x5B;p.C]&#x5B;L];\r\n\t\t\t\t\tstock&#x5B;p.C]&#x5B;L] = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tfor (C=0; C&lt;8; C++){\r\n\t\tfor (L=7; L&gt;=0; L--) {\r\n\t\t\tif (stock&#x5B;C]&#x5B;L] == null) {\r\n\t\t\t\tp = new Tuile(C,L,T,decalX,decalY,stock);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (c.length == 0 &amp;&amp; !solutions()) finPartie();\r\n}\r\n \r\n \r\n\/\/ choisir une pi\u00e8ce\r\nfunction clickPiece(e){\r\n\tp = stock&#x5B;parseInt((e.clientX-posX-decalX)\/T)]&#x5B;parseInt((e.clientY-posY-decalY)\/T)];\r\n\tmarqueur.x = -1000;\r\n\tmarqueur.y = -1000;\r\n\tif (choix == null){\r\n\t\tmarqueur.x = p.x;\r\n\t\tmarqueur.y = p.y;\r\n\t\tchoix = p;\r\n\t} else {\r\n\t\tif (choix == p) permute(choix,p);\r\n\t\telse if (choix.L == p.L &amp;&amp; Math.abs(choix.C-p.C) == 1) permute(choix,p);\r\n\t\telse if (choix.C == p.C &amp;&amp; Math.abs(choix.L-p.L) == 1) permute(choix,p);\r\n\t\telse {\r\n\t\t\tmarqueur.x = p.x;\r\n\t\t\tmarqueur.y = p.y;\r\n\t\t\tchoix = p;\r\n\t\t}\r\n\t}\r\n\trender();\r\n}\r\n \r\n \r\n\/\/ permuter les pi\u00e8ces\r\nfunction permute(p1,p2){\r\n\tchoix = null;\r\n\tpermutePieces(p1,p2);\r\n\tif (chercheCombis().length == 0) permutePieces(p1,p2);\r\n}\r\nfunction permutePieces(p1,p2){\r\n\tC = p1.C;\r\n\tL = p1.L;\r\n\tp1.C = p2.C;\r\n\tp1.L = p2.L;\r\n\tp2.C = C;\r\n\tp2.L = L;\r\n\tstock&#x5B;p1.C]&#x5B;p1.L] = p1;\r\n\tstock&#x5B;p2.C]&#x5B;p2.L] = p2;\r\n}\r\n \r\n\/\/ cherche les combinaisons\r\nfunction chercheCombis(){\r\n\tvar liste = &#x5B;];\r\n\tvar combi;\r\n\tfor (L=0; L&lt;8; L++){\r\n\t\tfor (C=0; C&lt;8; C++){\r\n\t\t\tcombi = verifLignes(C,L);\r\n\t\t\tif (combi.length &gt; 2){\r\n\t\t\t\tliste.push(combi);\r\n\t\t\t\tC += combi.length-1;\r\n\t\t\t}\r\n\t\t\tcombi = verifColonnes(C,L);\r\n\t\t\tif (combi.length &gt; 2){\r\n\t\t\t\tliste.push(combi);\r\n\t\t\t\tL += combi.length-1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn liste;\r\n}\r\n \r\n\/\/ v\u00e9rifie les lignes\r\nfunction verifLignes(C,L){\r\n\tvar combi = &#x5B;stock&#x5B;C]&#x5B;L]];\r\n\tfor (i=1; i+C&lt;8; i++)\t{\r\n\t\tif (stock&#x5B;C]&#x5B;L].type == stock&#x5B;C+i]&#x5B;L].type)\tcombi.push(stock&#x5B;C+i]&#x5B;L]);\r\n\t\telse return combi;\r\n\t}\r\n\treturn combi;\r\n}\r\n\/\/ v\u00e9rifie les Colonnes\r\nfunction verifColonnes(C,L){\r\n\tvar combi = &#x5B;stock&#x5B;C]&#x5B;L]];\r\n\tfor (i=1; i+L&lt;8; i++) {\r\n\t\tif (stock&#x5B;C]&#x5B;L].type == stock&#x5B;C]&#x5B;L+i].type) combi.push(stock&#x5B;C]&#x5B;L+i]);\r\n\t\telse return combi;\r\n\t}\r\n\treturn combi;\r\n}\r\n \r\n\/\/ cherche une solution\r\nfunction solutions() {\r\n\tfor (C=0; C&lt;8; C++){\r\n\t\tfor (L=0; L&lt;8; L++){\r\n\t\t\tif (trouveCombis(C, L, &#x5B;1,0], &#x5B;&#x5B;-2,0],&#x5B;-1,-1],&#x5B;-1,1],&#x5B;2,-1],&#x5B;2,1],&#x5B;3,0]])) return true;\/\/ horizontal deux + un\r\n\t\t\tif (trouveCombis(C, L, &#x5B;2,0], &#x5B;&#x5B;1,-1],&#x5B;1,1]])) return true;\/\/ horizontal milieu\r\n\t\t\tif (trouveCombis(C, L, &#x5B;0,1], &#x5B;&#x5B;0,-2],&#x5B;-1,-1],&#x5B;1,-1],&#x5B;-1,2],&#x5B;1,2],&#x5B;0,3]])) return true;\/\/ vertical deux + un\r\n\t\t\tif (trouveCombis(C, L, &#x5B;0,2], &#x5B;&#x5B;-1,1],&#x5B;1,1]])) return true;\/\/ vertical milieu\r\n\t\t}\r\n\t}\r\n\treturn false;\/\/ pas de solution\r\n}\t\r\n \r\n\/\/ trouve les combinaisons\t\r\nfunction trouveCombis(C,L, obligatoire, complement) {\r\n \r\n\tvar type = stock&#x5B;C]&#x5B;L].type;\r\n \r\n\t\/\/ y a t'il la pi\u00e8ce obligatoire pour cr\u00e9er une combi\r\n\tif (!compareType(C+obligatoire&#x5B;0], L+obligatoire&#x5B;1], type)) return false; \r\n \r\n\t\/\/ et au moins une pi\u00e8ce pour faire le compl\u00e9ment\r\n\tfor(i=0;i&lt;complement.length;i++) {\r\n\t\tif (compareType(C+complement&#x5B;i]&#x5B;0], L+complement&#x5B;i]&#x5B;1], type)) return true;\r\n\t}\r\n\treturn false;\r\n}\t\r\n \r\n\/\/ compare les types des pi\u00e8ces\r\nfunction compareType(C,L,type){\r\n\tif (C&lt;0 || C&gt;7 || L&lt;0 || L&gt;7) return false;\r\n\treturn (stock&#x5B;C]&#x5B;L].type == type);\r\n}\r\n \r\n\/\/ fin de partie\r\nfunction finPartie(){\r\n\trender();\r\n\talert(&quot;Plus de combinaisons possibles, cliquez pour rejouer.&quot;);\r\n\tinit();\r\n}\r\n \r\n\/\/ Dessine le jeu\r\nfunction render() {\t\r\n\tctx.fillStyle = &quot;rgb(51,51,51)&quot;;\r\n\tctx.fillRect(0, 0, W, H);\r\n\tfor(var i=0; i&lt;stock.length; i++){\r\n\t\tfor(var j=0; j&lt;stock&#x5B;0].length; j++){\r\n\t\t\tctx.drawImage(images&#x5B;7], stock&#x5B;i]&#x5B;j].x, stock&#x5B;i]&#x5B;j].y);\r\n\t\t\tctx.drawImage(images&#x5B;stock&#x5B;i]&#x5B;j].frame-1], stock&#x5B;i]&#x5B;j].x, stock&#x5B;i]&#x5B;j].y);\r\n\t\t}\r\n\t}\r\n\tctx.drawImage(images&#x5B;8], marqueur.x, marqueur.y);\r\n\tctx.fillStyle = &quot;white&quot;;\r\n\tctx.font = &quot;16px Arial&quot;;\r\n\tctx.textAlign = &quot;right&quot;;\r\n\tctx.fillText(score + &quot; &quot;, W-40, 20);\r\n}\r\n<\/pre>\n<\/div>\n<div class=\"lsep\"><\/div>\n<h2 class=\"bloctitle\">Le code Javascript de la classe tuiles.js<\/h2>\n<div class=\"bloccode\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n\/\/ l'objet Tuile\r\nfunction Tuile(C,L,T,decalX,decalY,stock){\r\n\tthis.x = \tC*T+decalX;\r\n\tthis.y = \tL*T-T*5+decalY;\r\n\tthis.C = \tC;\r\n\tthis.L = \tL;\r\n\tthis.type = \tparseInt(Math.random()*7)+1\r\n\tthis.frame = \tthis.type;\r\n\tstock&#x5B;C]&#x5B;L] = \tthis;\r\n \r\n\tthis.move = function(M){\r\n\t\tif (this.y &lt; this.L*T+decalY) this.y +=  15, M = true;\r\n\t\tif (this.y &gt; this.L*T+decalY) this.y -=  15, M = true;\r\n\t\tif (this.x &lt; this.C*T+decalX) this.x +=  15, M = true;\r\n\t\tif (this.x &gt; this.C*T+decalX) this.x -=  15, M = true;\r\n\t\treturn M;\r\n\t}\r\n}\r\n<\/pre>\n<\/div>\n<div class=\"lsep\"><\/div>\n<div class=\"sourcesdown\"><i class=\"fa fa-cog\"><\/i> <a href=\"https:\/\/fr.wikipedia.org\/wiki\/R%C3%A9cursivit%C3%A9\" target=\"_blank\">R\u00e9cusivit\u00e9<\/a> <a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/API\/CanvasRenderingContext2D\" target=\"_blank\">Canvas Rendering Context 2D<\/a> <a href=\"https:\/\/developer.mozilla.org\/fr\/docs\/Web\/API\/WindowTimers\/setInterval\" target=\"_blank\">setInterval<\/a><\/div>\n<h2 class=\"bloctitle\">A retenir<\/h2>\n<div class=\"blocorange\">\nContrairement \u00e0 ce que l&rsquo;on pourrait penser, \u201cBejeweled\u201d est tr\u00e8s simple \u00e0 coder, ce jeu permet n\u00e9anmoins de mettre en pratique quelques algorithmes sympas pour retrouver des combinaisons ou des solutions sans un plateau de jeu. Pour ce coup l\u00e0 j&rsquo;ai choisi de travailler avec des tableaux \u00e0 deux dimensions et de ne pas forc\u00e9ment pousser le nettoyage et la compression du code en utilisant des raccourcis, le programme est assez court et cela vous \u00e9vite des manipulations et des formules inutiles \u00e0 ce stade, et utiliser une liste ou un tableau 2D n&rsquo;a que peu d&rsquo;influence sur le comportement du programme et son optimisation. Bien sur vous n&rsquo;avez qu&rsquo;une base, comme toujours, \u00e0 vous de l&rsquo;agr\u00e9menter avec tout un tas d&rsquo;effets, de bonus, de multiplicateurs en fonction du nombre de pi\u00e8ces dans une combinaison, d&rsquo;inverseurs, d&rsquo;indicateurs de combinaisons si le joueur met trop de temps, de pi\u00e8ces sp\u00e9ciales comme des bombes, etc\u2026\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p><i class=\"fa fa-clock-o\"><\/i> 04h00<br \/>\n<i class=\"fa fa-user\"><\/i> D\u00e9butant<br \/>\n<i class=\"fa fa-code\"><\/i> Moteur<br \/>\n<i class=\"fa fa-cog\"><\/i> Javascript<br \/>\n<i class=\"fa fa-graduation-cap\"><\/i> Tableaux et grilles<br \/>\n<i class=\"fa fa-suitcase\"><\/i> Bases du langage Javascript<\/p>\n","protected":false},"author":1,"featured_media":165,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"aside","meta":[],"categories":[4],"tags":[12,11,24],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Bejeweled - Cmarzin\" \/>\n<meta property=\"og:description\" content=\"04h00  D\u00e9butant  Moteur  Javascript  Tableaux et grilles  Bases du langage Javascript\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/\" \/>\n<meta property=\"og:site_name\" content=\"Cmarzin\" \/>\n<meta property=\"article:published_time\" content=\"2015-11-14T01:00:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-01-07T22:47:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"169\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture est.\">\n\t<meta name=\"twitter:data1\" content=\"6 minutes\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cmarzin.fr\/site\/#website\",\"url\":\"https:\/\/www.cmarzin.fr\/site\/\",\"name\":\"Cmarzin\",\"description\":\"Formation et d\\u00e9veloppement Web et Multimedias\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/www.cmarzin.fr\/site\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/#primaryimage\",\"inLanguage\":\"fr-FR\",\"url\":\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled.jpg\",\"contentUrl\":\"https:\/\/www.cmarzin.fr\/site\/wp-content\/uploads\/bejeweled.jpg\",\"width\":300,\"height\":169},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/#webpage\",\"url\":\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/\",\"name\":\"Bejeweled - Cmarzin\",\"isPartOf\":{\"@id\":\"https:\/\/www.cmarzin.fr\/site\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/#primaryimage\"},\"datePublished\":\"2015-11-14T01:00:38+00:00\",\"dateModified\":\"2016-01-07T22:47:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.cmarzin.fr\/site\/#\/schema\/person\/7c0008d57d9793c6cac9bea19c9dc1ba\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cmarzin.fr\/site\/\",\"url\":\"https:\/\/www.cmarzin.fr\/site\/\",\"name\":\"Accueil\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"https:\/\/www.cmarzin.fr\/site\/2015\/11\/14\/bejeweled\/#webpage\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.cmarzin.fr\/site\/#\/schema\/person\/7c0008d57d9793c6cac9bea19c9dc1ba\",\"name\":\"cmarzin@noos.fr\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/www.cmarzin.fr\/site\/#personlogo\",\"inLanguage\":\"fr-FR\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2719b7011bb8e1850a08c47f07a022ed?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2719b7011bb8e1850a08c47f07a022ed?s=96&d=mm&r=g\",\"caption\":\"cmarzin@noos.fr\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/posts\/181"}],"collection":[{"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/comments?post=181"}],"version-history":[{"count":8,"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/posts\/181\/revisions"}],"predecessor-version":[{"id":782,"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/posts\/181\/revisions\/782"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/media\/165"}],"wp:attachment":[{"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/media?parent=181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/categories?post=181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cmarzin.fr\/site\/wp-json\/wp\/v2\/tags?post=181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}