AntiGuide: AwaleCloudPhpFunctions



PagePrincipale :: DerniersChangements :: ParametresUtilisateur :: Vous êtes 216.73.216.172 :: Signaler un abus :: le: 20250810 02:39:41
.. AwaleCloudPhp
le cadre ci dessous contient la moitié du code et et la suite: AwaleCloudPhpMain

<?php
// sources
// dire methode en apropos
// apropos sur attente
// faire arret reffraichissement
// detecter disparirion de adversaire
$method="";  // sera shadok, duo, secours, byemail
error_reporting(-1);
// $NS en apropos


echo "<html>";
echo '
<script language=javascript>
function myrefresh(){
	document.getElementById("submitnow").click()
	}
</script>';


// - - - - - - - - -  C O N S T A N T E S (ou presque)
// diverses constantes plus ou moins variables!
$SHOWNUM=false; // mettre lettre à côté des cases
$PAUSE=0;  // en fin d'execution du php pour avoir le temps de lire

$SAVENAVETTES=true;  // pour conserver toutes les étapes dans dossier detail
$version="20201201-0812";
$SERVER="http://flavigny.hd.free.fr";
$ANTIGUIDE="http://antiguide.free.fr";
$ECHOPLATEAU=false; // aficher qques valeurs sur plateau
$ECHOPARAM=false;
// dosier pour les fichiers de travail 
$WORK="../work";
$AWALEVBS="awale.vbs";
//  autres inits
// appel direct impossible
$PERIODE=0;
$MEME=false ; // true su meme joueurs
// ---------------------
// recuperer le nom du fichier!
define('racine', $_SERVER['PHP_SELF'], true);
$AWALE=substr(racine,1,strlen(racine)-5);

 // terrain pour page html et relance (exceptions forcées)
 $TERRAIN="[N:0 A:4 B:4 C:4 D:4 E:4 F:4 1:4 2:4 3:4 4:4 5:4 6:4 S:0]";
//$TERRAIN="[N:24 5:2 6:1 S:21]";
// exemples de cas particuliers forgés
//$TERRAIN="[N:18 A:1 B:1 C:0 D:0 E:1 F:0 1:0 2:0 3:0 4:0 5:0 6:5 S:22]";
//$TERRAIN="[N:18 A:0 B:1 C:0 D:0 E:0 F:0 1:0 2:0 3:1 4:0 5:4 6:1 S:23]";  // impossible affamer
//$TERRAIN="[N:19 A:0 B:0 C:0 D:0 E:0 F:0 1:0 2:0 3:1 4:0 5:4 6:1 S:23]";  // faut nou
//// [N:20 A:1 B:0 C:0 D:0 E:0 F:0 1:0 2:2 3:1 4:0 5:0 6:0 S:24]"; // sud gagnantoar famine 
// $TERRAIN="[N:12 A:0 B:2 C:0 D:14 E:0 F:0 1:0 2:0 3:3 4:1 5:0 6:0 S:16]";



// ------------------ f u n c t i o n s 
// antirebond et chrono à inclure seulement si frappe attendue autrement di jeu=='='
function installantirebondetchrono(){
	echo '
<script language=JavaScript>
// &nabdon en gagné!
// verifier graine(cmd) avnat de vbs
// encore une fois incohérence vide barré
// bulle pas votre tour
// GAFFE à double def en forgé (seconde ignorée)
// verifier parite avant jeu!
// manumilitari ?
// en shadok, remplacer l attente par un appel direct!
// faudrait detecter dessous disparu!
// vFestoir zoom caracteres
// fiabiliser detection dessous par count=8!

function invalider(qui){
	// se joue au moment du click, avant submit!
      // message pour remplacer "a vous de jouer..."	

var message
//if (qui == "N") message=" j attends, patientez "
//if (qui == "S") message=" Mise &agrave; feu. "
message=" Mise &agrave; feu. "
var OUI="oui"
if (document.getElementById("bounce").value == OUI){
	document.getElementById("shadok").value = 1
	  }
	document.getElementById("bounce").value = OUI
	// changer invite en merci! ne se voit pas sopuvent
	document.getElementById("trafic").innerHTML = message
	}
	';
	
echo '

var startTime = 0
var start = 0
var end = 0
var diff = 0
var timerID = 0
function chrono(){
	end = new Date()
	diff = end - start
	diff = new Date(diff)
	var msec = diff.getMilliseconds()
	var sec = diff.getSeconds()
	var min = diff.getMinutes()
	var hr = diff.getHours()-1
	if (min < 10){
		min = "0" + min
	}
	
	if (sec < 10){
		sec = "0" + sec
	}
	if(msec < 10){
		msec = "00" +msec
	}
	else if(msec < 100){
		msec = "0" +msec
	}
	document.getElementById("chronotime").innerHTML = hr + ":" + min + ":" + sec 
	//document.getElementById("filetime").value=444
	timerID = setTimeout("chrono()", 10)
}
function chronoStart(top){
	document.chronoForm.startstop.value = "stop chrono!"
	document.chronoForm.startstop.onclick = chronoStop
	document.chronoForm.reset.onclick = chronoReset
	start = new Date()
	var etait=start.getMilliseconds()
	start.setMilliseconds(etait-1000*top)
	chrono()
}
function chronoContinue(){
	document.chronoForm.startstop.value = "stop!"
	document.chronoForm.startstop.onclick = chronoStop
	document.chronoForm.reset.onclick = chronoReset
	start = new Date()-diff
	start = new Date(start)
	chrono()
}
function chronoReset(){
	document.getElementById("chronotime").innerHTML = "0:00:00:000"
	start = new Date()
}
function chronoStopReset(){
	document.getElementById("chronotime").innerHTML = "0:00:00:000"
	document.chronoForm.startstop.onclick = chronoStart
}
function chronoStop(){
	document.chronoForm.startstop.value = "reestart chrono!"
	document.chronoForm.startstop.onclick = chronoContinue
	document.chronoForm.reset.onclick = chronoStopReset
	clearTimeout(timerID)
}
</script>';
}



