<script language=JavaScript> // sans doute pas de souci double espace dans terrain // faudrai ne se passer que le flag // est-il utile de lire après jeu effectué ? // injouable jamanis nourrir // faudrait detecter dessous disparu! // vFestoir zoom car // fiabiliser detection dessous par count=8! function invalider(qui){ // quine joue pas // se joue au moment du click, avant submit! // pas vu agir depuis longtemps // message pour remplacer "a vous de jouer..." var message if (qui == "N") message=" j'attends, patientez " if (qui == "S") message=" Merci, votre fusée est lancée, patientez " var OUI="oui" if (document.getElementById("bounce").value == OUI){ // detcté une double frappe document.getElementById('shadok').value = 1 } document.getElementById('bounce').value = OUI // changer invite en merci! ne se voit pas sopuvent document.getElementById('trafic').value = message+qui } 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 = "start!" document.chronoForm.startstop.onclick = chronoContinue document.chronoForm.reset.onclick = chronoStopReset clearTimeout(timerID) } </script> <html> <?php // 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="20201123-2200"; $SERVER="http://flavigny.hd.free.fr"; $ECHOPARAM=false; $ECHOPLATEAU=false; // aficher sur platyeau $SOLO=true; // le shhadok du dessous joue automatiquement // ou se placer pour appel vbs $WORK="../work"; $SERIAL=true; // --------------------- // recuperer le nom du fichier! define('racine', $_SERVER['PHP_SELF'], true); $AWALE=substr(racine,1,strlen(racine)-5); // ------------------ f u n c t i o n s function bouabout(){ // 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]."&"; if($ECHOPARAM) echo $r[$i].":".$v[$i]." "; // if (($i+4)%5==0) echo "<br>"; } 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 writehtmlshadok(){ global $AWALE; global $version; global $SERVER; echo ' <html> <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 utilisabe seulement dans dans 4=2+2 mai 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.b12.value=nb[11] document.moi.b13.value=nb[12] } function faire(n) { if (pair>1 && document.moi.total.value==0) pair=0; pair=pair+1 if (pair==1) document.moi.gg.value=n 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)))document.moi.go.click() if(pair==2 && (document.moi.total.value!=parseInt(document.moi.pair.value))) document.moi.playagain.value=" Ooops, try again! " } </script> <b>Awale </b> (Selon <a href="http://antiguide.free.fr/wiki/wakka.php?wiki=AwaleInternet">http://antiguide.free.fr/wiki/wakka.php?wiki=AwaleInternet )</a> <br><br> '.$AWALE.' mise à jour:'.$version.' <!-- message pret à utlisier en cas de panne --> <body onload="init()" > <!-- <h2>UN PEU EN PANNE REPARATION EN COURS </h2> --> <form name="moi" method="post" action="'.$AWALE.'.php"> <input hidden type="submit" id=go name="go" title="valider" alt="valider le formulaire" value="Résolvez le problème ci dessous:" style="background-color:white;color:green" /> <br>sur le prochain écran entrez le "nom de la partie"<br> Notez que votre adresse Ip pourra être enregistrée.<br> <br> Avant tout, je vérifie que vous n'êtes pas une machine:<br> 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;"> <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> <input type=button id="playagain" value=" Choississez un nombre dans la ligne ci-dessus " onclick="document.moi.playagain.value='; echo "'Choississez un second nombre dans la ligne ci-dessus';document.moi.gg.value=0;document.moi.dd.value=0;document.moi.total.value=0; \" style='height:30px;'>"; echo ' </form> sources (pour les fans ou addicts):<br> <a href="'.$SERVER.'/'.$AWALE.'.php.txt" target="_blank">.php</a> <a href="'.$SERVER.'/awale.vbs.txt" target="_blank">awale.vbs</a> </body> </html>'; pause(); } function writehtmlshadokBAD(){ global $AWALE; global $version; global $SERVER; echo ' <html> <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 utilisabe seulement dans dans 4=2+2 mai 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.b12.value=nb[11] document.moi.b13.value=nb[12] } function faire(n) { document.moi.playagain.value=pair } function nul(){ return if (pair==0 ) document.moi.gg.value=n if (pair==1 ) document.moi.dd.value=n document.moi.total.value=parseInt(document.moi.gg.value)+parseInt(document.moi.dd.value) if(pair==0 ) document.moi.playagain.value=" Choisissez un second nombre dans la liste ci dessus! " if(pair==1 && (document.moi.total.value==parseInt(document.moi.pair.value)))document.moi.go.click() if(pair==1 && (document.moi.total.value!=parseInt(document.moi.pair.value))){ document.moi.playagain.value=" Ooops, try again! " return } pair=pair+1 } </script> <b>Awale </b> (Selon <a href="http://antiguide.free.fr/wiki/wakka.php?wiki=AwaleInternet">http://antiguide.free.fr/wiki/wakka.php?wiki=AwaleInternet )</a> <br><br> '.$AWALE.' mise à jour:'.$version.' <!-- message pret à utlisier en cas de panne --> <body onload="init()" > <!-- <h2>UN PEU EN PANNE REPARATION EN COURS </h2> --> <form name="moi" method="post" action="'.$AWALE.'.php"> <input hidden type="submit" id=go name="go" title="valider" alt="valider le formulaire" value="Résolvez le problème ci dessous:" style="background-color:white;color:green" /> <br>sur le prochain écran entrez le "nom de la partie"<br> Notez que votre adresse Ip pourra être enregistrée.<br> <br> Avant tout, je vérifie que vous n'êtes pas une machine:<br> 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;"> <br> <input disabled name=g id="gg" value="0" size=3> + <input disabled name=d id="dd" value="0" size=3> <input disabled name=total id="total" value="0" size=3> '; echo "<input type=button id='playagain' value=' Choississez un nombre dans la ligne ci-dessus '"; echo "onclick=\"document.moi.playagain.value=' Choississez un nombre dans la ligne ci-dessus';pair=-1;document.moi.gg.value=0;document.moi.dd.value=0;document.moi.total.value=0; style='height:30px;'>\""; echo ' </form> <br>sources (pour les fans ou addicts):<br> <a href="'.$SERVER.'/'.$AWALE.'.php.txt" target="_blank">.php</a> <a href="'.$SERVER.'/awale.vbs.txt" target="_blank">awale.vbs</a> </body> </html>'; pause(); } function dessous($x){ if ("$x"=="N") return "S"; if ("$x"=="S") return "N"; // gaffe si x vide! return ""; } function stamped($seed){ global $nomcsv; $gagne=false; while (!$gagne){ $radical="$seed-".date("YmdHis"); if (!file_exists("$WORK/$radical")){ mkdir("$WORK/$radical"); $nomcsv="$WORK/$radical/$radical.csv"; $gagne=true; $f=fopen($nomcsv,"w"); if (!$f) alert("erreur creation de $nomcsv"); fclose($f); return $radical; } // atendre sleep(1); } } function serialgame(){ global $SERVER; global $SERIAL; if (!$SERIAL) return; global $TERRAIN; global $k; global $NS; global $AWALE; global $by; global $adv; $tt2=encoder("$TERRAIN"); // oter stamp de token if (!strpos($k,"_")) $nk=$k."_1"; else { // supprimer au dela à la fin $oldk=$k; $possouli=strpos($k,"_"); $nombre=substr($k,$possouli+1); $nombre=$nombre+1; $nk=substr($k,0,$possouli+1).$nombre; // alert ("old: $oldk k:$k"); } if ("$NS"=="N")return; //echo "<br>GAFFE: TRAVAUX EN COURS by:$by adv:$adv <br>"; echo "\n<br><input type=button style='background-color:white;color:green' value=\"$by lance une nouvelle partie contre $adv\" onclick='window.open(\"$SERVER/$AWALE.php?web=2&relance=1&by=$by&coups=1&nordsud=S&token=$nk&periode=1&t=$tt2&email=$by&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 submitnow($appel) { echo '<script langage="Javascript"> document.getElementById("refresh").click(); // Click on the checkbox </script> '; } $qui=" pa s envore defini "; if (isset($NS))$qui=$NS; // aleret("init 21 done"); $cmdline=""; // si cmd non vide initile afficher dsazns febug $PAGE=true; // 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 "largeur de la fenetre: $LARGEUR <br>"; // affiche le script function alert($texte){ // GAFGFE synonyme en javascript! echo "<script language='Javascript'> {alert('".$texte."')}</script>\n"; } // function reculer(){ // GAFGFE synonyme en javascript! return; echo "<script language='Javascript'> {window.history.back();Location.reload(true)}</script>\n"; // reculer possible mais plus d'invoite à refresh! // echo "<script language='Javascript'> {window.history.back();Location.reload(true)}</script>\n"; } 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']; $root=substr($k1,0,strpos($k1,'-')); $n="reset=1&web=2&nordsud=S"; $n=ajout($n,'token'); $n=ajout($n,'coups'); $n=ajout($n,'by'); $n=ajout($n,'adversaire'); $n=ajout($n,'t'); $n=ajout($n,'periode'); $todo="window.open(\"$SERVER/$AWALE.php?$n\",'_self')"; raw(9,"coup perdu, relance\r\n"); alert("Lancement perdu; sans doute frappe trop rapide (cas: $appel)."); // relancer la partie au coup précédent dans la meme fenetre echo "\n<script language='javascript'>$todo</scripT>"; } // ------------ fin de F u n c t u o n if($ECHOPARAM)echo boutabout()."<br>"; if (isset($_REQUEST['apropos'])){ $apropos=$_REQUEST['apropos']; // je ne saois pourquoi il faut test =vrai? if ($apropos){ echo "<html><body><form>"; echo "$AWALE.php version:$version<br>"; if (isset($_REQUEST['token']))echo "partie: ".$_REQUEST['token']." <br>"; if ("$NS"=="S") echo "$by contre $adv.<br>"; if ("$NS"=="N") echo "$adv contre $by.<br>"; echo "Pour tout savoir, lisez: <a href=\"http://antiguide.free.fr/wiki/wakka.php?wiki=AwaleInternet\">http://antiguide.free.fr/wiki/wakka.php?wiki=AwaleInternet</a><br>"; echo "<br>Vous jouez avec la version d'entraînement (dite 'shadok'), pour un jeu à distance, suivez:<br>"; echo "lisez: <a href=\"$SERVER/Awale.php\">$SERVER/Awale.php</a>"; echo "</form></body></html>"; pause(); return; } } $maj=""; if (isset($_REQUEST['autrelance'])) { $autrelance=$_REQUEST['autrelance']+1; //alert("incremente param autrelance:$autrelance"); } else{ $autrelance=0; // alert("autrelance init $autrelance"); } // terrain pour page html et relance (erxceptions 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]"; if (isset($_REQUEST['histo'])){ $k7=$_REQUEST['token']; $fp=fopen("$WORK/$k7/$k7.csv",'r'); echo"partie: $k7<br>"; while (!feof($fp)){ echo fgets($fp)."<br>"; } fclose($fp); return; } // intercepter aucun parametre, redirigé vers .html if (count($_REQUEST)=="0") { //autreouautoplay writehtmlshadok(); return; } $by=""; if (isset($_REQUEST['by'])) $by=$_REQUEST['by']; echo "<!-- by mis a $by<br>-->"; //$by="Shadok_du_dessus"; $adv=""; $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" ; $ABANDON=false; $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=""; //$nomcsv=""; if (isset($_REQUEST['token'])) $k=trim($_REQUEST['token']); $NS="unk"; // $submited=0; if (isset($_REQUEST['nordsud'])) $NS=$_REQUEST['nordsud']; // drapeau //echo "tester abandon<br>"; if (isset($_REQUEST['abandon'])) $ABANDON=trim($_REQUEST['abandon']); if (strlen($ABANDON)>0) { echo "\n<!--"; echo var_dump($_REQUEST)."<br>"; echo "\n-->\n"; //alert("go"); $by=$_REQUEST['by']; echo "by mis a $by<br>"; echo "<!-- by request mis a vide<br>-->"; $adv=$_REQUEST['adversaire']; $PERIODE=$_REQUEST['periode']; $k=$_REQUEST['token']; $NS=$_REQUEST['nordsud']; serialgame(); echo "<b><br>vous pouvez fermer la fenêtre du navigateur<br><br>"; echo "\n<input type='submit' name='playagain' title='playagain' value='Play again.' style='background-color:white;color:green' onclick=\"location.href = '$AWALE.php' \" >"; echo "\n</html>"; pause(); return; } // echo "----------------a<br>"; // acces à la navette depuis dossier html $navette="$WORK/$k/$NS/$k.txt"; $flag= "$WORK/$k/$NS/$k.lck"; $fauttimeout=false; //------------------------ 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() || "$NS"=="S"; // echo "$NS evolution nav:". file_exists($flag)." flag:" .file_exists($navette) ." chgt $chgt <br>"; // chgt en test 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; if ($avous) $fauttimeout=false; $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; $fauttimeout=true; //--------------------------- $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, ".tontong($t).",$t , $bonnefin\r\n");//prevcase: $prevcase "); $termine=true; if ("$premlettre"=="$NS") { $verdict= '<span style="color: #00ff00"><b>gagné (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, ".tontong($t).",$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é </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>"; // --------------------------- echo "\n<!--"; echo var_dump($_REQUEST)."<br>"; echo "\n-->\n"; // 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>"; // appel direct impossible $PERIODE=0; // echo "----------------L2<br>"; // var_dump($_REQUEST); if (isset($_REQUEST['periode']) ) { $PERIODE=$_REQUEST['periode']; // echo "param periodedemandee $PERIODEDEMANDEE <br>\n"; if ("$PERIODE"<="0") { echo "impossible pé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("avous: lu: $avouslu param:$avous"); echo "<br>param avous:$avous<br>"; } // essai $w init a "" $w=""; $last=""; function raw($num,$msg){ global $WORK; // alert("raw $num $msg"); global $nomcsv; global $NS; if (!isset($nomcsv) && isset($_REQUEST['token']) ){ $nomcsv="$WORK/".$_REQUEST['token']."/".$_REQUEST['token'].".csv"; } if (isset($nomcsv) ){ if(strlen($nomcsv)>0){ $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; $tt=substr($t,0,strlen($t)-1)." "; $ici=strpos($tt,$ou.":")+2; if (!$ici) return 0; $suite=substr($tt,$ici); $fini2=strpos($suite," "); $gr=substr($suite,0,$fini2); 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"]; $cmd=$lettre; // raw(333, "$prochain $NS clic sur $cmd strlen(prochain):".strlen($prochain)."\r\n"); // nouveau relance depuis^parametres // deplace dans PP // des exec case jouee incremente elapsed if ("$NS" != "S" || $prochain>1) $elapsed=$elapsed+$stampstart-$stampprev; // echo "(1) start: $stampstart avant: $stampprev elapsed: $elapsed<br>"; } } // fin de for 1 a 12 // fin de for 1 a 12 // if (strlen($cmd)==0) alert("jeu vide"); return $cmd; } // fin de case jouee // fini cases jouee function plateau($num){ global $NS; global $SOON; if ($SOON) { //alert("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 $ns; global $j; global $ns; global $start; global$pojoueur; global $t ; global $liste; global $termine; global $autrelance; global $NS; global $prochain; global $jeu; global $SHOWNUM; global $ECHOPLATEAU; global $SOLO; $faut=false; $espoir=false; $parmi=false; if ("$NS"=="S")$avous=true; if ($ECHOPLATEAU) echo "NS:$NS avous:$avous autrelance:$autrelance liste:$liste <br>"; ligne($haut); echo "<br>\n"; $yaeubold=false; $WIDTH="14%"; $HEIGT="30%"; 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=""; $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) && ( "$autrelance"!="2" || "$NS"=="N")); // $ch=($ch || ( "$NS"=="S" &&$cases>=7)); if ($ch && $pos>0){ $disabled=""; $px="30px"; $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 à distribuer. "; if ("$contenu"=="1") $jouerlacase="Distribuer cette graine. "; if ("$contenu">"1") $jouerlacase="Distribuer $contenu graines."; } // au coup 2 (avant de lancer dessous, ne rien autoriser if ("$autrelance"=="2") $disabled=" disabled "; $nom="C$cases"; $Z=""; // pour accuezilli faut nourrir // choix de l'image $image='gt/r'.$contenu.'.jpg'; // par defaut icone barrée //echo "$ch.$contenu".strlen($disabled); if ($cases>6 && $avous && strlen($disabled)>0 && "$contenu">"0") { $Z=$Z." Faut nourrir l'adversaire"; // echo "Z"; } // si besoin ione jouable if ($ch&& strlen($disabled)==0 && "$autrelance">="3" && !$termine ) { $image='gt/b'.$contenu.'.jpg'; // icone jouable $yaeubold=true; //echo "a"; } // ==0 // supprimer if ($SOLO && "$NS"=="N")$image='gt/r'.$contenu.'.jpg'; // barre //echo "cases:$cases NS:$NS contenu:$contenu avous:$avous disabled:$disabled <br>"; if ("$contenu"=="0") $Z="$Z (vide)"; if ( $cases>6 && strlen($disabled)>0 && !$termine) $jouerlacase="Injouable.".$Z; if ( $termine) $jouerlacase="C'est fini!)."; $STYLE="style=\"width:$WIDTH;height:$HEIGT;font-size:$px\""; if ($SHOWNUM)echo substr("xABCDEF123456",$cases,1); echo "\n<input $STYLE type='image' onclick=\"invalider($NS)\" src='$image' $disabled id='$nom' name='$nom' title='$jouerlacase' alt='$jouerlacase' value='' >"; // echo "\n<input type='image' src='".$image."' $disabled style='width:".$WIDTH.";height:".$HEIGT." ;font-size:".$px."' size='4' id='".$nom."' name='".$nom."' title='".$jouerlacase."' alt='".$jouerlacase."' value='' >"; if ("$cases"=="6" || "$cases"=="12") echo "<br>"; } // for cases ligne($bas); echo "<br>\n"; //echo "\n</fieldset>\n"; if ($termine) $yaeubold=false; if ($yaeubold) $start=time(); // signe a moi de jouer, chrono on } // -------------------- fin de plateau // -------------------- fin de plateau // ------ fin des functions debut de l'exécution // ---------------------------- constantes $buttoir="en cours."; //intercepter navette; DOIT correspondre à .vbs! $msg=""; if (isset($_REQUEST['msg'])) $msg=$_REQUEST['msg']; //echo "<br>\nmsg::::$msg:::"; $start=0; if (isset($_REQUEST['stampstart'])){ $start=$_REQUEST['stampstart']; //hecho "start conservé recu en param $start<br>\n"; } $cmd=casejouee(); //if (strlen($cmd)>0)raw(9,"frappe:$cmd\r\n"); // si sud joue oter verrou if (isset($t)) { $joueur="Shadok du dessus"; if ("$NS"=="N") $joueur="Shadok du dessous"; if (strlen($cmd)==1 ) raw(2222,"$prochain, $t , $joueur ($NS) joue, $cmd \r\n");//prevcase: $prevcase "); } if (strlen($cmd)>0) $start=0; // aleret("init done"); // idior $AWALE="$AWALE"; //pour lien et appel vbs $k prévu pour éventuiellement versions concurrentes $antiguide="http://antiguide.free.fr"; // pour affichage lien aide // ------- initialisations $fautlire=false; // vrai pour -1, -2, mais pas refresh(parametre) $fautparam=false; // ------charger paramètres $w9=""; if (isset($_REQUEST['web'])) $w9=$_REQUEST['web']; if ("$w9"=="2" ){ // interdire la lecture à N tant que pas joue if (file_exists("$WORK/$k/$k.lck"))unlink("$WORK/$k/$NS/$k.lck"); //22 raw(0,"$NS recoit appel web=2 $longparam\r\n"); $nomv="$WORK/$k/N/$k.txt"; if (file_exists($nomv)){ unlink($nomv); // raw(99,"$nomv efface\r\n"); } $nomv="$WORK/$k/N/$k.lck"; if (file_exists($nomv)){ unlink($nomv); // raw(99,"$nomv efface\r\n"); } // premeir excec // horodater le token si il a deja - // le pb ne se pose pas en shadok $k=trim($_REQUEST['token']); $kold=$k; $dejavu=strpos($k,"-"); if (isset($_REQUEST['reset'])) $dejavu=true; if (!$dejavu) $k=stamped($k); // alert("stamped $dejavu $kold devient $k"); $t=$_REQUEST['t']; // raw(1,"$BIG $NS tparam (1): $t\r\n"); // compter les graines pour éventuellité erreur départ forgé $total=0; $trest=trim($t); $trest=substr($trest,0,strlen($trest)-1)." "; while (strlen($trest)>1) { $deuxpt=strpos($trest,":"); $la=substr($trest,0,$deuxpt); $trest=substr($trest,$deuxpt+1); $espace=strpos($trest," "); $nb=substr($trest,0,$espace); $total=$total+$nb; $trest=trim(substr($trest,$espace)).' '; } if ("$total"!="48") { echo "Plateau forgé: $t<br>incorrect: $total graines au lieu de 48, recommencez.<br>\n"; return; } } echo " "; // ------------------------------------- // po hasard} echo "<head>"; echo "</head> "; $onaexec=false; //echo "<br>----------0098---------w:$w---------BOF NS:$NS<br>"; $refresh=false; if (isset($_REQUEST['refresh']))$refresh=true; // pof $w=""; if (isset($_REQUEST['web'])) $w=$_REQUEST['web']; // obligatoire if (isset($_REQUEST['w'])) $w=$_REQUEST['w']; // obligatoire //alert( "param recu de web w:$w"); // 2: nouvelle partie pour deux joueurs distants avec le nom indiqué , demande choix et passera w=-2 pour jouer et attendre // -1:rejoindre la partie dont on donne le nom, adversaire lit l'état dans actuel.txt // -2: on joue le coup reçu en parametre, ou attend adversaire lire face.lck (-vient de 2) // idiot pas la! = mettre a jour depuis navette sans jouer //echo "<br>----------0099---------w:$w---------BOF NS:$NS<br>"; if (isset($_REQUEST['adversaire']) ) $adv=$_REQUEST['adversaire']; $j="."; if (isset($_REQUEST['jeu']))$j=$_REQUEST['jeu']; if (strlen($cmd)>0) $j=$cmd; $prochain=0; if (isset($_REQUEST['coups'])){ $prochain=$_REQUEST['coups']; // alert("prochain mis a $prochain"); } $l=""; if (isset($_REQUEST['liste']))$l=$_REQUEST['liste']; if (strlen($liste)==0) $liste=$l; $nb=strlen($liste); $ns=""; $bonnefin=""; if (isset($_REQUEST['nordsud'])) $ns=$_REQUEST['nordsud']; //echo "<br>----------008---------w:$w---------BOF NS:$NS<br>"; // andiamo if (!isset($k)){ $k=""; if (isset($_REQUEST['token'])) $k=trim($_REQUEST['token']); } // ci dessous ans doute inutile if (strlen($k)>0){ $nomcsv="$WORK/$k/$k.csv"; $history=fopen($nomcsv,'a'); fclose($history); } $d=""; //echo "<br>----------006---------w:$w---------BOF NS:$NS<br>"; $refresh=false; if (isset($_REQUEST['refresh'])) { $ref=$_REQUEST['refresh']; $refresh =true; } //echo "d mis a ===$d===<br>"; //echo "<br>----------002---------w:$w---------BOF NS:$NS<br>"; // bug si refresh be reaffiche pas // refresh si première page $w99=""; if (isset($_REQUEST['web'])) $w99=$_REQUEST['web']; if ("$w99"=="2")$fauttimeout=true; if("$j"=="=" ){ // $fauttimeout=true; // echo "timout a true car =<br>"; } if (substr($ignns,0,1)==$NS && "$j"=="=" &$avous ){ $fauttimeout=false; } //$maj= ""; $AUTOMAJ=" onclick=\"document.getElementById('autoplay').click()\""; if ("$NS"=="N" && strlen($maj)==0) $maj=$AUTOMAJ; //11 echo "on part avec maj:$maj j:$j avous:$avous NS:$NS <br>"; // if ("$j"=="=" && !$avous && !$termine) { if ("$j"=="=" && !$avous && !$termine) { $maj= "onload='setTimeout(myRefresh,$periodems)';document.getElementById('autoplay').click() "; //11 echo "set timeout $maj:$maj<br>"; echo "\n<script language=\"Javascript\">function myRefresh() {document.getElementById('refresh').click()} </script> "; } else { //11 echo "NOT set timeout<br>"; echo "\n<script language=\"Javascript\">function myRefresh() {document.getElementById('refresh').click()} </script> "; } //11 echo "w:$w $maj perdu $maj<br>"; //if ("$w"!="-1" ){ //$w= if ("$w"!="-1" ){ //$w= if ("$NS"=="N"){ //11 echo "autoplay et timeout <br>"; if ("$autrelance"=="2") { echo "<!-- \n ECRIT un un BODY body onload=\"document.getElementById('autoplay').click()-->\n"; if ($termine) echo "<body>"; else echo "\n<body onload=\"document.getElementById('autoplay').click(); \">\n"; } else{ echo "<!-- \n ECRIT un deux BODY body onload=\ myRefresh document.getElementById('autoplay').click()-->\n"; if ($termine) echo "<body>"; else echo "\n<body onload=\"setTimeout(myRefresh,".$periodems.");document.getElementById('autoplay').click(); \">\n"; } } else{ if ("$autrelance"=="2") { 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 && "$autrelance"=="2") echo "\n<body onload=\"document.getElementById('autre').click(); \">\n"; else { if ("$NS"=="N") echo "\n<body onload=\"document.getElementById('autoplay').click(); \">\n"; 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 tgermine:$termine sans doute un body de trop -->\n"; if ("$bf"=="en cours. (A Sud de jouer).") echo "\n<body onload=\"document.getElementById('autoplay').click(); \">\n"; else { echo "<!-- SIX -->\n"; if ($termine) echo "<body>"; else echo "\n<body onload=\"setTimeout(myRefresh,".$periodems.");document.getElementById('autoplay').click(); \">\n"; } } } } } // nom du fichier à attendre (créé par vbs) selon nord ou sud if (isset($_REQUEST['nordsud'])){ $NS=$_REQUEST['nordsud']; $flag= "$WORK/$k/$NS/$k.lck"; $navette="$WORK/$k/$NS/$k.txt"; //alert("navette DEUX $navette"); //h echo "541 navette: $navette<br>"; } // alert("NS: $NS nom du flag: $flag"); // initialisation nouveau/rejoindre ou courrant // echo "<br>----------001------namevette: $navette---w:$w---------BOF NS:$NS<br>"; //99 if ("$w"=="-1" || "$wpof"=="-1" ){ // rejoin dre if ("$w"=="-1" ){ // rejoin dre //echo "REJOINDRE<b; $NS="N"; // echo "<br>----------002------------------BOF NS:$NS<br>"; //echo "rejoindre NS N<br>"; $elapsed=0; $fautlire=true; //echo "rejoindre partie $k<br/"; //echo "GAFFE toujours comme NORD"; } // echo "<br>----------00000-----fautlire: $fautlire -------------BOF NS:$NS<br>"; if ("$w"=="2"){ // noiuveau $NS="S"; $elapsed=0; $ns="S"; // demarrer nouvelle partie effacer le fichier de retour $oldfi=$k.".txt"; // echo "nouvelle partie nomfi=$flag<br>\n"; // efacere l'historique // conserver pour reset! // echo "<br>----------0000------------------BOF NS:$NS<br>"; $nb=12; $fautlire=false; $fautparam=true; // w=2 nouvea toujours SUD ! // envoyer lien pour lancement, pour l'adversaire plus tard // encoder les espace du terrain } // echo "<br>----------000------------------BOF NS:$NS w:$w<br>"; if ("$w"=="-2"){ // encours $fautparam=true; $fautlire=true; //h echo "fautlire true jouer le param, vbs et question<br/"; } $AWALEVBS="awale.vbs"; $ti=""; // if (!$fauttimeout && "$j"!="=" && strlen($w99)>0 ) echo "si cette page persiste, utilisez le bouton Continuer en bas de page.<br>"; // tronc commun $minutes=(int)($elapsed/60); $secondes=$elapsed-60*$minutes; //echo "<br>----------00------------------BOF NS:$NS<br>"; if ("$k"!=""){ if ("$prochain"!="0"){ } else{ // echo "Soon...(1)<br>\n"; $SOON=true; } } //$g=""; // pour bouton $aqui=$NS; ; //echo "<br>---------2-------------------BOF NS:$NS<br>"; $pojoueur=""; // éliminer tout cas de faux départ $motif=0; if ("$ns"=="N" && !file_exists($navette) )$motif=1; if ("$ns"=="N" && !file_exists($flag) )$motif=1; if ("$k"=="") { $motif=3; // nouvelle partie } // echo "dispatch selon motif: $motif w:$w <br>"; if ("$motif">"0"){ // echo "exception motif=$motif ".count($_REQUEST)."<br>"; if ("$motif"=="1"){ // ce serait mieux si as lance seulemet $maj= "onload='setTimeout(myRefresh,1000)' "; // 10000 echo "<!-- un e dessous de alert 1000 -->"; // echo " ECRIT DEUX BODY e dessous de alert 1000 maj:$maj<br>"; if ($termine) echo "<body>\n"; else echo "\n"."<body $maj >"; echo "\n<form method='post' action=$AWALE.php >"; // echo count($_REQUEST); if (count($_REQUEST)=="8") { echo "Ici, c'est la fenêtre pour le Shadok du dessous. <br>Allez jouer sur le dessus.<br>"; echo "(si vous êtes sur un ordinateur, vous pouvez passer cet onglet dans une nouvelle fenêtre)<br>"; echo "Cet onglet se fermera automatiquement en fin de partie<br>"; echo "<br>\n$adv attend que $by ait joué <br>(partie: '$k', le: ".date("Ymj")." à ".date("H:i:s").").<br>\n"; // echo "flag: $flag navette: $navette<br>"; } // ci dessous idiot $web=-1; $h=" hidden "; $show=false; // false; $debug=false; echo "\n<input $h type='text' name='autrelance' title='mail' value=\"$autrelance\" >";if ($show)echo "mail<br>"; echo "\n<input $h type='text' name='adversaire' title='termine' value=$adv>";if ($show)echo "adversaire<br>"; echo "\n<input $h type='text' name='by' maxlength='3' size='3' title='by' alt='by' value=$by>";if ($debug) {echo "go<br>";} echo "\n<input $h type='text' name='web' maxlength='3' size='3' title='web' alt='web' value='-1'>";if ($debug) {echo "go<br>";} echo "\n<input $h type='text' name='token' maxlength='3' size='3' title='token' alt='token' value='".$k."'>";if ($debug) {echo "go<br>";} echo "\n<input $h type='text' name='nordsud' title='norddud' value=$ns>";if ($show) {echo "ns<br>";} echo "\n<input $h type='text' name='periode' title='periode' value=$PERIODE>";if ($show)echo "periode<br>"; if ($MANUMILITARI)$SHOWREFRESH=""; echo "<br>\n<input $SHOWREFRESH type='submit' id='now' name='refresh' title='Raffraichir' alt='Raffraichir' value='Continuer!'>"; echo "\n<script language=\"Javascript\">function myRefresh() {document.getElementById('now').click();} </script> "; echo "\n</form>"; } if ("$motif"=="2") { //echo "email obligatoiire<br>\n"; $motif=""; } if ("$motif"=="5")echo "partie normale<br>\n"; if ("$motif"=="3"){ // echo "nouvelle partie <br>\n"; // ---------------------------------------------------------------' // page d'accueil echo ' <!--<h1>EN PANNE REPARATION EN COURS </h1>--> <form name="chronoForm" method="post" action="'.$AWALE.'.php"> <input hidden type="text" maxlength="3" size="2" name="web" title="sujet" value="2" alt="..." > <input hidden type="text" maxlength="300" size="70" name="coups" title="lettres et chiffres" value="1" alt="..." > <input hidden type="text" maxlength="1" size="1" name="nordsud" title="sujet" value="S" alt="..." > <br>Nom à donner à la partie: <input required type="text" maxlength="30" size="20" name="token" title="lettres et chiffres" alt="pas de spéciaux!" > <br> '; echo ' <!--<br>votre email (ou un pseudo pour jouer en solo): <br> --> <input required hidden value="Shadok_du_dessus" type="text" maxlength="600" size="60" name="by" title="moi" > <!-- <br>email adversaire (ou pseudo): <br> --> <input hidden value="Shadok_du_dessous" required type="text" maxlength="600" size="60" name="adversaire" title="" > <br><br> '; echo ' <input type="submit" title="valider" alt="valider le formulaire" style="background-color:white;color:green" value=" Démarrer une nouvelle partie. " > '; echo '<br><br>Pour experts: Raffraichissement: <input required type="text" maxlength="5" size="1" name="periode" title="lettres et chiffres" value="'.$RAF.'" alt="pas de spéciaux!" > secondes. <br>départ forgé: <input type="text" maxlength="600" size="60" name="t" title="d&eaécute;part forg&e´" value="'.$TERRAIN.'" alt="..." >'; echo ' </form> </body> </html>'; pause(); // ---------------------------------------------------------------- }// O Irreespàonsable }; // motif 3 return; } // echo "<br>-------3---------------------BOF NS:$NS<br>"; if (strlen($bonnefin)>0 ){ //echo "<br>----------4------------------BOF NS:$NS<br>"; // document.getElementById("refresh").click(); // Click on the checkbox echo ' <script langage='; echo "'Javascript'"; echo '> document.getElementById("startstop").click(); // Click on the checkbox </script> '; // démpa rrer le chrono par clic sur startstop echo "<form name='chronoForm' >"; $pojoueur=substr($bonnefin,13,1); // echo "$bonnefin<br>\n"; // echo "pojoueur:$pfe"ojoueur ns:$ns<br>\n"; $premlettre=substr($bonnefin,0,1); // echo "premlettre $premlettre $bonnefin<br>\n"; // echo "test $bonnefin<br>\n"; // echo "NS : $NS premlettre:$premlettre<br>\n"; // traitement de gagannt par famine if (("$premlettre"=="S" || "$premlettre"=="N") && strpos($bonnefin,"gagnant")>0) { // echo "NS: $NS $premlettre GAGNANT<br>"; $termine=true; if ("$premlettre"=="$NS"){ $verdict= "gagné (par famine) "; $verdict= "gagné (par famine) "; } else { $verdict= "perdu (par famine) "; $verdictbrut=$verdict; } }; // fini famine // traitement de gagné if (("$premlettre"=="S" || "$premlettre"=="N") && strpos($bonnefin,"gagne")>0) { $termine=true; // echo "NS: $NS $premlettre GAGNE<br>"; // ici dfin de partie S ou N a gagné $termine=true; if ("$premlettre"=="$NS") $verdict="gagné "; else $verdict="perdu "; $verdictbrut=$verdict; }; // fini gagne $aqui=substr($bonnefin,13,1); if (strlen($trelu)==0){ // calcul de avous if("$aqui" == "$NS" ) { $avous=true; // alert("(2)avous:$avous"); $stampstart=time(); } else { $avous=false; // alert("(3)avous:$avous"); // echo "aqui: $aqui NS:$NS passer a false avous:$avous<br>"; } // else aqui=NS } // relu>0 // relmu>0 // efoni aqui=NS } else //ici len(bonnefin=0 sans doute jamais { // je ne sais plus quand ça se produit echo "<form name='chronoForm' method='post' action=\"$AWALE.php\">"; // misen oeuvre de web if ("$w"=="-2") { //GAFFE on vient aussi ici en refresh avant coup a jouer! if ($refresh) { $onaexec=false; }else{ if (!file_exists($flag) ){ // sans doute protégé en amont // raw(999,"$NS 2clic cmd:$cmd t:$t\r\n"); while(!file_exists($flag) )sleep(1); } } } // de w=-2 // de w=-2 if (file_exists($flag)){ // de w=-2 and file exist $fautlire=true; $onaexec=false; // echo "encore faceautlire $fautlire<br>"; } } //f echo " bis encore faceautlire $fautlire<br>"; if ("$w"=="-1"){ // echo "<br>---------6-------------------BOF NS:$NS<br>"; // rejoindre $fautlire=true; } // w==-1 (rejoibdre) // w==-1 (rejoindre) if ($fautparam) { if ("$j"!="-" && "$j"!="="){ //echo"point Z2<br>"; } // j!=- et !== if ("$j$"=="-")$cmd=""; $j=strtolower($j); //e echo "<br>-------7---------------------BOF NS:$NS<br>"; // diverses options $fr=""; // echo "token: $k listelog:$log<br>\n"; $jj=$j; //echo "jj: $jj<br>"; if ("$j"!="="){ // creer cmdline // on détecte un rebond car t pas défini if (!isset($t)) { // echo "\nVous avez probablement joué trop vite <br>"; // raw(0,"probable trop vite j:$j va faire RESTART(2) \r\n"); // echo "\nVous avez probablement joué trop vite <br>"; // echo "(sans attendre la réponse du Shadok du dessous).<br>"; RESTART(2); echo "\n</form></body></html>"; pause(); return; } if (strlen($t)==0) { echo "(2)Vous avez probablement joué trop vite j:$j<br>sans attendre la réponse du Shadok du dessous).<br> Recommencez"; raw(0,"probable trop vite j:$j va faire RESTART(3) \r\n"); RESTART(3); echo "</form></body></html>"; pause(); return; } $cmdline=$AWALEVBS .' "!'."#$prochain(".$k."){".$msg."}".$ns.$t.$fr.$jj.'."'; // pair echec jamais bu $pair=($prochain % 2)==0; if (($pair && "$NS"=="S" ) || (!$pair && "$NS"=="N" )){ echo "Ooops, au temps pour le PHP; erreur interne parite prochain:$prochain NS:$NS <br>"; return; } } // je ne sais plus ce que sihgnifie le - if ("$j"!="-" ){ $onaexec=false; if ("$j"=="=") { $t=$trelu; // raw(1,"$BIG $NS trelu (2) avant plateau : $t\r\n"); // alert("777"); if ("$autrelance"!="2") plateau(777); if (strlen($verdictbrut)>0) { echo "$verdict [".hhmmss($elapsed)."]"; // si perdu/gagne N se saborde if ("$NS"=="N" && (strpos($verdict,"perdu")||strpos($verdict,"gagn"))) { // echo "je me saborde"; echo "<script language='javascript'>window.close()</script>"; } // NS == N } // vedict non vide // chronotime element (si il il y a eu des cases à jouer sur leplateau) if($yaeubold && !$termine ){ // termine nécessaire pour dernier panneau ??? car bug ???? echo ' <span id="chronotime">--:--:--</span> <input type="button" id="ouf" name="startstop" value="start!" onClick="chronoStart('.$elapsed.')" > '; // lancer chrono // sauf premier coup pour S if ($prochain>1 || "$NS"=="N") echo ' <script langage=Javascript> { document.getElementById("ouf").click(); } </script> '; } // yaeubold // fin de yaeubold etpas termine echo " "; $avous=false; // pour passer à la prochaine exécution } // = = // si mnd pas vide ou mise en place if ("$cmd"!="" || "$j"=="." ){ // bloc re créé $onaexec=true; if (!file_exists("$WORK/$k")) mkdir("$WORK/$k") ; if (!file_exists("$WORK/$k/N")) mkdir("$WORK/$k/N") ; if (!file_exists("$WORK/$k/S")) mkdir("$WORK/$k/S") ; if (file_exists($flag)) unlink ($flag); if (file_exists($navette)) unlink($navette); //alert("$cmdline"); if (file_exists("../../../html/awale.vbs")) echo "banzai estla: ../../../html/awale.vbs<br>"; $retour=shell_exec("$cmdline"); if (file_exists("$k.txt")) echo "OK $k.txt <br>";else echo "pas $k.txt <br>"; // on n'a pas su jouer dans le bac à sable prévu, déplmacer navette et flag copy ("$k.txt","$navette"); copy ("$k.lck","$flag"); unlink("$k.txt"); unlink("$k.lck"); // verrue pour conserver navette // redondant if (!file_exists("$flag") ||!file_exists("$navette")) { echo "Au temps pour le programme (vbs), pas retrouve $navette ou $flag; play again"; return; } if ($SAVENAVETTES) { $target="$WORK/$k/$k($prochain$NS).txt"; copy ("$navette","$target"); if(!file_exists($target))alert("LOUPE $navette vers $target RATE"); } // lecture de test $termine=false; // passera à true selon bonnefin relu $YAEUEXEC=true; } //e fin de "$cmd"!="" || "$j"=="." ) en clair appel VBS //e fin de "$cmd"!="" || "$j"=="." ) en clair appel VBS } // fin de if j != - // fin de if j != - if ($onaexec || $fautlire ) { // si on est en attente ou on vient de exe cmdline // si ce n'est pas terminé mettre invite à jouer if (!$termine){ if ("$prochain"=="1" && strlen($cmd)==0 ) { // echo "onglet p)rochjain:$prochain autrelance:$autrelance"; if ("$prochain"=="1" && "$NS"=="S" ){ // alert("creer bouton autre autrelance:$autrelance"); // afficher bouton autre // ajouter refresh $ADV=$_REQUEST['adversaire']; //ajouter refresh if ("$autrelance"=="2"){ // si c'est premier lancement ouvrir shadok du dessous if (!isset($_REQUEST['reset'])) { $clic="window.open('$SERVER/$AWALE.php?web=-1&token=$k&by=$by&adversaire=$adv&nordsud=N&periode=$PERIODE', '_blank');document.getElementById('refresh').click();"; echo "\n<script langage='javascript'>$clic</script>"; } $SOON=true; } $autrelance=$autrelance+1; // echo "autrelance mis a $autrelance<br>"; } } // prochain=1 et strlen=0 // prochain=1 et strlen=0 // echo "NS: $NS SOON:$SOON yaeubold:$yaeubold autrelance: $autrelance "; // si pas de ragffraichissement imminent donner consihne if (!$SOON){ if ( "$NS"=="S") { if ( $yaeubold )echo '<span id="trafic" style="color:green">A vous de jouer</span><span style="color: #000000">'; else { echo "<span id='trafic' style='color:red'>Votre fusée est lancée...</span><span style='color: #000000'>"; // echo "(attend $flag)"; } } if ( "$NS"=="N") { if ( $yaeubold ){ if ($SOLO) echo '<span id="trafic" style="color:green">Je réponds</span><span style="color: #000000">'; else echo "<span id='trafic' style='color:green'>A $adv de jouer</span><span style='color: #000000'>"; } else echo "<span id='trafic' style='color:red'>J'attends que $by fasse un nouvel essai...</span><span style='color: #000000'>"; } } if ("$NS"=="N" && $SOLO && file_exists($flag) ) { // 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()\" >"; } } // !termine // fin ! terminr } // on aexec ou fautlire // fin !SOON & yaeubold else { // don SOON ou yaeu // echo "autrelance: $autrelance"; // message attente if (( "$autrelance">"3" || "$NS"=="N") && ("$prochain">"1" && "$j"=="=")){ if ("$NS"=="N") echo "<span style='color: #00ff00'><b>J'attends que $by ait joué </b>[".hhmmss($elapsed)."]<span style='color: #000000'>"; if ("$NS"=="S") echo "<span style='color: #00ff00'><b>Attendez que $adv ait joué </b>[".hhmmss($elapsed)."]<span style='color: #000000'>"; } // >=3 } // fin de sles soon yaeu // fini de sles soon yaeu //echo "<br>(2)soon: $SOON"; } // if fautparamm //apres fautparam if (!$SOON && !$termine ){ // pas de bouton abandon si terminé ou réaffichage automatique if (strlen($cmd)>0) echo "Soon..."; else echo "\n<br><input type='submit' name='abandon' title='abandon' value='ABANDON' style='background-color:red;color:black' > "; } // un de plus! // echo "prochain: $prochain NS: $NS mail: $MAIL<br>"; $flagla=false; if (isset($flag))$flagla=file_exists($flag); //sans doute a virer if ($refresh && $flagla){ //echo "refresh supprime car est la $flag<br>\n"; $refresh=false; } // 0819 $flagla=true; if (!$flagla || $refresh ) { $fautlire=false; } else{ // don ici flagla ou refresh if($flagla){ // flagla if(!file_exists($flag)){ // if(!file_exists($navette)){ echo "\nattendez que l'adversaire ait joué ($navette pas la); "; $bilan=""; } else // ici flag existe { // alert("lire navette"); $old=""; if (isset($t)) $old=$t; // lecture du fichier navette if(!$LU1 || $YAEUEXEC || true ){ $fi=fopen($navette,'r'); //2 // echo "lire navette (2) "; // pêut estre souci avec * $tnext=trimcrlf(fgets($fi)); if (strlen($tnext)>4)$t=$tnext; $t=trim($t); // raw(1,"$BIG $NS trelu (3) yaeuexec: $t\r\n"); // supprimer un double espace dans le terrain $double=strpos($t," "); if ($double>=1) $t=substr($t,0,$double)." ".substr($t,$double+2); //pour history //construire ligne compatible tontong $ignnb=trimcrlf(fgets($fi)); $liste=trimcrlf(fgets($fi)); $igncoup=trimcrlf(fgets($fi)); $prochain=trimcrlf($igncoup); $ignns=trimcrlf(fgets($fi)); $bonnefin=trimcrlf(fgets($fi)); $nous="N"; $ouf=strpos($bonnefin,"Sud"); if ($ouf>0)$nous="S"; // en réserve pour achempiner un message entre les joueurs, actuellement pas utilisé $message=trimcrlf(fgets($fi)); if ($ns == substr($ignns,0,1)) { if (strlen($message)>2)echo "<br>\npour $ignns: ".substr($message,1,strlen($message)-2); } fclose($fi); // signaler que $navette a été lue // echo "lu navette (2)"; } // not lu1 ouyaeuexec // } // maj en test if (strpos($bonnefin,"$buttoir")==0){ // echo "egal"; }else{ // le vbs termine par un message ne commençant pas par encours $ns="";// il n'y a plus personne à jouer // if ("$bilan" != "") $ns=""; // douteuxaussi! lastone } // buttoir // buttoir } // chtt date // if not fele_exists navette else } // flagla // fin de // flagla if ("$j"!=""){ // si on nevientpas de lire navette if (!$fautlire){ $t=$trelu; // raw(1,"$BIG $NS trelu (4) !fautlire: $t\r\n"); echo "Soon...(2)"; $SOON=true; } } // $j != "" ! } //fin de flagla //fin de flagla // sup au pif 13h } // fin dfinautparam // au pif fautparam // si manumilitari montrer le bouton refresh if ($MANUMILITARI) $SHOWREFRESH=""; echo "\n<input $SHOWREFRESH type='submit' id='refresh' name='refresh' title='Raffraichir' alt='Raffraichir' value='Continuer!' style='background-color:green;color:black' > " ; $w=-2; //prochain coup sera "suite" $h=" hidden "; // ne pas afficher liste parametres en fin de jeu (sauf jasis, obsolete, debug ) $show=false; if (!isset($t))$t=""; // semble improbable à voir //echo "navette:$navette<br>"; $mt=0; if (file_exists($mt)) $mt=filemtime($navette); echo "\n<input $h type='text' id='filetime' name='filetime' title='mail' value='$mt' >";if ($show)echo "previous<br>"; echo "\n<input $h type='text' id='shadok' name='shadok' title='mail' value='0' >";if ($show)echo "previous<br>"; echo "\n<input $h type='text' name='previous' title='mail' value=\"$cmd\" >";if ($show)echo "previous<br>"; echo "\n<input $h type='text' name='autrelance' title='mail' value=\"$autrelance\" >";if ($show)echo "autrerelance<br>"; //echo "\n<input $h type='text' name='mail' title='mail' value=$MAIL>";if ($show)echo "mail<br>"; echo "\n<input $h type='text' name='by' title='by' value=$by >";if ($show)echo "by<br>"; echo "\n<input $h type='text' name='adversaire' title='termine' value=$adv>";if ($show)echo "adversaire<br>"; echo "\n<input $h type='text' name='termine' title='termine' value=\"$termine\" >";if ($show)echo "termine<br>"; echo "\n<input $h type='text' name='avous' title='avous' value=\"$avous\" >";if ($show)echo "avous<br>"; echo "\n<input $h type='text' name='stampstart' title='ditun' value=$stampstart>";if ($show)echo "stampstart<br>"; echo "\n<input $h type='text' name='t' maxlength='60' size='60' title='t' alt='terrain' value='".$t."'>";if ($show) {echo "terrain(t)<br>";} echo "\n<input $h type='text' name='elapsed' maxlength='60' size='10' title='elapsed' alt='terrain' value='".$elapsed."'>";if ($show) {echo "elapsed<br>";} echo "\n<input $h type='text' name='jeu' title='jeu' alt='jeu' value='='>";if ($show) {echo "jeu<br>";} echo "\n<input $h type='text' name='liste' title='liste' alt='coups possibles' value='".$liste."'>";if ($show) {echo "liste<br>";} echo "\n<input $h type='text' name='token' title='partie' alt='token' value=$k>";if ($show) {echo "token<br>";} echo "\n<input $h type='text' name='coups' title='compteur' alt='compteur de coups' value=$prochain>";if ($show) {echo "coups<br>";} echo "\n<input $h type='text' name='nordsud' title='norddud' value=$ns>";if ($show) {echo "ns<br>";} echo "\n<input $h type='text' name='web' title='web' value=$w>";if ($show) {echo "web<br>";} echo "\n<input $h type='text' name='bonnefin' title='bonnefin' value='".$bonnefin."'>";if ($show)echo "bonnefin<br>"; echo "\n<input $h type='text' name='periode' title='periode' value=$PERIODE>";if ($show)echo "periode<br>"; echo "\n<input $SHOWREFRESH type='submit' id='now' name='refresh' title='Raffraichir' alt='Raffraichir' value='Continuer!'>"; // apropos en interne dans un nouvel onglet if (strlen($cmd)==0){ echo "\n \n<input type=button name='apropos' title='apropos' value='A propos...' style='background-color:white;color:#0000ff' onclick='window.open(\"$SERVER/$AWALE.php?apropos=1&token=$k\",\"_blank\")' >"; // voir historique interne dans nouvel onglet echo " "; echo "\n<input type=button style='background-color:white;color:#0000ff' value='Voir historique (".$prochain .").' onclick='window.open(\"$SERVER/$AWALE.php?histo=1&token=$k\", \"_blank\")' >"; // si terminé boutonplay again if ($termine) { echo " "; } // afficher les liens relancer une partie serialgame(); } //termine // termine // si page intermédiaire pour exécutre click FAUDRA la recharger immédiatement $AUTO=strlen($cmd)==1 ; // si on on vient de jouer, passer navette à l'adversaire // je ne sais si tyoujours pertinent (.vbs écit les deus essai de false && ) NON nécesairer if (strlen($cmd)==1 && file_exists($navette)){ $ouca="N"; if ("$NS"=="N") $ouca="S"; // copier // effacer flag if (file_exists("$WORK/$k/$ouca/$k.lck"))unlink("$WORK/$k/$ouca/$k.lck"); if (!file_exists("$navette")){ echo "pas de navette $navette"; } else { // raw(0, " copie de $navette pour l'autre copy($navette,"$WORK/$k/$ouca/$k.txt"); copy($flag,"$WORK/$k/$ouca/$k.lck"); } // apresq false } echo "\n<input hidden type=text id='bounce' name='bounce' value='non'>"; echo "\n</form> </body>"; echo "</html>\n"; echo "<!-- SOON:$SOON -->\n"; pause(); if ($SOON ) { submitnow(1); } //echo "auto: $AUTO<br>"; if ($AUTO) { if ($MANUMILITARI) { alert("Clic sur le bouton Continuer "); } else submitnow(2); } // alert('done'); ?>