Changeset 7860 in spip-zone


Ignore:
Timestamp:
Dec 11, 2006, 12:39:36 AM (12 years ago)
Author:
patfr@…
Message:

juste qq changements de nom !

Location:
_plugins_/_stable_/jeux
Files:
1 added
4 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/_stable_/jeux/inc/diag_echecs.php

    r7859 r7860  
    22
    33# A lire :  http://www.spip-contrib.net/Afficher-des-diagrammes-d-echecs
     4#                       http://diagol.ajec-echecs.org/diagol.html
     5#                       http://www.dmi.usherb.ca/laboratoires/documentations-logiciels/Perl/lib/Games/Chess/PGN.html#16_1_FEN
    46#                       http://www.iechecs.com/notation.htm
     7#                       http://www.enpassant.dk/chess/palview/index.htm
    58
    69#---------------------------------------------------#
     
    1114#---------------------------------------------------#
    1215
    13 
    14 /*************************************************/
    15 /*   Auteur initial : Olivier Bouverot           */
    16 /*          <webmaster@ajec-echecs.org>          */
    17 /*                                               */
    18 /*  Patch (prise en compte de la notation FEN) : */
    19 /*                Patrice Pillot                 */
    20 /*              <p.pillot@free.fr>               */
    21 /*************************************************/
    22 
    2316/*
    2417
    2518Insere un diagramme de positions d’échecs dans vos articles !
     19-------------------------------------------------------------
     20 Module base sur les travaux de:
     21         François SCHREUER (plugin)
     22         Olivier BOUVEROT (DIAGOL)
     23         Patrice PILLOT (notation FEN)
     24         Andrew TEMPLETON (figures)
    2625-------------------------------------------------------------
    2726
     
    3332- La librairie GD doit être installée sur le serveur.
    3433
    35 Exemple de syntaxe dans l'article :
    36 -----------------------------------
    37 
    38 <jeux>
    39         [diag_echecs]
    40         B:Rg1,Dd1,Ta1,e1,Pa2,f6/N:Rb8,Pa6,f5
    41 </jeux>
    42 <jeux>
    43         [diag_echecs]
    44         r1bqkbnr/pp2pppp/2n5/2p1P3/3p4/2P2N2/PP1P1PPP/RNBQKB1R
    45         [config]
    46         taille=35
    47 </jeux>
    48 <jeux>
    49         [diag_echecs]
    50         B:Rb6,pa3,Fh2/N:Rc8/sr:a8/sb:g3,f4,e5,d6,c7,b8
    51         [config]
    52         taille=35
    53         noirs=bleu
    54 </jeux>
     34La position doit être décrite sous forme de notation FEN, ou bien en utilisant la forme "classique".
     35Exemples :
     36        classique : B:Rg1,Dd1,Ta1,e1,Pa2,f6/N:Rb8,Pa6,f5
     37        FEN       : r1bqkbnr/pp2pppp/2n5/2p1P3/3p4/2P2N2/PP1P1PPP/RNBQKB1R
     38
     39Notation "classique" : la description de la position blanche commence par "B:", celle de la position noire par "N:", et les deux sont séparées par un "/".
     40Il est possible de n'indiquer qu'une couleur (B ou N) pour la description. L'ordre dans cette dernière est indifférent.
     41Les majuscules ne sont pas non plus obligatoires
     42
     43Cases en surbrillance : on peut utiliser "/sv" pour mettre du vert, "/sb" pour du bleu, "/sj" pour du jaune et "/sr" pour du rouge.
     44Attention : pour utiliser cette fonctionnalité, il faut obligatoirement utiliser la notation "classique".
     45
     46Retournement de l'échiquier : C'est automatique en utilisant la notation FEN (et si bien entendu le trait est aux Noirs), sinon il suffit d'ajouter "/r" à la description "classique".
     47
     48Exemples de syntaxe dans l'article :
     49------------------------------------
     50        <jeux>
     51                [diag_echecs]
     52                B:Rg1,Dd1,Ta1,e1,Pa2,f6/N:Rb8,Pa6,f5
     53        </jeux>
     54        <jeux>
     55                [diag_echecs]
     56                r1bqkbnr/pp2pppp/2n5/2p1P3/3p4/2P2N2/PP1P1PPP/RNBQKB1R
     57                [config]
     58                taille=35
     59        </jeux>
     60        <jeux>
     61                [diag_echecs]
     62                B:Rb6,pa3,Fh2/N:Rc8/sr:a8/sb:g3,f4,e5,d6,c7,b8
     63                [config]
     64                taille=35
     65                noirs=bleu
     66        </jeux>
     67
     68Parametres [config] definis par defaut :
     69----------------------------------------
     70        taille=29               // Taille des images en pixels (29 ou 35)
     71        blancs=blanc    // Couleur des cases 'blanches'
     72        noirs=brun              // Couleur des cases 'noires'
     73        fond=blanc              // Couleur de fond de la page web
     74        bordure=2               // Epaisseur de la bordure de l'échiquier, en pixels
     75        police=5                // Code de la police utilisée pour les coordonnées (1 à 5)
     76        flip=non                // Faut-il retourner l'echiquier ?
     77        coords=oui              // Afficher les coordonnées ?
     78
    5579*/
    5680require("diag_echecs_init.php");
     
    7094       
    7195        // dechiffre le code source du diagramme place dans $position
    72         // $position = "B:Rf1/N:Pb2,c3,d4,e5/SV:e4/SR:a2";
    73         // $position = "B:Rg1,Dd1,Ta1,e1,Pa2,f6/N:Rb8,Pa6,f5";
    74         // $position = "r1bqkbnr/pp2pppp/2n5/2p1P3/3p4/2P2N2/PP1P1PPP/RNBQKB1R";
    75         $c = preg_replace("/\s*[\r\n]+\s*/", '/', trim($position));
    76         //$tableau = split("/\t/", trim($position));
    77         //foreach ($tableau as $i=>$valeur) $tableau[$i] = preg_split('//', trim($valeur), -1, PREG_SPLIT_NO_EMPTY);
    78 
    79         //$position = ereg_replace("[\n\r]","",$position);
    80        
    81         /* l'heuristique est faible mais bon... */
    82         //if ( substr_count($position, "/") == 7 ) {
     96        $position = preg_replace("/\s*[\r\n]+\s*/", '/', trim($position));
     97        $position = preg_replace(",\/+,", '/', trim($position));
     98
     99        // quelle est la notation !?   
    83100        $masque=',(([a-zA-Z1-8]+)\/([a-zA-Z1-8]+)\/([a-zA-Z1-8]+)\/([a-zA-Z1-8]+)\/([a-zA-Z1-8]+)\/([a-zA-Z1-8]+)\/([a-zA-Z1-8]+)\/([a-zA-Z1-8]+)) *(.*),';
    84101        if ( preg_match($masque, $position, $table) ) {
     
    91108          if (count($table)<2) return "Erreur dans la syntaxe [explode table classic]";
    92109        }
    93 //echo '<br>table : '; print_r($table); echo '<br>';
     110       
     111        // image en cache
    94112        $fichier_dest = sous_repertoire(_DIR_VAR, "cache-jeux") . 'echiq_'.md5($position) . jeux_config('img_suffix');
    95113        $image = "<img src=\"$fichier_dest\" alt=\"$position\" border=\"0\"/><br>\n";
    96         //if (file_exists($fichier_dest)) return $image;
     114        // pas de recalcul de l'image pendant 12 heures si le fichier existe déjà
     115        if (file_exists($fichier_dest) AND ($GLOBALS['var_mode'] != 'recalcul') AND (time()-@filemtime($fichier_dest) < 12*3600))
     116                 return $image;
    97117
    98118        $chessboard = image_echiquier();
    99119
    100120// *********************       
    101         for ($i=0 ; $i<count($table) ; $i++)  if ( $table[$i] == "r" ) $flip = true;
     121        //for ($i=0 ; $i<count($table) ; $i++)  if ( $table[$i] == "r" ) $flip = true;
     122        if (in_array('r', $table)) $flip = true;
    102123       
    103124        for ($i=0 ; $i<count($table) ; $i++) {
  • _plugins_/_stable_/jeux/inc/diag_echecs_init.php

    r7859 r7860  
    77/* Couleurs prédéfinies : */
    88/* white,black,grey,green,blue,brown,lightyellow,lightbrown */
    9 /* Pour définir d'autres couleurs, éditer le fichier includes.inc.php */
    109
    1110/* Code de la police utilisée pour les coordonnées */
     
    4140        // diverses initialisations
    4241        'colonnes' => "abcdefgh",
    43         'english' => array("r"=>"k", "d"=>"q", "t"=>"r", "f"=>"b", "c"=>"n", "p"=>"p"),
    44         'letter2number' => array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5, "f"=>6, "g"=>7, "h"=>8),
    45         'number2letter' => array(1=>"a", 2=>"b", 3=>"c", 4=>"d", 5=>"e", 6=>"f", 7=>"g", 8=>"h"),
    46         'english2french' => array("K"=>"r", "Q"=>"d", "R"=>"t", "B"=>"f", "N"=>"c", "P"=>"p",
    47                 "k"=>"r", "q"=>"d", "r"=>"t", "b"=>"f", "n"=>"c", "p"=>"p"),
     42        'english' => array("r"=>"k", "d"=>"q", "t"=>"r", "f"=>"b", ""=>"n", "p"=>"p"),
     43        'letter2number' => array("a"=>1, "b"=>2, ""=>3, "d"=>4, "e"=>5, "f"=>6, "g"=>7, "h"=>8),
     44        'number2letter' => array(1=>"a", 2=>"b", 3=>"", 4=>"d", 5=>"e", 6=>"f", 7=>"g", 8=>"h"),
     45        'english2french' => array("K"=>"r", "Q"=>"d", "R"=>"t", "B"=>"f", "N"=>"", "P"=>"p",
     46                "k"=>"r", "q"=>"d", "r"=>"t", "b"=>"f", "n"=>"", "p"=>"p"),
    4847/*
    4948        Language     Piece letters (pawn knight bishop rook queen king)
     
    5554        Estonian     P R O V L K
    5655        Finnish      P R L T D K
    57         French       P C F T D R        fr
     56        French       P F T D R fr
    5857        German       B S L T D K        de
    5958        Hungarian    G H F B V K
    6059        Icelandic    P R B H D K
    61         Italian      P C A T D R        it
     60        Italian      P A T D R it
    6261        Norwegian    B S L T D K
    6362        Polish       P S G W H K
    64         Portuguese   P C B T D R
    65         Romanian     P C N T D R
    66         Spanish      P C A T D R
     63        Portuguese   P B T D R
     64        Romanian     P N T D R
     65        Spanish      P A T D R
    6766        Swedish      B S L T D K
    6867*/
     
    8079                flip=non                // Faut-il retourner l'echiquier ?
    8180                coords=oui              // Afficher les coordonnées ?
    82 
    8381        ", false);
    8482}
     
    10098Format F.E.N.
    10199
    102 FEN correspond à "Forsyth-Edwards Notation". C'est un standard de description d'une position aux échecs. Ce standard utilise la norme ASCII (caractère) pour représenter une position.
     100FEN correspond à "Forsyth-Edwards Notation". 'est un standard de description d'une position aux échecs. Ce standard utilise la norme ASCII (caractère) pour représenter une position.
    103101
    104102Une codification FEN s'identifie par une chaîne de caractères composée de 6 zones séparées par un caractère "espace"
Note: See TracChangeset for help on using the changeset viewer.