function MYREFRESH(){
	echo "<script language=javascript>myrefresh()</script>";
}
function boutabout(){
// construction d'une chaine de tous les parametres
$longparam="";
$v=array_values($_REQUEST);
$r=array_keys($_REQUEST);

for ($i=0;$i<count($v);$i=$i+1) {
	$longparam=$longparam.$r[$i]."=".$v[$i]."&";
}
return $longparam;
}

function chgttime(){
	global $navette;
	$act=0;
	if (file_exists($navette)) $act=filemtime($navette);
	$old=0;
	if (isset($_REQUEST['filetime'])) $old=$_REQUEST['filetime'];
	$chgt=$act!=$old;
	 if ("$act"=="0") $chgt=true;
//     echo "old=$old act:$act chgt: $chgt<br>";
	
	return $chgt;
}
function ajout($x,$y){return $x."&$y=".$_REQUEST["$y"];}

function pause(){
	global $PAUSE;
	if ($PAUSE>0) {
		echo "PAUSE($PAUSE)";
		sleep($PAUSE);
		echo " terminee"; 
	}
}
function enigme(){
	
echo '
<!-- enigme pour page initiale -->
<script language="Javascript">
var pair=0
var nbp=13 // nombre de nombres premiers utilisés
var alea=[1,2,3,5,7,11,13,17,19,23,29,31,37]
var nb=[1,2,3,5,7,11,13,17,19,23,29,31,37]
function init(){
	// tirer au hasard l ordre de presenttion des nombres 
var inb=0
while (nbp>0){
var from=parseInt(nbp*Math.random()) // 0 à nbp-1
// ranger le nb tire
nb[nbp-1]=alea[from]
// deplacer les suvat (tirage sans remise!)
if (from<nbp-1){
    for (inb=from;inb<nbp-1;inb=inb+1) {
        alea[inb]=alea[inb+1]
    }
  }
  nbp=nbp-1
} // while nbp>0
// tirer au hasard le nombre question
var n1=0
var n2=0
// eviter 2 serait utilisable seulement dans dans 4=2+2 mais pas addicitone a un premier impair
// chercher le premier nombre premier impair 
do {
 n1=nb[parseInt(13*Math.random())]
} while (n1==2)
// chercher le deuxieme nombre premier impair 
do {
 n2=nb[parseInt(13*Math.random())]
} while (n2==2)

 document.moi.tot.value=n1+n2

 document.moi.b1.value=nb[0]
 document.moi.b2.value=nb[1]
 document.moi.b3.value=nb[2]
 document.moi.b4.value=nb[3]
 document.moi.b5.value=nb[4]
 document.moi.b6.value=nb[5]
 document.moi.b7.value=nb[6]
 document.moi.b8.value=nb[7]
 document.moi.b9.value=nb[8]
 document.moi.b10.value=nb[9]
 document.moi.b11.value=nb[10]
 document.moi.b13.value=nb[12]
 document.moi.b12.value=nb[11]

}

function faire(n) {
	if (pair>1  && document.moi.total.value==0) pair=0;
 pair=pair+1
 if (pair==1){
	 document.moi.gg.value=n
	 document.moi.retry.value="Choississez un second nombre"
 }
 if (pair==2) {
	 document.moi.dd.value=n
   }
 document.moi.total.value=parseInt(document.moi.gg.value)+parseInt(document.moi.dd.value)
 if(pair==2  && (document.moi.total.value==parseInt(document.moi.pair.value))){
	// alert("OK")
	   document.moi.retry.value="Bravo. "
       document.getElementById("invite").innerHTML="Merci, renseignez les cadres ci dessous. "
 //  alert("OK")
//	  document.moi.choix.disabled=false
      document.moi.retry.disabled=true
   //   document.moi.retry.enabled=false
        document.getElementById("noms").innerHTML="Noms des joueurs (adresses courriel pour jouer &agrave; distance)"
        document.getElementById("partie").innerHTML= "<br>Nom &agrave; donner &agrave; la partie: "
        document.getElementById("moi").innerHTML= "<br>Moi: "
        document.getElementById("lui").innerHTML= "<br>Lui: "
   //fieldmeth
      document.moi.fieldmeth.disabled=false
     

}
 if(pair==2 && (document.moi.total.value!=parseInt(document.moi.pair.value)))
    document.moi.retry.value=" Ooops, try again! "
}

</script>';


}

function resoudre(){

echo '
Trouvez deux nombres premiers dont la somme fait: <input disabled id=tot name=pair value="" size=3 style="background-color:white;color:green">

 <br> 
  <input type=button  id="b1"  onclick="faire(nb[0])" style="height:30px;" >
  <input type=button  id="b2"  onclick="faire(nb[1])" style="height:30px;">
  <input type=button  id="b3"  onclick="faire(nb[2])" style="height:30px;">
  <input type=button  id="b4"  onclick="faire(nb[3])" style="height:30px;">
  <input type=button  id="b5"  onclick="faire(nb[4])" style="height:30px;">
  <input type=button  id="b6"  onclick="faire(nb[5])" style="height:30px;">
  <input type=button  id="b7"  onclick="faire(nb[6])" style="height:30px;">
  <input type=button  id="b8"  onclick="faire(nb[7])" style="height:30px;">
  <input type=button  id="b9"  onclick="faire(nb[8])" style="height:30px;">
  <input type=button  id="b10"  onclick="faire(nb[9])" style="height:30px;">
  <input type=button  id="b11"  onclick="faire(nb[10])" style="height:30px;">
  <input type=button  id="b12"  onclick="faire(nb[11])" style="height:30px;">
  <input type=button  id="b13"  onclick="faire(nb[12])" style="height:30px;">
  
  ';

	echo '
<br>  <input  disabled name=g id="gg" value="0" size=3>
+
<input disabled name=d id="dd" value="0" size=3>

<input disabled name=d id="total" value="0" size=3>
&nbsp;&nbsp;&nbsp;&nbsp;
<input type=button  id="retry" value="Choississez un nombre dans la ligne ci-dessus   " 
  onclick="document.moi.retry.value=';
  echo "'Choississez un nombre dans la ligne ci-dessus';document.moi.gg.value=0;document.moi.dd.value=0;document.moi.total.value=0; \"
  style='height:30px;'>";
}


