Php_puzzle----------
Url : http://codes-sources.commentcamarche.net/source/40264-php-puzzleAuteur : coucou747Date : 02/08/2013
Licence :
=========
Ce document intitulé « Php_puzzle » issu de CommentCaMarche
(codes-sources.commentcamarche.net) est mis à disposition sous les termes de
la licence Creative Commons. Vous pouvez copier, modifier des copies de cette
source, dans les conditions fixées par la licence, tant que cette note
apparaît clairement.
Description :
=============
Un jeu ou on a une image découpée en a*b cases, on enlève l
a case en bas à droite, on mélange, et on doit retrouver l'image d
'origine...
créez le dossier images dans lequel vous mettr
ez vos images (celles avec lesquelles vous voulez jouer), et n'oubliez pas de me
ttre des droits d'accès en écriture pour les miniatures...
<html> <head> <style> table{ bor der-collapse:collapse; } table tr td, table tr td img{ margin:0px; padding :0px; } </style> <script> var g=false; var l=500; function init(){ m=new matrice(); } function aclique(px, py){ if (g){ if (c onfirm("voulez vous recommencer ?")){ melange(l); g=false; } }else{ if (m.clique(px, py)){ m.affiche(); if (m.finit()){ alert("good game !!!"); g=true; } }else{ al ert("click incorect !"); } } } function melange(i){ var j, py, px, a, o=-1; for (j=0;j<i;j++){ b=true; while (b){ px= m.freex; py=m.freey; b=false; a=Math.floor(Math.random()*4); if (a==0){ px++; }else if (a==1){ px--; }else if (a==2){ py++; }else if (a==3){ py--; } if (px < 0 || px &g t; 9 || py < 0 || py > 9 || o==a) b=true; if (!b){ if (a= =0){ o=1; }else if (a==1){ o=0; }else if (a==2){ o=3; }else if (a==3){ o=2; } } } if (!m.clique (px, py)){ alert("click invalide !"); } } m.affiche(); } function matrice(){ this.freex=9; this.freey=9; this.clique=matri ceclique; this.affiche=matriceaffiche; this.finit=matricefinit; this.ta b=new Array(10); this.goodgame=new Array(10); for (i=0;i<10;i++){ t his.tab[i]=new Array(10); this.goodgame[i]=new Array(10); for (j=0;j< 10;j++){ this.tab[i][j]=document.getElementById(i+"_"+j).src; this.goodgame[i][j]=document.getElementById(i+"_"+j).src; } } } function matricefinit(){ for (i=0;i<10;i++){ for (j=0;j<10;j ++){ if (this.tab[i][j]!=this.goodgame[i][j]){ return false; } } } return true; } function matriceaffiche(){ for (i=0;i<10;i ++){ for (j=0;j<10;j++){ if (document.getElementById(i+"_" +j)) document.getElementById(i+"_"+j).src=this.tab[i][j]; } } } function matriceclique(px, py){ if (Math.abs(px-this.freex)+Math.a bs(py-this.freey)==1){ if (this.tab[this.freex][this.freey] && this. tab[px][py]){ a=this.tab[px][py]; this.tab[px][py]=this.tab[this.freex ][this.freey]; this.tab[this.freex][this.freey]=a; this.freex=px; this.freey=py; return true; }else{ //alert(px+'---'+py+'-----///- ----'+this.freex+'---'+this.freey); return false; } }else{ //ale rt("mauvais click ("+this.freex+","+this.freey+") click en : ("+px+","+py+")"); return false; } } m =0; //alert(m.tab); </script> </head> <?php if (isset($_GET ['image'])){ $rep=base64_encode($_GET['image']); echo '<body onload=" ;init();setTimeout(\'melange(l);\', 10000);">'; if (!is_dir('images/de coupe')){ mkdir('images/decoupe'); } if (!is_dir('images/decoupe/'.$rep.' ')){ mkdir('images/decoupe/'.$rep.''); } if (!file_exists('images/decoupe /'.$rep.'/image_0_0.png')){ $a=imagecreatefromjpeg('images/'.$_GET['image']); $x=imagesX($a); $y=imagesY($a); $b=imagecreatetruecolor(500,500); I mageCopyResized($b,$a,0,0,0,0,500,500,$x, $y); $c=imagecreatetruecolor(50,50) ; $cb = imagecolorallocate($c,0,0,0); $cw = imagecolorallocate($c,200,200, 200); for ($x=0;$x<10;$x++){ for ($y=0;$y<10;$y++){ if ($x!=9 || $y!=9){ imagecopy($c, $b, 0, 0, $x*50, $y*50, 50, 50); }else{ imagefilledrectangle($c, 0, 0, 50,50, $cw); } i mageline($c, 0, 0, 49,0, $cb); imageline($c, 49, 0, 49,49, $cb); image line($c, 49, 49, 0,49, $cb); imageline($c, 0, 49, 0,0, $cb); imagepng( $c, 'images/decoupe/'.$rep.'/image_'.$x.'_'.$y.'.png'); } } } echo ' <table>'; for ($y=0;$y<10;$y++){ echo '<tr>'; for ($ x=0;$x<10;$x++){ echo '<td><img src="images/decoupe/'.$rep. '/image_'.$x.'_'.$y.'.png" id="'.$x.'_'.$y. '" onclick=" ;aclique('.$x.','.$y.');" /></td>'; } echo '</tr>'; } echo '</table>'; }else{ echo '<body>'; if (!is_dir('images/ small/')){ mkdir('images/small/'); } $a=opendir('images/'); while(false !==($f=readdir($a))) { if (is_file('images/'.$f)) { if (!is_file('images/ small/'.$f)) { $c=imagecreatefromjpeg('images/'.$f); $x=imagesX($c); $y=imagesY($c); $k=min(160/$x, 120/$y); $x2=$x*$k; $y2=$y*$k; $b=imagecreatetruecolor($x2, $y2); ImageCopyResized($b,$c,0,0,0,0,$x2 ,$y2,$x, $y); imagepng($b, 'images/small/'.$f); } echo '<a href= "puzzle.php?image='.$f.'"><img src="images/small/'.$f.'&quo t; /></a>'; } } } ?> </body> </html>