Ce qui me plairait c'est de pouvoir jouer aux echecs avec d'autres joueurs par hermes.
Je sais que tu vas t'imagier que c'est énormément de boulot, mais si tu joues contre d'autres joueurs l'ordi ne doit pas calculer le meilleur coups a jouer, juste une liste de coups possible.
Je t'ai ecris une ébauche hier aprem au cas ou tu serais interessé.
Code : Tout sélectionner
<?php
include "fnc.inc";
$POS = "5r2/p1p2p2/5C1P/1p4t1/8/1P6/5T2/7R b KQkq - 5 42";
$echiquier;
fen_to_board($POS,$echiquier);
function affiche_echiquier($board) {
echo "<table><tr>";
for ($i = 0; $i </tr>
---------------------------------------------
fichier fnc.inc
---------------------------------------------
<?php
function indice_grand_tableau($ind){
return (($ind - $ind%8)/8 )*10 + $ind%8 + 11 ;
}
function fen_to_board($fen,&$board) {
$board = array(-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20,
-20,-20,-20,-20,-20,-20,-20,-20,-20,-20);
list($position, $color, $roque, $ep, $cinquante, $coups) = explode(" ", $fen);
$chess = explode('/', $position);
$case = 0;
for ($i = 0; $i <= 7; $i++) {
for($j=0; $j<strlen($chess[$i]); $j++){
switch ($chess[$i]{$j}) {
case 8: $board[indice_grand_tableau($case++)]=0;
case 7: $board[indice_grand_tableau($case++)]=0;
case 6: $board[indice_grand_tableau($case++)]=0;
case 5: $board[indice_grand_tableau($case++)]=0;
case 4: $board[indice_grand_tableau($case++)]=0;
case 3: $board[indice_grand_tableau($case++)]=0;
case 2: $board[indice_grand_tableau($case++)]=0;
case 1: $board[indice_grand_tableau($case++)]=0; break;
case 'K': $board[indice_grand_tableau($case++)]=15; break;
case 'p': $board[indice_grand_tableau($case++)]=-1; break;
case 'P': $board[indice_grand_tableau($case++)]=1; break;
case 't': $board[indice_grand_tableau($case++)]=-5; break;
case 'R': $board[indice_grand_tableau($case++)]=5; break;
case 'C': $board[indice_grand_tableau($case++)]=3; break;
case 'T': $board[indice_grand_tableau($case++)]=5; break;
case 'r': $board[indice_grand_tableau($case++)]=-5; break;
}//switch
}//for j
}//for i
$board[100] = $color;
}
function lister_coups($board,&$liste){
$sign_color = 1;
if($board[100] == 'b') $sign_color = -1;
for ($i = 11; $i < 100; $i++) {
switch (abs($board[$i])){
case 1: //pion
//avance de 1
if (($i - 10*$sign_color) == 0) $liste[] = $i."|0|".($i - 10*$sign_color)."|".$sign_color;
//avance de 2
if ( $board[$i - 10*$sign_color] == 0 && $board[$i - 20] == 0 ) $liste[] = $i."|0|".($i - 20*$sign_color)."|".$sign_color;
//prend en oblique gauche
if ($board[$i - 11*$sign_color]*$sign_color <0> -20 ) $liste[] = ($i - 11*$sign_color)."|".$sign_color;
//prend en oblique droit
if ($board[$i - 9*$sign_color]*$sign_color <0> -20 ) $liste[] = ($i - 9*$sign_color)."|".$sign_color;
//promotion
//ep
break;
case 3: //fou
break;
case 4: //cavalier
break;
case 5: //tour
break;
case 10: //dame
break;
case 15: //roi
break;
}
}//for
}
function evaluer_position($board){
$val = 280;
for ($i = 11; $i <89>