function oppose($x){
	 if ("$x"=="N") return "S";
	 if ("$x"=="S") return "N";
	 // gaffe si x vide!
	 // peut se produire avant jeu en cours
	 // ALERT(1,"appel oppose de ni N ni S");
	 return "";
}
function stamped($seed){
	global $WORK;
	global $nomcsv;
	if (strlen($seed)==0)return "";
	$gagne=false;
	//ALERT(2,"valider $seed");
	while (!$gagne){
		$radical="$seed-".date("YmdHis");
	//	ALERT(3,"radical: $radical");
		if (!file_exists("$WORK/$radical")){
			// ALERT(4,"$WORK/$radical  n est pas la je je cree");
			$cree=mkdir("$WORK/$radical");
			if (!$cree){
				ALERT(5,"echec creation $WORK/$radical"); 
				return;
			};
			$nomcsv="$WORK/$radical/$radical.csv";
			$gagne=true;
			$f=fopen($nomcsv,"w");
			if (!$f) ALERT(6,"erreur creation de  $nomcsv");
			fclose($f);
			return $radical;
		}
    // atendre 
	sleep(1);
	}
}
function serialgame(){
	global $SERVER;
	global $TERRAIN;
	global $k;
	global $NS;
	global $AWALE;
	global $by;
	global $adv;
	global $duo;
	global $method;
	// il n'est pas prévu d'inverser les rôle, soon!
   if ("$NS"=="N")return;
  $tt2=encoder("$TERRAIN");

 // increment le token 
 if (!strpos($k,"_")) $nk=$k."_1";
else {
	// supprimer au dela à la fin
	$possouli=strpos($k,"_");
	$nombre=substr($k,$possouli+1);
	$nombre=$nombre+1;
	$nk=substr($k,0,$possouli+1).$nombre;
	}
//echo "<br>GAFFE: TRAVAUX EN COURS by:$by adv:$adv <br>";
// pour bis shadok 
//echo "\n<br><input type=button style='background-color:white;color:red' value=\"$by lance une nouvelle partie contre $adv\" onclick='window.open(\"$SERVER/$AWALE.php?meme=1&duo=$duo&web=2&relance=1&by=$by&coups=1&nordsud=S&token=$nk&periode=1&t=$tt2&adversaire=$adv\",\"_self\")'>";
echo "\n<br><input type=button style='background-color:white;color:red' value=\"$by lance une nouvelle partie contre $adv\" onclick='window.open(\"$SERVER/$AWALE.php?meme=1&method=$method&web=2&relance=1&by=$by&coups=1&nordsud=S&token=$nk&periode=1&t=$tt2&adversaire=$adv\",\"_self\")'>";

}// serial game
// fin de serial ghame

function encoder($T){
		$tt=substr($T,1,strlen($T)-2);
	$tt2="%5b";
	for ($i=0;$i<strlen($tt);$i=$i+1) {
		$unc=substr($tt,$i,1);
		if ("$unc" == " ") $unc="%20";
		$tt2=$tt2.$unc;
	}
	$tt2=$tt2."%5d";
return $tt2;
}

function hhmmss($sec){
	$s=$sec % 60;
	$sec=$sec-$s;
	$m=$sec/60;
	$h=$sec-60*$m;
	return "$h:$m:$s";
}

function num($long){
 $deb=strpos($long,"#");
 $L2=substr($long,$deb+1);
 $fin=strpos($L2,"(");
 return substr($L2,0,$fin);
}


function ALERT($n,$texte){ // GAFFE synonyme en javascript!, c'est piégeux
      echo "<script language='Javascript'> {alert('#$n: $texte')}</script>\n";
 }
 
 // 

function RECULER(){ // GAFFE synonyme en javascript!
      echo "<script language='Javascript'> {window.history.back();Location.reload(true)}</script>\n";
 }
 
 
function isnum($x){
	for ($inum=0;$inum<strlen($x);$inum=$inum+1){
		$unc=substr($x,$inum,1);
		$oui=strpos("0123456789",$unc);
		if (!$oui) return false;
	}
	return true;
}
 
function isemail($x){
		$oui=strpos($x,"@");
		if (!$oui) return false;
		return true;
}
 
function trimcrlf($in){
	$inin=$in;
	if (strlen($in)>0){
    while (strlen($inin)>0 && substr($inin,strlen($inin)-1)<=" ") $inin=substr($inin,0,strlen($inin)-1);
	}
	return $inin;
}
function createflag($nom){
	echo "createflag $nom<br>";
	$fl=fopen($nom,'a');
	fclose($fl);
} // createflag

function RESTART($appel){
	global $AWALE;
	global $SERVER;
	// relance
	$k1=$_REQUEST['token'];
	$m="";
	if (isset($duo) ){
		if ($duo)$m="&method=duo";
	}
		    	$n="restart=1&reset=1&web=2&nordsud=S$m&";
			    $n=ajout($n,'token');
				$n=ajout($n,'coups');
			    $n=ajout($n,'by');
				$n=ajout($n,'adversaire');
				$n=ajout($n,'t');
				$n=ajout($n,'periode');
	raw(9,"coup perdu, relance\r\n");
	ALERT(7,"Lancement perdu; sans doute frappe trop rapide (cas: $appel).");
// relancer la partie au coup précédent dans la meme fenetre
				$todo="window.open(\"$SERVER/$AWALE.php?$n\",'_self')";
	echo "\n<script language='javascript'>$todo</scripT>";
}

