106 lines
3.0 KiB
PHP
106 lines
3.0 KiB
PHP
<?php
|
|
|
|
require_once(__DIR__."/functions.php");
|
|
switch ($_POST['act']){
|
|
|
|
case "fight":
|
|
$bots=get_Bots_Array('tictactoe');
|
|
//clean $_POST vars
|
|
$postParams=get_Post_Params(count($bots));
|
|
if(!$postParams){
|
|
error(400,"wrong parameters send");
|
|
die;
|
|
}else{
|
|
$bot1=$postParams['bot1'];
|
|
$bot2=$postParams['bot2'];
|
|
}
|
|
//init map
|
|
$map=array(
|
|
'0-0' => '','0-1' => '','0-2' => '',
|
|
'1-0' => '','1-1' => '','1-2' => '',
|
|
'2-0' => '','2-1' => '','2-2' => '');
|
|
|
|
$end=false;
|
|
$playerPlayingNow=1;
|
|
while($end==false){
|
|
switch($playerPlayingNow){
|
|
case 1:
|
|
$playerURL=$bots[$bot1]['url'];
|
|
$playerCHAR='X';
|
|
$playerName=$bots[$bot1]['name'];
|
|
break;
|
|
case 2:
|
|
$playerURL=$bots[$bot2]['url'];
|
|
$playerCHAR='O';
|
|
$playerName=$bots[$bot2]['name'];
|
|
break;
|
|
|
|
default:
|
|
error(500,"oups");
|
|
die;
|
|
}
|
|
$playerResponse=get_IA_Response($playerCHAR,$playerURL,$map);
|
|
//tester la validité de la réponse
|
|
if((isset($map[$playerResponse])) && ($map[$playerResponse]=="")){
|
|
//reponse conforme
|
|
echo "<p>".$playerName." joue en ".$playerResponse." la nouvelle grille est <br/>";
|
|
$map[$playerResponse]=$playerCHAR;
|
|
echo "<table>";
|
|
for($j=0;$j<3;$j++){
|
|
echo "<tr>";
|
|
for($i=0;$i<3;$i++){
|
|
echo '<td class="cellj'.$j.' celli'.$i.'">'.$map[$j.'-'.$i].'</td>';
|
|
}
|
|
echo "</tr>";
|
|
}
|
|
echo "</table>";
|
|
//tester si trois caracteres allignés
|
|
if(
|
|
(($map['0-0']==$map['0-1'])&&($map['0-1']==$map['0-2'])&&($map['0-2']!==""))
|
|
OR (($map['1-0']==$map['1-1'])&&($map['1-1']==$map['1-2'])&&($map['1-2']!==""))
|
|
OR (($map['2-0']==$map['2-1'])&&($map['2-1']==$map['2-2'])&&($map['2-2']!==""))
|
|
OR (($map['0-0']==$map['1-0'])&&($map['1-0']==$map['2-0'])&&($map['2-0']!==""))
|
|
OR (($map['0-1']==$map['1-1'])&&($map['1-1']==$map['2-1'])&&($map['2-1']!==""))
|
|
OR (($map['0-2']==$map['1-2'])&&($map['1-2']==$map['2-2'])&&($map['2-2']!==""))
|
|
OR (($map['0-0']==$map['1-1'])&&($map['1-1']==$map['2-2'])&&($map['2-2']!==""))
|
|
OR (($map['0-2']==$map['1-1'])&&($map['1-1']==$map['2-0'])&&($map['2-0']!==""))
|
|
){
|
|
echo "<p>".$playerName." ".$playerCHAR." a gagné.</p>";
|
|
save_battle('tictactoe',$bots[$bot1]['name'],$bots[$bot2]['name'],$playerPlayingNow);
|
|
$end=true;
|
|
break;
|
|
}
|
|
//tester si toutes les cases ne seraient pas prises
|
|
$full=true;
|
|
foreach($map as $char){
|
|
if($char==""){
|
|
$full=false;
|
|
break;
|
|
}
|
|
}
|
|
if($full){
|
|
echo "<p>Match nul</p>";
|
|
save_battle('tictactoe',$bots[$bot1]['name'],$bots[$bot2]['name'],0);
|
|
$end=true;
|
|
break;
|
|
}
|
|
|
|
//on change de joueur
|
|
if($playerPlayingNow==1){
|
|
$playerPlayingNow=2;
|
|
}else{
|
|
$playerPlayingNow=1;
|
|
}
|
|
}else{
|
|
echo "<p>".$playerName." a fait une réponse non conforme. Il perd</p>";
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
die;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|