conversion d'un script javascript en php ??

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : conversion d'un script javascript en php ??

par Sékiltoyai » 28 mai 2007, 20:18

Les classes mon ami, les classes :
<?php

class scramble
{

	private $seq = array();
	private $posit = array(0,0,1,2,2,3,4,4,5,6,6,7,8,9,9,10,11,11,12,13,13,14,15,15);

	public function scramble() 
	{
	
		$ls = -1;
		$j = 0;
		$f = 0;
		for($i=0;$i<40;$i++) 
		{
		
			do
			{
			
				switch( $ls )
				{
				
					case 0:
						$j = mt_rand(-11,11); 
						if ($j>=0)
						{
							$j++;
						}
						break;
				
					case 1:
						$j = mt_rand(-11,1);
						break;
				
					case 2:
						$j=0;
						break;
				
					default:
						$j = mt_rand(-11,12);
						break;
				
				}
			
			}
			while(
				($f>1 && $j>=-6 && $j<0) ||
				( (($f=$j)!==false) && $this->domove($j))
			);
		
			if($j>0)
			{
				$ls = 1;
			}
			elseif($j<0)
			{
				$ls = 2;
			}
			else
			{
				$ls=0;
				$f++;
			}
			$this->seq[$i] = $j;
		
		}
		return $this->seq;
	
	}


	private function domove($f)
	{
	
		$c = 0;
		if($f==0)
		{
		
			for($i=0; $i<6; $i++)
			{
				$c = $this->posit[$i+12];
				$this->posit[$i+12] = $this->posit[$i+6];
				$this->posit[$i+6] = $c;
			}
		
		}
		elseif($f>0)
		{
		
			$f=12-$f;
			if(
				($f<6 && $this->posit[$f+6]==$this->posit[$f+5]) ||
				($f>6 && $this->posit[$f-6]==$this->posit[$f-7]) ||
				($f==6 && $this->posit[0]==$this->posit[11]) ||
				($f>0 && $this->posit[$f-1]==$this->posit[$f])
			)
			{
				return true;
			}
		
			$t = array();
		
			for($i=0;$i<12;$i++)
			{
				$t[$i] = $this->posit[$i];
			}
			$c = $f;
		
			for($i=0;$i<12;$i++)
			{
				$this->posit[$i] = $t[$i];
				$c = (($c==11)? 0 : $c+1);
			}
		
		}
		elseif($f<0)
		{
		
			$f=-$f;
			if(
				($this->posit[$f+12]==$this->posit[$f+11]) ||
				($f<6 && $this->posit[$f+18]==$this->posit[$f+17]) ||
				($f>6 && $this->posit[$f+6]==$this->posit[$f+5]) ||
				($f==6 && $this->posit[12]==$this->posit[23])
			)
		
			$t = array();
		
			for($i=0;$i<12;$i++)
			{
				$t[$i] = $this->posit[$i];
			}
			$c = $f;
		
			for($i=0;$i<12;$i++)
			{
				$this->posit[$i] = $t[$i];
				$c = (($c==11)? 0 : $c+1);
			}
		
		}
		return false;
	
	}

	public function scramblestring()
	{
	
		$l=-1;
		$k = 0;
		$str = '';
	
		for($i=0; $i<count($this->seq); $i++)
		{
		
			$k = $this->seq[$i]; 
			if($k==0)
			{
				$str .= (($l==1)?'0':'/');
				$l=0;
			}
			elseif($k>0)
			{
				$str .= (($k>6)?$k-12:$k) . ',';
				$l=1;
			}
			elseif($k<0)
			{
				$str .= (($l<=0)?'0,':'') . (($k<=-6)?$k+12:$k);
				$l=2;
			}
		}
	
		$str .= (($l==1)?'0':'');
		return $str;
	}

}

function test()
{

	$test = new scramble();
	echo $test->scramblestring();

}

test();

?>

conversion d'un script javascript en php ??

par Spols » 28 mai 2007, 17:48

Bonjour à tous,

j'ai trouvé un script en javascript qui fait exactement ce que je voudrais faire en php,

il sert à créer un algorythme de mélange d'un square one,
en claire c'est une suite de mouvement qui mélange un puzzle de type rubik's cube mais en un peu plus complexe