function showhisto(){
	global $WORK;
	global $longparam;
	//ALERT(8,"debut");
	$lold="";
	$k7=$_REQUEST['token'];
	if (!file_exists("$WORK/$k7/$k7.csv")){
	//	echo "pas de fichier $WORK/$k7/$k7.csv";
	echo "aucun coup jou&eacute;<br>";
		return true;
	}
$fp=fopen("$WORK/$k7/$k7.csv",'r');
if (!$fp)return true;
echo"partie: $k7<br>";
$clos=false;
while (!feof($fp)){
	$ligne=fgets($fp);
	echo $ligne;
	if (strpos($ligne,"perd")>0)$clos=true;
	if (strpos($ligne,"gagn")>0)$clos=true;
	if (!feof($fp)) echo "<br>";
}
fclose($fp);
if (!$clos) echo $_REQUEST['ligne'].", ".$_REQUEST['last']." , <br>";
return true;
}


// ------------ fin de F u n c t u o n 

$duo=false;
$secours=false;
$byemail=false;
$SOLO=false;


$longparam= boutabout();
if($ECHOPARAM)echo "<br><br><br><br>$longparam<br>";

if (isset($_REQUEST['method'])){
	$method=$_REQUEST['method'];
	if (isset($_REQUEST['by']))$by=$_REQUEST['by']; //"ShadokDuDessus";
	if (isset($_REQUEST['adversaire']))$adv=$_REQUEST['adversaire']; //"ShadokDuDessus";

if("$method"=="shadok"){
	$SOLO=true;
	//alert("SOLO mis a true");
}

if ("$method"=="duo") {
	$duo=true;
}

if ("$method"=="secours") {
	$secours=true;
}

if ("$method"=="byemail"){
	$byemail=true;
}
// faire aussi couriel 
// si shadok ne rien faire, c'est le choix par defaut
}

$cmdline="";
// si cmd non vide initile afficher dans febug
// projet si cmd vide ne rien afficher!
// bnavette efface si hnage malgré param contraire 
//$LARGEUR = "<script language='Javascript'> document.write(window.innerWidth);  </script>"; //obtenir largeur fenetre
  

echo "\n<!--";
echo var_dump($_REQUEST)."<br>"; //1
echo "\n-->\n";

if (isset($_REQUEST['jeu'])){
if ($_REQUEST['jeu']=="=" && (!$SOLO || $_REQUEST['nordsud']=="S")) installantirebondetchrono();
}

// intercepter les "cas particuliers"

if (isset($_REQUEST['source'])){
	if ($_REQUEST['source']){
echo "<html><body><form>";
  ALERT(9,"ADIAMOO");

 echo "$AWALE.php version:$version<br>";
 $source=fopen("$AWALE.php","r");
 while (!feof($source))  echo fgets($source)."<br>";
	
	fclose($source);
  echo "</form></body></html>"; 
 // ALERT(10,"FINIO");
  pause();
	return;
}
}

if (isset($_REQUEST['apropos'])){
	if ($_REQUEST['apropos']){
 echo "<html><body><form>";
 echo "$AWALE.php version:$version<br>";
 if (isset($_REQUEST['token']))echo "partie: ".$_REQUEST['token']." <br>";
 echo "Pour tout savoir, lisez: <a href=\"$ANTIGUIDE/wiki/wakka.php?wiki=AwaleInternet\">http://antiguide.free.fr/wiki/wakka.php?wiki=AwaleInternet</a><br>";


  echo "</form></body></html>"; 
 pause();
 return;
}
}  // apropos

// si demande affichage lien
if (isset($_REQUEST['lien'])){
	if ($_REQUEST['lien']){
 echo "<html><body><form>";
 echo "$AWALE.php version:$version <br> LIEN POUR DISTANT: <br>";
 $k=$_REQUEST['token'];
  echo "partie: $k <br>";
		$lien=fopen("../work/$k/$k.lien.txt","r");
		echo fgets($lien);
		fclose($lien);
 pause();
 return;
}
}  // apropos

// si fichier lien existe afficher bouton
if (isset($_REQUEST['token'])){
	$k=$_REQUEST['token'];
if (strlen($k)>0){
// alert ("tester le lien: ../work/$k/$k.lien.txt : ".file_exists("../work/$k/$k.lien.txt"));
// ci dessous plutiot web=-2 et S
if (file_exists("../work/$k/$k.lien.txt")  && $_REQUEST['web']!="-1"){
  echo "\n<br><input  type=button  title='montrer le lien pour adversaire'  value='Lien &agrave; transmettre &agrave; votre adversaire' style='background-color:white;color:green' 
onclick='window.open(\"$SERVER/$AWALE.php?lien=1&token=$k\",\"_blank\")' >";
}
}
}

$maj="";

// compteur de réexcution (pour comprtement spécial aux remier coups)
if (isset($_REQUEST['iteration'])) 	$iteration=$_REQUEST['iteration']+1;
else $iteration=0;
 
if (isset($_REQUEST['histo'])) {
	if (showhisto()) {
		return;;
	}
}

if (isset($_REQUEST['by']) && !isset($by) ) {
	if (strlen($_REQUEST['by'])>0) $by=$_REQUEST['by'];
}

if (isset($_REQUEST['adversaire']) && !isset($adv)) {
	if (strlen($_REQUEST['adversaire'])>0)$adv=$_REQUEST['adversaire'];
}



// tester by

//echo "<!-- by mis a $by<br>-->";
//$by="Shadok_du_dessus";
$yaeubold=false;

$SOON=false;
// ne pas faire lu1 si len(cmd)>0

$RAF=1; // période raffraichissement préremplie sur page html générée
$verdict="";
$verdictbrut="";
$LU1=false;
$YAEUEXEC=false;  // passe a vrai si 
$elapsed=0;
if (isset($_REQUEST['elapsed'])) $elapsed=$_REQUEST['elapsed'];

/// que faire de [N:24 A:0 B:0 C:0 D:0 E:0 F:1 1:1 2:0 3:0 4:0 5:0 6:1 S:21] 
$SHOWREFRESH=" hidden" ;
$MANUMILITARI=false  ;  // demande bouton continuer a chaque page
$DELTMP=false; // false ne pas supprimer les temporaires à la fin

$termine=false;
$terminex2=false;

if (isset($_REQUEST['termine'])) {
	$terminex2=$_REQUEST['termine'];
}

$msg="";
$tlu=false;
$avous=false;
$liste="";
$stampstart=time();
$ignns1="";
$ignns="";

$k="";  //0
//$nomcsv="";
if (isset($_REQUEST['token']))	$k=trim($_REQUEST['token']); //2

$NS="unk";
// $submited=0;
if (isset($_REQUEST['nordsud'])) $NS=$_REQUEST['nordsud'];


// drapeau
//echo "tester abandon<br>";
if (isset($_REQUEST['abandon']))	{
if (strlen($_REQUEST['abandon'])>0) {
$by=$_REQUEST['by'];
$adv=$_REQUEST['adversaire'];
$PERIODE=$_REQUEST['periode'];
// pas possible en replay

// on pourrait faire periodems ici
$k=$_REQUEST['token'];  //1
$NS=$_REQUEST['nordsud'];
	echo "$AWALE<br>";
// offre recommence en incrementant le token

serialgame();
// place bouton
   echo "\n<br><input  type='button'  title='playagain'  value='Play again (rejouer &eacute;nigme).' style='background-color:white;color:red' 
   onclick='window.open(\"$SERVER/$AWALE.php\",\"_self\")";
   echo "\n<br><input   title='fermer'  value='fermer la fen&ecirc;tre ' style='background-color:white;color:green' 
 onclick=\"window;close()' \" >";
  echo "\n</html>";
  pause();

	return;
}
} //abandon
// echo "----------------a<br>";

// acces à la navette depuis dossier html
// noms navettes et flag 1
$navette="$WORK/$k/$NS/$k.txt";  
$flag=   "$WORK/$k/$NS/$k.lck";
$antinavette="$WORK/$k/".oppose($NS)."/$k.txt";
$antiflag=   "$WORK/$k/".oppose($NS)."/$k.lck";


//------------------------
if (isset($_REQUEST['t'])) {
	  $trelu=$_REQUEST['t'];
	//h  echo "tparam: $trelu (sera remplace si navette lue)<br>";
}

	$j="";
	if (isset($_REQUEST['jeu']))$j=$_REQUEST['jeu'];

if ("$navette" != ".txt"){


 $chgt=chgttime();

// essai
if (!$chgt) RECULER();


if (file_exists($flag) && file_exists($navette) ){
     $fi=fopen($navette,'r');  //1
   	$LU1=true;

//b	echo "lire navette: $navette<br>";
	   $trelu=trimcrlf(fgets($fi));
	   $t=$trelu;
	   $ignnb=trimcrlf(fgets($fi));
	   $liste=trimcrlf(fgets($fi));
	   $prochain=trimcrlf(fgets($fi));
	   $ignns=trimcrlf(fgets($fi));
	   $ignns1=substr($ignns,0,1);
	   $avous=$ignns1==$NS;
	   $bonnefin=trimcrlf(fgets($fi));
	//   $savefin=$bonnefin;
	   $nous="N";
	   $ouf=strpos($bonnefin,"Sud");
	   if ($ouf>0)$nous="S";
	   // echo "----------------C<br>";


        
	   // en réserve pour acheminer un message entre les joueurs, actuellement pas utilisé
	   $message=trimcrlf(fgets($fi));
		
	// -----------------------------------
	fclose($fi);
	
 	$tlu=true;
	$actuelchiffre=false;
for ($i6=0;$i6<6;$i6=$i6+1){
	if (strpos("!".$liste,substr("123456",$i6,1)))$actuelchiffre=true;
}
$actuellettre=false;
for ($i6=0;$i6<6;$i6=$i6+1){
	if (strpos("!".$liste,substr("ABCDEF",$i6,1)))$actuellettre=true;
}
$actuel=(("NS"=="S" && $actuelchiffre ) || ("$NS"=="N" && $actuellettre));

//---------------------------
	 $premlettre=substr($bonnefin,0,1);
	
// traitement de gagannt par famine		
		 if (("$premlettre"=="S" || "$premlettre"=="N") && strpos($bonnefin,"gagnant")>0) {
		if (!$terminex2  && $NS==substr($bonnefin,0,1))	 	raw(2229,"$prochain, $t , $bonnefin\r\n");//prevcase: $prevcase ");

			 $termine=true;
			
	 	 	if ("$premlettre"=="$NS") {
				 $verdict= '<span style="color: #00ff00"><b>gagn&eacute; (par famine). </b><span style="color: #000000">';
		 	     $verdictbrut= 'gagné (par famine).';
			}
				else  {
					$verdictbrut= 'perdu (par famine) ';
					$verdict= '<span style="color: #ff0000"><b>perdu (par famine). </b><span style="color: #000000"> ';
				}
	
    		  
		 }; 
		 
		 
// traitement de gagne
 if (("$premlettre"=="S" || "$premlettre"=="N") && strpos($bonnefin,"gagne")>0) {
	 $termine=true;
	 	if (!$terminex2  && $NS==substr($bonnefin,0,1)) raw(2229,"$prochain, $t, $bonnefin\r\n");//prevcase: $prevcase ");
				  
	 // ici dfin de partie S ou N a gagné
			 $termine=true;
			  if ("$premlettre"=="$NS") {
		    	$verdict='<span style="color: #00ff00"><b>gagn&eacute; </b><span style="color: #000000">';
		    	$verdictbrut='gagné';
			  }
			  else 
			  {
				  $verdict='<span style="color: #ff0000">perdu. </b><span style="color: #000000">';
        		  $verdictbrut='perdu.';
   		  }
		 }; 
		 // fini gagne


//---------------------------
}
}
 // echo "----------------g<br>";