mais voila vu qu'il y a plusieurs différence entre ces 2 languages,je n'arrive pas à le transcrire en php (il y a une notion de variable globale qui doit m'échapper au minnimum)

je vous mets le code javascript et php au cas où il y aurait une bonne âme pour s'y plonger, mais sinon si vous avez une idée de comment appliquer un script javascript dans un script php, je suis preneur

Code : Tout sélectionner

var seqlen=40; var numcub=4; var seq=new Array(); // move sequences var posit = new Array(); // piece array function parse() { var s=""; var urlquery=location.href.split("?") if(urlquery.length>1){ var urlterms=urlquery[1].split("&") for( var i=0; i<urlterms.length; i++){ var urllr=urlterms[i].split("="); if(urllr[0]=="len") { if(urllr[1]-0 >= 1 ) seqlen=urllr[1]-0; } else if(urllr[0]=="num"){ if(urllr[1]-0 >= 1 ) numcub=urllr[1]-0; } } } } parse(); function scramble(){ var i,j,ls,n,f; for( n=0; n<numcub; n++){ posit = new Array(0,0,1,2,2,3,4,4,5,6,6,7,8,9,9,10,11,11,12,13,13,14,15,15); ls=-1; seq[n]=new Array(); f=0; for(i=0; i<seqlen; i++){ do{ if(ls==0){ j=Math.floor(Math.random()*22)-11; if(j>=0) j++; }else if(ls==1){ j=Math.floor(Math.random()*12)-11; }else if(ls==2){ j=0; }else{ j=Math.floor(Math.random()*23)-11; } // if past second twist, restrict bottom layer }while( (f>1 && j>=-6 && j<0) || domove(j) ); if(j>0) ls=1; else if(j<0) ls=2; else { ls=0; f++; } seq[n][i]=j; } } } function scramblestring(n){ var s="",i,k,l=-1; for(i=0; i<seq[n].length; i++){ k=seq[n][i]; if(k==0){ if(l==1) s+="0"; s+="/"; l=0; }else if(k>0){ s+=(k>6?k-12:k)+","; l=1; }else if(k<0){ if(l<=0) s+="0,"; s+=(k<=-6?k+12:k); l=2; } } if(l==1) s+="0"; return s; } function domove(m){ var i,c,t,f=m; //do move f if( f==0 ){ for(i=0; i<6; i++){ c=posit[i+12]; posit[i+12]=posit[i+6]; posit[i+6]=c; } }else if(f>0){ f=12-f; if( posit[f]==posit[f-1] ) return true; if( f<6 && posit[f+6]==posit[f+5] ) return true; if( f>6 && posit[f-6]==posit[f-7] ) return true; if( f==6 && posit[0]==posit[11] ) return true; t=new Array(); for(i=0;i<12;i++) t[i]=posit[i]; c=f; for(i=0;i<12;i++){ posit[i]=t[c]; if(c==11)c=0; else c++; } }else if(f<0){ f=-f; if( posit[f+12]==posit[f+11] ) return true; if( f<6 && posit[f+18]==posit[f+17] ) return true; if( f>6 && posit[f+6]==posit[f+5] ) return true; if( f==6 && posit[12]==posit[23] ) return true; t=new Array(); for(i=0;i<12;i++) t[i]=posit[i+12]; c=f; for(i=0;i<12;i++){ posit[i+12]=t[c]; if(c==11)c=0; else c++; } } return false; } //--> </script> <script language="JavaScript1.1" type="text/javascript"> <!-- document.frm.len.value=seqlen; document.frm.num.value=numcub; scramble(); for( var i=0; i<numcub; i++){ document.writeln("<tr><td><font face='Arial' size=3><b>&nbsp;&nbsp;"+scramblestring(i)+"<\/b><\/font><\/td></tr>"); } //--> </script>
function scramble ()
{
	global $seq,$posit,$j;
	$posit = array(0,0,1,2,2,3,4,4,5,6,6,7,8,9,9,10,11,11,12,13,13,14,15,15);
	$ls = -1;
	$seq = array();
	$f= 0;
	for($i=0;$i<40;$i++)
	{
		do
		{
			if ($ls == 0)
			{
				$j = mt_rand(-11,11);
				if ($j>=0) $j++;
			}
			elseif ($ls == 1)
			{
				$j = mt_rand(-11,1);
			}
			elseif ($ls == 2)
			{
				$j=0;
			}
			else 
			{
				$j = mt_rand(-11,12);
			}
		}
		while (($f>1 && $j>=-6 && $j<0) || domove(j));
		if ($j>0) $ls=1;
		elseif ($j<0) $ls=2;
		else {$ls=0;$f++;}
		$seq[$i] = $j;
		echo"<pre>";print_r($posit);echo"</pre>";
	}
	return $seq;
}
function domove($f)
{
	global $posit,$j;
	if ($f==0)
	{
		for($i=0;$i<6;$i++)
		{
			$c = $posit[$i+12];
			$posit[$i+12] = $posit[$i+6];
			$posit[$i+6] = $c;
		}
	}
	elseif ($f>0)
	{
		$f=12-$f;
		if($posit[$f] == $posit[f-1]) return true;
		if($f<6 && $posit[$f+6] == $posit[$f+5]) return true;
		if($f>6 && $posit[$f-6] == $posit[$f-7]) return true;
		if($f==6 && $posit[0] == $posit[11]) return true;
		for($i=0;$i<12;$i++)
		{
			$t[$i] = $posit[$i];
		}
		$c = $f;
		for($i=0;$i<12;$i++)
		{
			$posit[$i] = $t[$c];
			if($c==11) $c = 0;
			else $c++;
		}
	}
	elseif($f<0)
	{
		$f = -$f;
		if($posit[$f+12] == $posit[f+11]) return true;
		if($f<6 && $posit[$f+18] == $posit[$f+17]) return true;
		if($f>6 && $posit[$f+6] == $posit[$f+5]) return true;
		if($f==6 && $posit[12] == $posit[23]) return true;
		for($i=0;$i<12;$i++)
		{
			$t[$i] = $posit[$i+12];
		}
		$c = $f;
		for($i=0;$i<12;$i++)
		{
			$posit[$i+12] = $t[$c];
			if($c==11) $c = 0;
			else $c++;
		}
	}
	return false;
}
function scramblestring(){
	global $seq;
	$l = -1;
	for($i=0;$i<40;$i++){
		$k=$seq[$i];
		if($k==0){
			if($l==1) $s.="";
			$s.="/";
			$l=0;
		}elseif($k>0){
			$s.=($k>6) ? $k-12 : $k;
			$s .= ",";
			$l=1;
		}elseif($k<0){
			if($l<=0) $s.="0,";
			$s.=($k<=-6) ? $k+12 : $k;
			$l=2;
		}
	}
	if($l==1) $s.="0";
	return $s;
}
scramble ();
$s =  scramblestring();