// ---------------------------


// startfime si yaeubold sans doute plus utile
// efacser navette si perdu (faudrait un délai! sinon risque de faire avant lu par gagné!)

$fi="not opened"; //sera le fichiernavette
$token="";
$stampprev="0";


 if (isset($_REQUEST['stampstart']) ) {
	$stampprev=$_REQUEST['stampstart'];
}

 // echo "----------------L56br>";

global $k;
	  $nav=$k."_1.txt"; // le fichier navette recopié dans dossiers N ou S 
if (file_exists($nav)) unlink($nav);


// echo "----------------L3<br>";


// echo "----------------L2<br>";
 
 // redondant ?
 // redondant ?
if (isset($_REQUEST['periode']) ) {
	$PERIODE=$_REQUEST['periode'];
if (!isnum($PERIODE)){
    ALERT(11,"periode doit etre numérique, vous avez donne: $PERIODE");
    RECULER();
    return;	
}

 //  echo "param periodedemandee $PERIODEDEMANDEE <br>\n";
   if ("$PERIODE"<="0") {
	   echo "impossible p&eacute;riode <=0\"<br>\n";
	   return;
  }
  
$periodems=1000*$PERIODE;

} 

// echo "----------------l<br>";



// $avous reçu en parametre signifie que tour precedent deja a moi de jouer

$avouslu=$avous;
if (isset($_REQUEST['avous']) && strlen($trelu)==0) {
	$avous=$_REQUEST['avous'];
    if ("$avous"!="$avouslu")  ALERT(12,"avous: lu: $avouslu param:$avous");
    echo "<br>param avous:$avous<br>";
}


function raw($num,$msg){
	global $WORK;
	global $nomcsv;  // hgaffe à l'effet de bord
	global $NS; // pôur sion volait savoir qui cause, pas utilise 
	if (!isset($nomcsv) && isset($_REQUEST['token']) ){
	$nomcsv="$WORK/".$_REQUEST['token']."/".$_REQUEST['token'].".csv";
	}
	if (isset($nomcsv) ){
    if(strlen($nomcsv)>0  && strpos($nomcsv,"-")){
//	ALERT(13,"nomcsv: $nomcsv");	
	$history=fopen($nomcsv,'a');

	if (strlen($msg)==0) fwrite($history,"$msg\r\n");
	fwrite($history,$msg);
	fclose($history);
	}
}

}

// tonton comme function 
function tontong($terrain){
	return "";
	//tontong local
	$ttg="";
$deupt=false;
for ($itg=0;$itg<strlen($terrain);$itg++){
	$uncar=substr($terrain,$itg,1);
	if ("$uncar"==" " && substr($ttg,strlen($ttg)-1)!="," )$ttg=$ttg.",";
	if ("$uncar">="0"  && "$uncar"<="9")$ttg=$ttg.$uncar;
	if ("$uncar">="A"  && "$uncar"<="Z")$ttg=$ttg.$uncar;
	if ("$uncar"==":") $ttg=substr($ttg,0,strlen($ttg)-1);
}
return $ttg;
}


//message

 /** selonn ?????
     * Get current user IP Address.
     * @return string
     */
    function get_ip_address() {
        if ( isset( $_SERVER['HTTP_X_REAL_IP'] ) ) {
            return $_SERVER['HTTP_X_REAL_IP'];
        } elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
            // Proxy servers can send through this header like this: X-Forwarded-For: client1, proxy1, proxy2
            // Make sure we always only send through the first IP in the list which should always be the client IP.
            return (string) self::is_ip_address( trim( current( explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ) );
        } elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
            return $_SERVER['REMOTE_ADDR'];
        }
        return '';
    }
	
	
function graines($ou){
	global $t;
	// remplacer ] de fin  par un espace
	// uitilie si demance compte de S: 
//	$tt=substr($t,0,strlen($t)-1)." ";
	$ici=strpos($t,$ou.":")+2;
	// si nom pas dans la liste
	if (!$ici) return 0;
	$suite=substr($t,$ici);
	// chercher espâce qui suit
	$longdunombre=strpos($suite," ");
	if (!$longdunombre) $longdunombre=strlen($suite)-1;
	$gr=substr($suite,0,$longdunombre);
	return $gr;
}


function ligne($q){
	
$image="gt/l".graines($q).".jpg";
echo "\n<input disabled src='".$image."' style='width:100%;height:5% ;'  size='4' type='image' >";
}  // function ligne


function casejouee(){
	global $prochain;
	global $cases;
	global $NS;
	global $stampstart;
	global $stampprev;
	global $elapsed;
	if (strlen($NS)==0) return "";
// fusionner les boutons pour avoir LA case à distribuer
$cmd="";
// rcherche clic sur une case image
for ($cases=1;$cases<=13;$cases++){
  $nom="C".$cases;
  if ($NS=="S")   $lettre=substr("?ABCDEF123456",$cases,1);
  if ($NS=="N")   $lettre=substr("?654321FEDCBA",$cases,1);

  $one="";
  if (isset($_REQUEST[$nom."_x"]) ){
       $one=$_REQUEST[$nom."_x"];
	   if (!isset($lettre))ALERT(14,"$cases NS:$NS");
       $cmd=$lettre;
 
	   // des exec case jouee incremente $elapsed du compteur javascrupt
	   if ("$NS" != "S" || $prochain>1) $elapsed=$elapsed+$stampstart-$stampprev;
 		}
}  // fin de for 1 a 12
// fin de for 1 a 12
return $cmd;
} // fin de case jouee
// fini cases jouee

function plateau($num){
global $NS;
global $SOON;
if ($SOON) {
	//ALERT(15,"SOON plateau");
	return;
}
// echo "plateau $num<br>";
    if ("$NS"=="N") plateauU($num,"N","S","654321FEDCBA");;
    if ("$NS"=="S") plateauU($num,"S","N","ABCDEF123456");
}

function plateauU($num,$bas,$haut,$ordre){
	global $termine;
//	global $SMARTPHONE;
	global $LARGEUR;
	global $periodems;
	global$elapsed;
global $yaeubold;
global $avous;
global $j;
global $start;
global$pojoueur;
global $t ;
global $liste;
global $termine;
global $iteration;
global $NS;
global $prochain;
global $jeu;
global $SHOWNUM;
global $ECHOPLATEAU;
global $SOLO;
global $PERIODE;
global $actuelchiffre;
global $actuellettre;
global $actuel;
$faut=false;
$espoir=false;
$parmi=false;
// douteux avous!
if ("$NS"=="S")$avous=true;
// actuel sera vrai si un chiffre dans la liste 

$actuelS=("$NS"=="S" && $actuelchiffre );
$actuelN=("$NS"=="N" && $actuellettre);
$actuel=$actuelN || $actuelS;
if ($ECHOPLATEAU) {
    echo "$NS liste:$liste lettre:$actuellettre chiffre:$actuelchiffre actuel:$actuel<br>";
	if ("$NS"=="S") {
		echo "SOLO:$SOLO PERIODE:$PERIODE NS:$NS avous:$avous iteration:$iteration liste:$liste chiffre:$actuelchiffre actuel:$actuel<br>";
	}
	if ("$NS"=="N") {
		echo "SOLO:$SOLO PERIODE:$PERIODE NS:$NS avous:$avous iteration:$iteration liste:$liste lettre:$actuellettre actuel:$actuel<br>";
}
	echo "$t<br>";
}

ligne($haut);

echo "<br>\n";
$yaeubold=false;
$WIDTH="14%";
$HEIGT="30%";
$px="30px";
$STYLE="style='width:$WIDTH;height:$HEIGT;font-size:$px'";

for ($cases=1;$cases<=12;$cases++){

// test graines
$lacase=substr("x".$ordre,$cases,1);
$initiale=$lacase;
$parmi=strpos($ordre,$initiale);

$contenu=graines($lacase);
$cnord=$initiale ;// .":".$contenu;
$bin="";
$bout="";
$disabled=" disabled ";
//$px="20px";
$jouerlacase=""; // infobulle de la case
$pos=strpos("x".$liste,$initiale);
//echo "$pos";
// calculer si la case est autorisée  ch sera vrai si case à montrer
	$ch=($cases>=7 && $avous && ( $pos>0 || $contenu==0)  && ( "$iteration"!="2" || "$NS"=="N"));
//echo "$ch";

if ($ch && $pos>0){
$disabled="";
$prevision=$contenu;
if ($prevision>"12")$prevision=$prevision+1;
if ($prevision>"24")$prevision=$prevision+1;
$prevision=$prevision+strpos($ordre,$initiale);
$finale=substr($ordre.$ordre.$ordre.$ordre,$prevision,1);

if ("$contenu"=="0")$jouerlacase="Rien &agrave; distribuer. ";
if ("$contenu"=="1") $jouerlacase="Distribuer cette graine. ";
if ("$contenu">"1") $jouerlacase="Distribuer $contenu graines.";
}

if ( $cases>6 && strlen($disabled)>0 && !$termine) $jouerlacase="Injouable.".$Z;
if ( $cases<=6 ) $jouerlacase="Pas toucher case de l&apos;adversaire!";

// au coup 2 (avant de lancer dessous, ne rien autoriser 
if ("$iteration"=="2") $disabled=" disabled ";

$nom="C$cases";
$Z=""; // pour accueillir faut nourrir 
if ($cases>6 && $avous  && strlen($disabled)>0  && "$contenu">"0") {
	 $Z=$Z." Faut nourrir l'adversaire";
}
// echo $contenu;
if ("$contenu"=="0" && strlen($disabled)>0) {
	$Z="$Z (vide)";
//	echo "!V";
}

$jouerlacase=$jouerlacase . $Z;
// choix de l'image 
$image='gt/r'.$contenu.'.jpg';  // par defaut icone barrée
//echo "$ch.$contenu".strlen($disabled);


// si besoin ione jouable 
//if ($ch&&  strlen($disabled)==0 &&  "$iteration">="3" && !$termine   ) {
if ($ch&&  strlen($disabled)==0 && !$termine   ) {
	$image='gt/b'.$contenu.'.jpg'; // icone jouable 
//	echo"=";
    $yaeubold=true;
} 

// 0 jouable 
if ($actuel && $cases>=7 &&  $ch&&  strlen($disabled)>0 && $contenu==0 && !$termine   ) {
	$image='gt/b'.$contenu.'.jpg'; // icone jouable 
//	echo"_";
} 
// echo "$SOLO";
if ($SOLO && "$NS"=="N")$image='gt/r'.$contenu.'.jpg'; // barre

if ($termine) $jouerlacase="C&apos;est fini!).";

//
if ($SHOWNUM)echo substr("xABCDEF123456",$cases,1);
//if ($disabled) echo "D"; else echo"d";
echo "\n<input $STYLE type='image' onclick='invalider(\"$NS\")' src='$image' $disabled  id='$nom' name='$nom' title='$jouerlacase' alt='$jouerlacase' value=''  >";
 
if ("$cases"=="6" || "$cases"=="12") echo "<br>";

} //  for cases 

ligne($bas);
echo "<br>\n";

if ($termine) $yaeubold=false;

if ($yaeubold) $start=time();    // signe a moi de jouer, chrono on
 

 
} // -------------------- fin de  plateau 
 // -------------------- fin de  plateau 

function jouerauhasard()	{
	global $liste;
		// prendre au hasard dans la liste
		// ne jouera que si SOLO sinon bouton pas la
		     $laquelle=rand(0,strlen($liste)-1);
			 $lettre=substr($liste,$laquelle,1);
			 $place=1+strpos("......FEDCBA",$lettre);
			 $idclic='C'.$place;
		  echo "\n<input hidden  type=button id='autoplay' name=\"random\"  style='background-color:green;color:black'  value='Jouer au hasard' onclick=\"document.getElementById('".$idclic."').click()\"  >";
	}

function setbody(){
	global $w;
	global $NS;
	global $termine;
	global $iteration;
	global $SOLO;
	global $actuelchiffre;
	global $actuellettre;
	global $actuel;
	global $flag;
	global $longparam;
	global $periodems;
	echo "<!-- set body NS:$NS SOLO:$SOLO-->\n";
	if ("$w"=="-1" )return;
	
	if ($termine) {
		 echo "<body>";
		 return;
	}

   if (count($_REQUEST)==0) {
	     enigme();
 		 echo "<body onload='init()'>";
		 return;
  }
  if ("$NS"=="N" && $SOLO ){
	//11 echo "autoplay et timeout <br>";
	if ("$iteration"=="2") echo "<body>";
	else 		echo "\n<body onload=\"setTimeout(myrefresh,$periodems);document.getElementById('autoplay').click(); \">\n";
	return;
	} 	
	
//	echo "<!-- \n ECRIT un deux C:$actuelchiffre L:$actuellettre $longparam-->\n";
//	echo "<!-- \n ECRIT  flag: $flag existe: ".file_exists($flag)."-->";
	 
	echo "<!-- pas solo  NS:$NS ch:$actuelchiffre le:$actuellettre -->";
			//CHANTIER EN COURS
		if (("$NS"=="S" && $actuelchiffre) || ("$NS"=="N" && $actuellettre)){
			echo "<body>";
			return;
		}
		echo "\n<body  onload=\"setTimeout(myrefresh,$periodems)\">\n";


	
	
  } // function setbody 
  
 
function notused(){
		global $flag;
	global $longparam;
	global $periodems;

	//if (isset($adv))  $wsolo="$adv"=="ShadockDuDessous";

	if ("$iteration"=="2" && $SOLO && "$NS"=="N" ) {
	echo "<!-- \n ECRIT TROIS BODY body onload=\"document.getElementById('autoplay').click()-->\n";
	echo "<!-- SOUCI ne jpoue pas! : <body onload=\"document.getElementById('autre').click(); \">\n   -->"; 
	if ($termine) echo "<body>";
	else {
		
	if (false &&  "$iteration"=="2") echo "\n<body onload=\"document.getElementById('autre').click(); \">\n";
else 	{
	if ("$NS"=="N") {
		 echo "\n<body onload=\"document.getElementById('autoplay').click(); \">\n";
	ALERT(16,"TROIS");
	}
	if ("$NS"=="S") echo "\n<body >\n";
}
	}
	}
	else{
if (isset($periodems))	{
$bf="";
if (isset($_REQUEST['bonnefin'])) $bf=$_REQUEST['bonnefin'];
echo "<!-- j:$j pas bonne idee bonnefin:$bf-->\n";
// raté!
	 echo "<!-- CINQ termine:$termine  NS:$NS  bf:$bf-->\n";

// bizarre ci dessous ???????? mis Nord
	if ("$bf"=="en cours. (A Nord de jouer).") {
		echo "\n<body onload='setTimeout(myrefresh,$periodems)' >\n";
	//	alert("SUQTRE");
	}
	else {
	 echo "<!-- SIX  web:$w -->\n";
	// alert("SIX w:$w iteration:$iteration" );
	    if ("$w"=="2")$SOON=true; // donc on continue iteration=2
		if ($termine || "$w"=="2") echo "<body>";
		else {
// GAFFE duo serai touromaique!	 
echo "<!-- SIXBIS  termine:$termine  NS:$NS  bf:$bf-->\n";
//			if ("$NS"=="N" && "$adv"=="ShadokDuDessous") {
			if ("$NS"=="N" && $SOLO) {
echo "\n<body onload=\"document.getElementById('autoplay').click(); \">\n";
				ALERT(17,"CINQ");
		}
	else {
		echo "<!-- NS: $NS bf:$bf -->";
				if ("$bf"=="en cours. (A Nord de jouer).")echo "\n<body onload='setTimeout(myrefresh,$periodems)' >\n";
				else {
		//			echo "\n<body >\n";
			echo "<!-- NS:$NS A SUD -->";
			if ("$NS"=="S" && "$bf"=="en cours. (A Nord de jouer)."){
					echo "<!-- SIXBIS UN -->";
					echo "\n<body onload='setTimeout(myrefresh,$periodems)' >\n";
				}
				if ("$NS"=="N" && "$bf"=="en cours. (A Sud de jouer)."){
					echo "<!-- SIXBIS DEZUX -->";
					echo "\n<body onload='setTimeout(myrefresh,$periodems)' >\n";
				}
				}
			}

		}
	}
}
	}
  }
	  

 // setbody

// ------   fin des functions      debut de l'exécution