Changeset 7883 in spip-zone


Ignore:
Timestamp:
Dec 12, 2006, 4:05:55 AM (12 years ago)
Author:
patfr@…
Message:
  • amélioration des langues
  • amélioration des css
  • un 2ème pendu
  • vérification de la validité en live des sudoku
  • config : affichage de la réponse (oui/non)
Location:
_plugins_/_stable_/jeux
Files:
12 added
13 edited
3 copied
1 moved

Legend:

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

    r7860 r7883  
    66#                       http://www.iechecs.com/notation.htm
    77#                       http://www.enpassant.dk/chess/palview/index.htm
     8#                       http://www.nao-cc.com/naocc/vpgn/sanalyse/nataflobach/lautier_abergel.htm
    89
    910#---------------------------------------------------#
     
    5152                [diag_echecs]
    5253                B:Rg1,Dd1,Ta1,e1,Pa2,f6/N:Rb8,Pa6,f5
    53         </jeux>
    54         <jeux>
    5554                [diag_echecs]
    5655                r1bqkbnr/pp2pppp/2n5/2p1P3/3p4/2P2N2/PP1P1PPP/RNBQKB1R
  • _plugins_/_stable_/jeux/inc/mots_croises.php

    r7859 r7883  
    1515balises du plugin : <jeux></jeux>
    1616separateurs obligatoires : [horizontal], [vertical], [solution]
    17 separateurs optionnels   : [titre], [texte]
     17separateurs optionnels   : [titre], [texte], [config]
     18paramètres de configurations par defaut :
     19        solution=oui    // Afficher de la solution ?
    1820
    1921Exemple de syntaxe dans l'article :
     
    5456
    5557    // entetes : formulaire + grille
    56     $grille .= (!$solution)? "<form class=\"grille\" action=\"".self()."\" method=\"post\">\n"
    57                 : "<div class=\"solution\"><h2 class=\"spip\">"._T('jeux:solution')." : </h2>" ;
    58     $grille .= '<table class="grille" cellspacing="0" border="0" summary="'
     58    $grille .= (!$solution)? '<form class="jeux_grille" action="'.self()."\" method=\"post\">\n"
     59                : '<p class="jeux_solution">'._T('jeux:solution').' : </p>' ;
     60    $grille .= '<table class="jeux_grille" cellspacing="0" border="0" summary="'
    5961                . _T('motscroises:table_summary',Array('hauteur'=>$hauteur,'largeur'=>$largeur))
    6062                . "\">\n\t<tr>\n\t\t<td class=\"coin\"></td>\n";
     
    7274                foreach ($contenu_ligne as $colonne =>$cellule){
    7375                    $colonne++;
     76                        $class = $ligne==$hauteur?($colonne==$largeur?' class="bas droite"':' class="bas"'):($colonne==$largeur?' class="droite"':'');
    7477                    //s'il s'agit d'un noir
    7578                    if ($cellule == "*")
    7679                        $grille .= "\t\t<td class=\"noir\">*</td>\n";
    7780                                else if ($solution)
    78                                         $grille .= "\t\t<td>$cellule</td>\n" ;
     81                                        $grille .= "\t\t<td$class>$cellule</td>\n" ;
    7982                                else {
    8083                                        $name = 'GR'.$indexJeux.'x'.$colonne.'x'.$ligne;
    81                                         $grille .= "\t\t<td><label for=\"".$name.'">'
    82                                                 . _T('motscroises:ligne',Array('n'=>lettre_grille($ligne))).';'
    83                                                 . _T('motscroises:colonne',Array('n'=>$colonne)).'</label>'
     84                                        $grille .= "\t\t<td$class><label for=\"$name\">"
     85                                                . _T('jeux:ligne_n',Array('n'=>lettre_grille($ligne))).';'
     86                                                . _T('jeux:colonne_n',Array('n'=>$colonne)).'</label>'
    8487                                                . '<input type="text" maxlength="1" '
    8588                                                . ((isset($GLOBALS[$name]) and $GLOBALS[$name]!='')? 'value="'.$GLOBALS[$name]:'')
     
    9598        $grille.="</table>\n";
    9699       
    97         (!$solution) ? $grille.="<br /><input id=\"solution\" name=\"solution[]\" type=\"checkbox\"value=\"1\" /><label for=\"solution\" >"._T('motscroises:afficher_solution')."</label><br />\n
    98 <input type=\"submit\" value=\""._T('jeux:verifier')."\" name=\"bouton_envoi\" /></form>\n" : $grille.="</div>";
     100        if (!$solution) $grille .=
     101                (jeux_config('solution')?"<p><input id=\"affiche_solution_$indexJeux\" name=\"affiche_solution_{$indexJeux}[]\" type=\"checkbox\" class=\"jeux_cocher\" value=\"1\" /><label for=\"affiche_solution_$indexJeux\" >"._T('jeux:afficher_solution')."</label></p>\n":'')
     102                .'<p><input type="submit" value="'._T('jeux:verifier')."\" name=\"bouton_envoi_$indexJeux\" /></p></form>\n";
    99103
    100104        return $grille;
     
    103107// dechiffre le code source de la grille
    104108function calcul_tableau_grille($texte){
    105         $tableau = preg_split("/\r?\n/", trim($texte));
     109        $texte = preg_replace(",\s?[\r\n]+\s?,", "\n", trim($texte));
     110        $tableau = split("\n", $texte);
    106111        foreach ($tableau as $i=>$valeur) $tableau[$i] = preg_split('//', trim($valeur), -1, PREG_SPLIT_NO_EMPTY);
    107112        return $tableau;
     
    109114
    110115// compare les variables Post avec les valeurs de la solution...
    111 function comparaison_grille($tableau_grille, $indexJeux){
     116function comparaison_grille($tableau_grille, $indexJeux) {
    112117    $erreurs=0; $vides=0;
    113     foreach($tableau_grille as $ligne =>$contenu_ligne){
    114         $ligne++;
    115         foreach ($contenu_ligne as $colonne =>$cellule){
    116             $colonne++;
    117                        
     118    foreach($tableau_grille as $ligne =>$contenu_ligne) {
     119        foreach ($contenu_ligne as $colonne =>$cellule) {
    118120            //compare les valeurs du tableau PHP avec les variables POST
    119121                        if ($cellule!='*') {
    120                                 $input = trim($GLOBALS['GR'.$indexJeux.'x'.$colonne.'x'.$ligne]);
     122                                $input = trim($GLOBALS['GR'.$indexJeux.'x'.($colonne+1).'x'.($ligne+1)]);
    121123                    if ($input=='') $vides++;
    122124                 elseif (strtoupper($input)!=strtoupper($cellule)) $erreurs++;
     
    127129}
    128130
    129 // renvoie le nombre d'erreurs de de cases vides
     131// renvoie le nombre d'erreurs et de cases vides
    130132function calcul_erreurs_grille($solution, $indexJeux) {
    131         if ($GLOBALS["bouton_envoi"] == '') return '';
     133        if ($GLOBALS["bouton_envoi_$indexJeux"] == '') return '';
    132134        else {
    133135          list($nbr_erreurs, $nbr_vides) = comparaison_grille($solution, $indexJeux);
    134           return '<strong class="erreur">'
     136          return '<p class="jeux_erreur">'
    135137                . (($nbr_erreurs==0)?_T('jeux:aucune_erreur'):(
    136                  ($nbr_erreurs==1)?_T('jeux:une_erreur'):_T("jeux:nombre_erreurs", Array('err'=>$nbr_erreurs))
     138                 ($nbr_erreurs==1)?_T('jeux:une_erreur'):_T("jeux:n_erreurs", Array('n'=>$nbr_erreurs))
    137139                ))
    138140                . (($nbr_vides==0)?(($nbr_erreurs==0)?'. '._T('jeux:bravo'):''):(
    139                  ($nbr_vides==1)?' - '._T('motscroises:une_vide'):' - '._T("motscroises:nombre_vides", Array('vid'=>$nbr_vides))
     141                 ($nbr_vides==1)?' - '._T('jeux:une_vide'):' - '._T("jeux:n_vides", Array('n'=>$nbr_vides))
    140142                ))
    141                 . '</strong><br />';
     143                . '</p><br />';
    142144        }
    143145}
     
    150152  // parcourir tous les #SEPARATEURS
    151153        $tableau = jeux_split_texte('mots_croises', $texte);
     154        jeux_config_init("
     155                solution=oui    // Afficher de la solution ?
     156        ", false);
    152157        foreach($tableau as $i => $valeur) if ($i & 1) {
    153158         if ($valeur==_JEUX_TITRE) $titre = $tableau[$i+1];
     
    161166                        . affichage_grille_mc($solution, $indexJeux)
    162167        // definitions 
    163                         . '<div class="spip horizontal"><h4 class="spip grille">'
     168                        . '<div class="spip horizontal"><h4 class="spip jeux_grille">'
    164169                                        ._T('motscroises:horizontalement')."</h4>\n".$horizontal.'</div>'
    165                         . '<div class="spip vertical"><h4 class="spip grille">'
     170                        . '<div class="spip vertical"><h4 class="spip jeux_grille">'
    166171                                        ._T('motscroises:verticalement')."</h4>\n".$vertical.'</div>'
    167172        // solution
    168                         . (($GLOBALS["solution"][0] == 1)? affichage_grille_mc($solution, $indexJeux, true) : '');
     173                        . (($GLOBALS['affiche_solution_'.$indexJeux][0] == 1)? affichage_grille_mc($solution, $indexJeux, true) : '');
    169174}
    170175?>
  • _plugins_/_stable_/jeux/inc/sudoku.php

    r7859 r7883  
    1313balises du plugin : <jeux></jeux>
    1414separateurs obligatoires : [sudoku], [solution]
    15 separateurs optionnels   : [titre], [texte]
     15separateurs optionnels   : [titre], [texte], [config]
     16paramètres de configurations par defaut :
     17        solution=oui    // Afficher de la solution ?
     18
     19Tailles de sudoku acceptees : 4x4, 6x6, 9x9
    1620
    1721Exemple de syntaxe dans l'article :
     
    2024<jeux>
    2125        [sudoku]
    22         98-4----3
    23         64-3-----
    24         --3--5--1
    25         8-4---365
    26         2-6---8-9
    27         159---2-7
    28         3 --8--1--
    29         -----6-38
    30         5----2-94
    31        
     26        -2
     27        --5--4
     28        3--5
     29        ----3
     30        --1--6
     31        6--1
    3232        [solution]
    33         985421673
    34         641378952
    35         723965481
    36         874219365
    37         236547819
    38         159683247
    39         397854126
    40         412796538
    41         568132794
     33        423615
     34        165324
     35        314562
     36        256431
     37        531246
     38        642153
    4239</jeux>
    4340
    4441*/
    45 // affiche la grille de sudoku, en format solution au cas ou
     42// affiche la grille de sudoku, en format solution au cas ou...
    4643function affichage_sudoku($tableau_sudoku, $indexJeux, $solution=false){
    4744       
    4845        // les variables de la grille
    49         $hauteur =sizeof($tableau_sudoku);
    50     $largeur= sizeof($tableau_sudoku[0]);
     46        $largeur = $hauteur = sizeof($tableau_sudoku);
     47        switch ($largeur) {
     48         case 4 : $interh = $interv = '24'; break;
     49         case 6 : $interh = '36'; $interv = '246'; break;
     50         case 9 : $interh = $interv = '369'; break;
     51         default : return '<p class="jeux_erreur">'._T('jeux:erreur_taille').' : </p>' ;
     52        }
    5153    $grille='';
    52    
     54
    5355    // entetes : formulaire + grille
    54     $grille .= (!$solution)? "<form class=\"grille\" action=\"".self()."\" method=\"post\">\n"
    55                 : "<div class=\"solution\"><h2 class=\"spip\">"._T('sudoku:solution')." : </h2>" ;
    56     $grille .= '<table class="grille" cellspacing="0" border="0" summary="'
     56    $grille .= (!$solution)? '<form class="jeux_grille" action="'.self()."\" method=\"post\">\n"
     57                : '<p class="jeux_solution">'._T('jeux:solution').' : </p>' ;
     58    $grille .= '<table class="jeux_grille  sudoku" cellspacing="0" border="0" summary="'
    5759                . _T('sudoku:table_summary',Array('hauteur'=>$hauteur,'largeur'=>$largeur)) . "\">\n";
    5860   
     
    6365               
    6466                foreach ($contenu_ligne as $colonne =>$cellule){
    65                     $colonne++;
     67                    $colonne++;
     68                        $class = preg_match(",[$interh],", $colonne)?(preg_match(",[$interv],", $ligne)?' class="bas droite"':' class="droite"'):(preg_match(",[$interv],", $ligne)?' class="bas"':'');
     69//                              : ($ligne==$hauteur?($colonne==$largeur?' class="bas droite"':' class="bas"'):($colonne==$largeur?' class="droite"':''))
     70//                      );
    6671                    // s'il s'agit pas d'un espace
    67                     if ($cellule != "-")
    68                         $grille .= "\t\t<td><strong>$cellule</strong></td>\n";
    69                                 else if ($solution)
    70                                         $grille .= "\t\t<td>$cellule</td>\n" ;
    71                                 else {
    72                                         $name = 'GR'.$indexJeux.'x'.$colonne.'x'.$ligne;
    73                                         $grille .= "\t\t<td><label for=\"".$name.'">'
    74                                                 ._T('sudoku:ligne',Array('n'=>$ligne)).';'
    75                                                 ._T('sudoku:colonne',Array('n'=>$colonne)).'</label>'
    76                                                 . '<input type="text" maxlength="1" '
    77                                                 . ((isset($GLOBALS[$name]) and $GLOBALS[$name]!='')? 'value="'.$GLOBALS[$name]:'')
    78                                                 .'" name="'.$name.'" id="'.$name.'" />'
    79                                                 . "</td>\n" ;
    80                                 }
     72                    if ($cellule != '-')
     73                        $grille .= "\t\t<td$class><strong>$cellule</strong></td>\n";
     74                        else if ($solution)
     75                                $grille .= "\t\t<td$class>$cellule</td>\n" ;
     76                        else {
     77                                $name = 'GR'.$indexJeux.'x'.$colonne.'x'.$ligne;
     78                                $grille .= "\t\t<td$class><label for=\"$name\">"
     79                                        ._T('jeux:ligne_n',Array('n'=>$ligne)).';'
     80                                        ._T('jeux:colonne_n',Array('n'=>$colonne)).'</label>'
     81                                        . '<input type="text" maxlength="1" '
     82                                        . ((isset($GLOBALS[$name]) and $GLOBALS[$name]!='')? 'value="'.$GLOBALS[$name]:'')
     83                                        .'" name="'.$name.'" id="'.$name.'" />'
     84                                        . "</td>\n" ;
     85                        }
    8186                } // foreach
    8287                                                   
     
    8792        $grille.="</table>\n";
    8893       
    89         (!$solution) ? $grille .= "<br /><input id=\"affiche_solution_$indexJeux\" name=\"affiche_solution_{$indexJeux}[]\" type=\"checkbox\"value=\"1\" /><label for=\"affiche_solution_$indexJeux\" >"._T('sudoku:afficher_solution')."</label><br />\n
    90 <input type=\"submit\" value=\""._T('sudoku:verifier')."\" name=\"bouton_envoi\" /></form>\n" : $grille.="</div>";
     94        if (!$solution) $grille .=
     95                (jeux_config('solution')?"<p><input id=\"affiche_solution_$indexJeux\" name=\"affiche_solution_{$indexJeux}[]\" type=\"checkbox\" class=\"jeux_cocher\" value=\"1\" /><label for=\"affiche_solution_$indexJeux\" >"._T('jeux:afficher_solution')."</label></p>\n":'')
     96                .'<p><input type="submit" value="'._T('jeux:verifier_validite')."\" name=\"bouton_envoi_$indexJeux\" /></p></form>\n";
    9197
    9298        return $grille;
     
    95101// dechiffre le code source de la grille
    96102function calcul_tableau_sudoku($texte){
    97         $tableau = preg_split("/\r?\n/", trim($texte));
    98         foreach ($tableau as $i=>$valeur) $tableau[$i] = preg_split('//', trim($valeur), -1, PREG_SPLIT_NO_EMPTY);
     103        $texte = preg_replace(",\s?[\r\n]+\s?,", "\n", trim($texte));
     104        $tableau = split("\n", $texte);
     105        $hauteur = count($tableau);
     106        foreach ($tableau as $i=>$valeur) {
     107                $valeur .= str_repeat('-', $hauteur-strlen($valeur));
     108                $tableau[$i] = preg_split('//', trim($valeur), -1, PREG_SPLIT_NO_EMPTY);
     109        }
    99110        return $tableau;
    100111}
    101112
    102 // compare les variables Post avec les valeurs de la solution...
    103 function comparaison_sudoku($tableau_sudoku, $indexJeux){
     113// valide si la lsite est composee de chiffres tous differents
     114function sudoku_valide_liste($liste) {
     115        // echo"<br>", join(', ',$liste);
     116        $chiffres = "123456789";
     117        foreach($liste as $cell) if ($cell!='-') {
     118                if ($chiffres[$cell]=='*') return false; else $chiffres[$cell]='*';
     119        }
     120        // echo ":ok";
     121        return true;
     122}
     123
     124// valide si la grille de sudoku est valide
     125function sudoku_valide_grille($tableau_sudoku) {
     126        $taille = sizeof($tableau_sudoku);
     127        foreach($tableau_sudoku as $ligne) if (!sudoku_valide_liste($ligne)) return false;
     128        for ($i=0; $i<$taille; $i++) {
     129                $colonne=false;
     130                foreach($tableau_sudoku as $ligne) $colonne[] = $ligne[$i];
     131                if (!sudoku_valide_liste($colonne)) return false;
     132        }       
     133        switch ($taille) {
     134         case 4 : $ii = 2; $li = 2; $ij = 2; $lj = 2; break;
     135         case 6 : $ii = 3; $li = 2; $ij = 2; $lj = 3; break;
     136         case 9 : $ii = 3; $li = 3; $ij = 3; $lj = 3; break;
     137        }
     138        for ($i=0; $i<$ii; $i++) for ($j=0; $j<$ij; $j++) {
     139                $zone=false;
     140                for ($x=0; $x<$li; $x++) for ($y=0; $y<$lj; $y++) $zone[] = $tableau_sudoku[$i*$li+$x][$j*$lj+$y];
     141                if (!sudoku_valide_liste($zone)) return false;
     142        }
     143        return true;
     144}
     145
     146// retourne les erreurs et les cases vides eventuelles
     147function sudoku_validite($tableau_sudoku, $solution, $indexJeux) {
     148    $vides=0;
     149    foreach($tableau_sudoku as $ligne => $contenu_ligne) {
     150        foreach ($contenu_ligne as $colonne => $cellule) {
     151                        $input = trim($GLOBALS['GR'.$indexJeux.'x'.($colonne+1).'x'.($ligne+1)]);
     152                        if ($input=='' && $cellule=='-') $vides++;
     153                        if ($input!='' && $cellule=='-') $tableau_sudoku[$ligne][$colonne] = $input;
     154                }
     155        }
     156    return array(sudoku_valide_grille($tableau_sudoku), $vides);
     157}
     158
     159// compare les variables Post avec les valeurs de la solution... (fonction inutilisée...)
     160function comparaison_sudoku($tableau_sudoku, $indexJeux) {
    104161    $erreurs=0; $vides=0;
    105     foreach($tableau_sudoku as $ligne => $contenu_ligne){
    106         $ligne++;
    107         foreach ($contenu_ligne as $colonne => $cellule){
    108             $colonne++;
    109                        
     162    foreach($tableau_sudoku as $ligne => $contenu_ligne) {
     163        foreach ($contenu_ligne as $colonne => $cellule) {
    110164            // compare les valeurs du tableau PHP avec les variables POST
    111                         if ($cellule!='*') {
    112                                 $input = trim($GLOBALS['GR'.$indexJeux.'x'.$colonne.'x'.$ligne]);
    113                     if ($input=='') $vides++;
    114                  elseif (strtoupper($input)!=strtoupper($cellule)) $erreurs++;
    115                         }       
     165                        $input = trim($GLOBALS['GR'.$indexJeux.'x'.++$colonne.'x'.++$ligne]);
     166                        if ($input=='') $vides++;
     167                         elseif (strtoupper($input)!=strtoupper($cellule)) $erreurs++;
    116168                }
    117169        }
     
    119171}
    120172
    121 // renvoie le nombre d'erreurs de de cases vides
    122 function calcul_erreurs_sudoku($solution, $indexJeux) {
    123         if ($GLOBALS["bouton_envoi"] == '') return '';
     173// renvoie la validite et le nombre de cases vides
     174function calcul_erreurs_sudoku($tableau_sudoku, $solution, $indexJeux) {
     175        if ($GLOBALS["bouton_envoi_$indexJeux"] == '') return '';
    124176        else {
    125           list($nbr_erreurs, $nbr_vides) = comparaison_sudoku($solution, $indexJeux);
    126           return '<strong class="erreur">'
    127                 . (($nbr_erreurs==0)?_T('sudoku:aucune_erreur'):(
    128                  ($nbr_erreurs==1)?_T('sudoku:une_erreur'):_T("sudoku:nombre_erreurs", Array('err'=>$nbr_erreurs))
     177          list($valide, $nbr_vides) = sudoku_validite($tableau_sudoku, $solution, $indexJeux);
     178          return '<p class="jeux_erreur">'
     179                . _T('jeux:grille_'.($valide?'':'in').'valide')
     180                . (($nbr_vides==0)?(($nbr_erreurs==0)?'. '._T('jeux:bravo'):''):(
     181                 ($nbr_vides==1)?' - '._T('jeux:une_vide'):' - '._T("jeux:n_vides", Array('n'=>$nbr_vides))
    129182                ))
    130                 . (($nbr_vides==0)?(($nbr_erreurs==0)?'. '._T('sudoku:bravo'):''):(
    131                  ($nbr_vides==1)?' - '._T('sudoku:une_vide'):' - '._T("sudoku:nombre_vides", Array('vid'=>$nbr_vides))
    132                 ))
    133                 . '</strong><br />';
     183                . '</p><br />';
    134184        }
    135185}
     
    138188function jeux_sudoku($texte, $indexJeux) {
    139189        $sudoku = $solution = $titre = $html = false;
    140 
    141190        $tableau = jeux_split_texte('sudoku', $texte);
     191        jeux_config_init("
     192                solution=oui    // Afficher de la solution ?
     193        ", false);
    142194        foreach($tableau as $i => $valeur) if ($i & 1) {
    143195         if ($valeur==_JEUX_TITRE) $titre = $tableau[$i+1];
     
    148200       
    149201        return  ($titre?"<p class=\"jeux_titre sudoku_titre\">$titre</p>":'')
    150                         . calcul_erreurs_sudoku($solution, $indexJeux)
     202                        . calcul_erreurs_sudoku($sudoku, $solution, $indexJeux)
    151203                        . affichage_sudoku($sudoku, $indexJeux)
    152204        // solution
    153                         . (($GLOBALS["affiche_solution_".$indexJeux][0] == 1)? affichage_sudoku($solution, $indexJeux, true) : '');
     205                        . (($GLOBALS['affiche_solution_'.$indexJeux][0] == 1)? affichage_sudoku($solution, $indexJeux, true) : '');
    154206}
    155207?>
  • _plugins_/_stable_/jeux/jeux_config.php

    r7859 r7883  
    4545global $jeux_separateurs;
    4646$jeux_separateurs = array(
    47         'sudoku' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_SUDOKU, _JEUX_SOLUTION),
    48         'kakuro' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_KAKURO, _JEUX_SOLUTION),
    49         'mots_croises' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_HORIZONTAL, _JEUX_VERTICAL, _JEUX_SOLUTION),
     47        'sudoku' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_SUDOKU, _JEUX_SOLUTION, _JEUX_CONFIG),
     48        'kakuro' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_KAKURO, _JEUX_SOLUTION, _JEUX_CONFIG),
     49        'mots_croises' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_HORIZONTAL, _JEUX_VERTICAL, _JEUX_SOLUTION, _JEUX_CONFIG),
    5050        'qcm' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_QCM, _JEUX_QUIZ),
    5151        'textes' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_POESIE, _JEUX_CITATION, _JEUX_BLAGUE, _JEUX_AUTEUR, _JEUX_RECUEIL),
     
    7979// dossier jeux/style/
    8080global $jeux_header_public;
    81 $jeux_header_public = array('jeux','qcm', 'mots_croises');
     81$jeux_header_public = array('jeux', 'qcm', 'mots_croises', 'sudoku');
     82
    8283
    8384// liste des css a placer dans le header prive
    8485// dossier jeux/style/
    8586global $jeux_header_prive;
    86 $jeux_header_prive = array('jeux','qcm', 'mots_croises-prive');
     87$jeux_header_prive = array('jeux','qcm', 'mots_croises', 'sudoku');             //, 'mots_croises-prive');
    8788
    8889// liste des js a placer dans le header prive
  • _plugins_/_stable_/jeux/lang/jeux_en.php

    r7786 r7883  
    66
    77'votre_choix'   => "Your answer: ",
    8 'bravo'                 => "Congratulation !",
    98
    109'corriger'              => "Check",
    11 'verifier'              => 'V&eacute;rifier',
     10'verifier'              => 'Check',
     11'verifier_validite'     => 'Check the validity ',
     12
     13'afficher_solution'     =>'Show the solution',
    1214'solution'              =>'Solution',
    1315'reponse'               =>'Answer',
     
    1820'points' => "&nbsp;pts",
    1921
     22'ligne_n'               =>'row @n@',
     23'colonne_n'             =>'column @n@',
     24
    2025'reinitialiser'         => 'Reset',
    2126'recommencer'           => 'Restart',
    2227
     28'grille_valide'         =>'The grid is valid',
     29'grille_invalide'       =>'The grid is invalid',
    2330'aucune_erreur'         =>'No error',
    2431'une_erreur'            => 'An error',
    25 'nombre_erreurs'        => '@err@ errors',
     32'n_erreurs'     => '@n@ errors',
     33'n_vides'               => '@n@ empty cells',
     34'une_vide'                      => 'One empty cell',
     35'bravo'                 => "Congratulation !",
    2636
     37'erreur_taille_grille'  => "Error: invalid size",
    2738);
    2839
  • _plugins_/_stable_/jeux/lang/jeux_fr.php

    r7786 r7883  
    66
    77'votre_choix' => "Votre choix : ",
    8 'bravo' => "Bravo !",
    98
    109'corriger'              => "Corriger",
    1110'verifier'              => 'V&eacute;rifier',
     11'verifier_validite'     => 'V&eacute;rifier la validit&eacute;',
     12
     13'afficher_solution'     =>'Afficher la solution',
    1214'solution'              =>'Solution',
    1315'reponse'               =>'R&eacute;ponse',
     
    1820'points'        => "&nbsp;pts",
    1921
     22'ligne_n'               =>'ligne @n@',
     23'colonne_n'             =>'colonne @n@',
     24
    2025'reinitialiser'         => 'R&eacute;initialiser',
    2126'recommencer'           => 'Recommencer',
    2227
     28'grille_valide'         =>'La grille est valide',
     29'grille_invalide'               =>'La grille est invalide',
    2330'aucune_erreur'         =>'Aucune erreur',
    2431'une_erreur'            => 'Une erreur',
    25 'nombre_erreurs'        => '@err@ erreurs',
     32'n_erreurs'     => '@n@ erreurs',
     33'n_vides'               => '@n@ cases vides',
     34'une_vide'                      => 'Une case vide',
     35'bravo' => "Bravo !",
     36
     37'erreur_taille' => "Erreur : taille invalide",
    2638
    2739);
  • _plugins_/_stable_/jeux/lang/jeux_it.php

    r7786 r7883  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66
    7 'votre_choix'           => "La tua risposta: ",
    8 'bravo'                         => "Complimenti!",
     7'votre_choix' => "La tua risposta: ",
    98
    109'corriger'              => 'Controlla',
    1110'verifier'              => 'Controlla',
     11'verifier_validite'     => 'Controlla la validità',
     12
     13'afficher_solution'     =>'Visualizza la soluzione',
    1214'solution'              =>'Soluzione',
    1315'reponse'               =>'Risposta',
     
    1820'points'        => "punti",
    1921
    20 'reinitialiser'         => 'Ricarica',
     22'ligne_n'               =>'riga @n@',
     23'colonne_n'             =>'colonna @n@',
     24
     25'reinitialiser'         => 'Ricarica', // 'qcm_reinitialiser' => "Ricarica il questionario",
    2126'recommencer'           => 'Ricomincia',
    2227
    23 // 'qcm_reinitialiser' => "Ricarica il questionario",
    24 
     28'grille_valide'         =>'Lo schema è valido',
     29'grille_invalide'               =>'Lo schema è invalido',
    2530'aucune_erreur'         => 'Nessun errore',
    2631'une_erreur'            => 'Un errore',
    27 'nombre_erreurs'        => '@err@ errori',
     32'n_erreurs'     => '@n@ errori',
     33'n_vides'               => '@n@ caselle bianche',
     34'une_vide'                      => 'Una casella bianca',
     35'bravo'                         => "Complimenti!",
     36
     37'erreur_taille_grille'  => "Errore: invalid size",
    2838
    2939);
  • _plugins_/_stable_/jeux/lang/motscroises_en.php

    r7779 r7883  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66
    7 'titre'         =>'Grille de mots-crois&eacute;s',
     7'titre'         =>'Crossword puzzle',
    88
    9 'afficher_solution'     =>'Afficher la solution (en bas de page)',
    10 'table_summary'         =>'Grille de mots-crois&eacute;s de @largeur@ colonnes sur @hauteur@ lignes',
    11 'ligne'                 =>'ligne @n@',
    12 'colonne'               =>'colonne @n@',
     9'table_summary'         =>'Crossword puzzle with @largeur@ columns and @hauteur@ rows',
    1310
    14 'horizontalement'       => 'Horizontalement&nbsp;:',
    15 'verticalement'         => 'Verticalement&nbsp;:',
    16 
    17 'nombre_vides'          => '@vid@ cases vides',
    18 'une_vide'                      => 'Une case vide',
     11'horizontalement'       => 'Across:',
     12'verticalement'         => 'Down:',
    1913
    2014);
  • _plugins_/_stable_/jeux/lang/motscroises_fr.php

    r7729 r7883  
    77'titre'         =>'Grille de mots-crois&eacute;s',
    88
    9 'afficher_solution'     =>'Afficher la solution (en bas de page)',
    109'table_summary'         =>'Grille de mots-crois&eacute;s de @largeur@ colonnes sur @hauteur@ lignes',
    11 'ligne'                 =>'ligne @n@',
    12 'colonne'               =>'colonne @n@',
    1310
    1411'horizontalement'       => 'Horizontalement&nbsp;:',
    1512'verticalement'         => 'Verticalement&nbsp;:',
    16 
    17 'nombre_vides'          => '@vid@ cases vides',
    18 'une_vide'                      => 'Une case vide',
    1913
    2014);
  • _plugins_/_stable_/jeux/lang/motscroises_it.php

    r7729 r7883  
    77'titre'         =>'Schema di parole crociate',
    88
    9 'afficher_solution'     =>'Visualizza la soluzione (in fondo alla pagina)',
    109'table_summary'         =>'Schema di parole crociate di @largeur@ colonne e @hauteur@ righe',
    11 'ligne'                 =>'riga @n@',
    12 'colonne'               =>'colonna @n@',
    1310
    1411'horizontalement'       => 'Orizzontali:',
    1512'verticalement'         => 'Verticali:',
    16 
    17 'nombre_vides'          => '@vid@ caselle bianche',
    18 'une_vide'                      => 'Una casella bianca',
    1913
    2014);
  • _plugins_/_stable_/jeux/lang/sudoku_en.php

    r7779 r7883  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66
    7 'afficher_solution'     =>'Afficher la solution',
    8 'verifier'              => 'V&eacute;rifier la validit&eacute;',
    9 'solution'              =>'Solution',
    10 'aucune_erreur'         =>'La grille est valide',
    11 'titre'         =>'Grille de sudoku',
    12 'table_summary'         =>'Grille de sudoku de @largeur@ colonnes sur @hauteur@ lignes',
    13 'ligne'                 =>'ligne @n@',
    14 'colonne'               =>'colonne @n@',
    15 
    16 'horizontalement'       => 'Horizontalement&nbsp;:',
    17 'verticalement'         => 'Verticalement&nbsp;:',
    18 'nombre_erreurs'        => '@err@ erreurs',
    19 'une_erreur'            => 'Une erreur',
    20 'nombre_vides'          => '@vid@ cases vides',
    21 'une_vide'                      => 'Une case vide',
    22 'bravo'                 => 'Bravo !'
     7'titre'         =>'Sudoku puzzle',
     8'table_summary'         =>'Sudoku puzzle with @largeur@ columns and @hauteur@ rows',
    239
    2410);
  • _plugins_/_stable_/jeux/lang/sudoku_fr.php

    r7674 r7883  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66
    7 'afficher_solution'     =>'Afficher la solution',
    8 'verifier'              => 'V&eacute;rifier la validit&eacute;',
    9 'solution'              =>'Solution',
    10 'aucune_erreur'         =>'La grille est valide',
    117'titre'         =>'Grille de sudoku',
    128'table_summary'         =>'Grille de sudoku de @largeur@ colonnes sur @hauteur@ lignes',
    13 'ligne'                 =>'ligne @n@',
    14 'colonne'               =>'colonne @n@',
    15 
    16 'horizontalement'       => 'Horizontalement&nbsp;:',
    17 'verticalement'         => 'Verticalement&nbsp;:',
    18 'nombre_erreurs'        => '@err@ erreurs',
    19 'une_erreur'            => 'Une erreur',
    20 'nombre_vides'          => '@vid@ cases vides',
    21 'une_vide'                      => 'Une case vide',
    22 'bravo'                 => 'Bravo !'
    239
    2410);
  • _plugins_/_stable_/jeux/lang/sudoku_it.php

    r7674 r7883  
    55$GLOBALS[$GLOBALS['idx_lang']] = array(
    66
    7 'afficher_solution'     =>'Visualizza la soluzione',
    8 'verifier'              => 'Controlla la validità',
    9 'solution'              =>'Soluzione',
    10 'aucune_erreur'         =>'Lo schema è valido', //'Nessun errore'
    117'titre'         =>'Schema di sudoku',
    128'table_summary'         =>'Schema di sudoku di @largeur@ colonne e @hauteur@ righe',
    13 'ligne'                 =>'riga @n@',
    14 'colonne'               =>'colonna @n@',
    15 
    16 'horizontalement'       => 'Orizzontali:',
    17 'verticalement'         => 'Verticali:',
    18 'nombre_erreurs'        => '@err@ errori',
    19 'une_erreur'            => 'Un errore',
    20 'nombre_vides'          => '@vid@ caselle bianche',
    21 'une_vide'                      => 'Una casella bianca',
    22 'bravo'                 => 'Bravo!'
    239
    2410);
  • _plugins_/_stable_/jeux/styles/jeux.css

    r7785 r7883  
    1919.jeux_titre{
    2020/* text-align: center;*/
    21  font-size: 14;
     21 font-size:120%;
    2222 font-weight: bold;
    2323/* color: #3F5264; */
    2424}
    2525
    26 .qcm_question{
     26.jeux_question{
    2727 font-size: 80%;
    28  font-size: 12;
     28/* font-size: 12;*/
    2929 font-weight: bold;
    3030/* color: #3F5264;*/
     
    5454 font-family: arial, helvetica, sans-serif;
    5555 color: red;
    56  font-size: 12;
     56 /*font-size: 12;*/
    5757 font-weight: bold;
    5858 border: 2px solid green;
     
    6969 font-family: arial, helvetica, sans-serif;
    7070 color: red;
    71  font-size: 14;
     71 font-size: 90%;
     72 font-weight:bold;
     73 font-style:italic;
     74/*      float:left;*/
     75        clear:both;
     76        text-align:left;
     77 
    7278}
     79
     80.jeux_cocher  {
     81        margin-right:2pt;
     82}
     83
     84.jeux_solution  {
     85/* font-size: 14;*/
     86 font-weight: bold;
     87 padding: 4pt 0 0 0;
     88 clear:both;
     89}
     90
     91.jeux_grille{
     92        margin:0;
     93        padding:0;
     94}
     95
     96form.jeux_grille{
     97        float:left;
     98        clear:both;
     99        padding:0 4pt 0 0;
     100        margin:0;
     101        width:auto;
     102}
     103
     104table.jeux_grille label{
     105        display:none
     106}
     107
     108table.jeux_grille {
     109        border:0;
     110        padding:0;
     111        margin:4pt;
     112}       
     113
     114table.jeux_grille input, table.jeux_grille th, table.jeux_grille td{
     115        min-width:1.5em;
     116        width:1.5em;
     117        height:1.5em;
     118        min-height:1.5em;
     119        text-align:center;
     120        vertical-align:middle;
     121        border:0;
     122        margin:0;
     123        padding:0;
     124}
     125
     126table.jeux_grille td{
     127        border-top:1px solid black;
     128        border-left:1px solid black;
     129}
     130
     131.jeux_grille td.droite{
     132        border-right:1px solid black;
     133}
     134
     135.jeux_grille td.bas{
     136        border-bottom:1px solid black;
     137}
  • _plugins_/_stable_/jeux/styles/mots_croises.css

    r7762 r7883  
    11/*
    2 .grille td.noir {
     2.jeux_grille td.noir {
    33        background-color:#000000;
    44        color:#000000;
    55}
    66
    7 table.grille input, table.grille th{min-width:1.5em;
     7table.jeux_grille input, table.jeux_grille th{min-width:1.5em;
    88width:1.5em;
    99text-align:center;
    1010vertical-align:middle;
    1111height:1.5em;}
    12 table.grille td{border:1px solid black;text-align:center}
    13 .grille td.coin,table.grille input,.grille th{border:0px solid black}
     12table.jeux_grille td{border:1px solid black;text-align:center}
     13.jeux_grille td.coin,table.jeux_grille input,.jeux_grille th{border:0px solid black}
    1414.erreur{float:left;}
    1515
    16 table.grille label{display:none}
     16table.jeux_grille label{display:none}
    1717
    1818
     
    2828//.horizontal .vertical {float:left}
    2929
    30 form.grille{float:left;
     30form.jeux_grille{float:left;
    3131clear:both;
    3232
     
    4040p.spip {clear:both}
    4141
    42 h4.grille{
     42h4.jeux_grille{
    4343        margin:0;
    4444        padding:0;
     
    5252
    5353
    54 .grille{margin:0;padding:0}
     54.jeux_grille{margin:0;padding:0}
    5555
    5656.solution{clear:both}
    5757
    5858*/
    59 td.noir {
    60         background-color:#000000;
    61         color:#000000;
    62 }
    6359
    6460table.motscroises0 {
     
    6965}       
    7066
    71 table.grille {
    72         border:0;
    73         padding:0;
    74         margin:0pt;
    75 }       
    76 
    77 table.grille input, table.grille th{
    78         min-width:1.5em;
    79         width:1.5em;
    80         text-align:center;
    81         vertical-align:middle;
    82         height:1.5em;
    83         border:0;
    84         margin:0;
    85         padding:0;
     67.jeux_grille td.noir {
     68        background-color:#000000;
     69        color:#000000;
    8670}
    8771
    88 table.grille td{
    89         border:1px solid black;
    90         text-align:center;
    91         margin:0;
    92         padding:0;
    93 }
    94 
    95 .grille td.coin{
     72.jeux_grille td.coin{
    9673        border:0px;
    97 }
    98 
    99 table.grille label{
    100         display:none
    10174}
    10275
     
    128101/*.horizontal .vertical {float:left}*/
    129102
    130 form.grille{
    131         float:left;
    132         clear:both;
    133         padding:0;
    134         padding-right:2%;
    135         margin:0;
    136         width:auto;
    137 }
     103
    138104/*
    139105p.spip {
     
    142108*/
    143109
    144 h4.grille{
     110h4.jeux_grille{
    145111        margin:0.8em;
    146112        padding:0;
     
    158124}
    159125
    160 .grille{
    161         margin:0;
    162         padding:0;
    163 }
    164 
    165 .solution{
    166         clear:both;
    167 }
    168 
    169 
    170 .erreur{
    171 /*      float:left;*/
    172         clear:both;
    173         text-align:left;
    174 }
  • _plugins_/_stable_/jeux/styles/sudoku.css

    r7779 r7883  
    1 /*
    2 .grille td.noir {
    3         background-color:#000000;
    4         color:#000000;
    5 }
    61
    7 table.grille input, table.grille th{min-width:1.5em;
    8 width:1.5em;
    9 text-align:center;
    10 vertical-align:middle;
    11 height:1.5em;}
    12 table.grille td{border:1px solid black;text-align:center}
    13 .grille td.coin,table.grille input,.grille th{border:0px solid black}
    14 .erreur{float:left;}
    15 
    16 table.grille label{display:none}
    17 
    18 
    19 
    20 .horizontal ol{list-style-type:upper-alpha}
    21 
    22 .vertical, .horizontal{float:left;
    23 font-size:90%;
    24 max-width:49%;
    25 width:auto;
    26 margin-right:5%;
    27 margin-left:5%}
    28 //.horizontal .vertical {float:left}
    29 
    30 form.grille{float:left;
    31 clear:both;
    32 
    33 padding:0;
    34 padding-right:2%;
    35 margin:0;
    36 
    37 width:auto;
    38 }
    39 
    40 p.spip {clear:both}
    41 
    42 h4.grille{
    43         margin:0;
    44         padding:0;
    45         font-weight:bold;
    46 }
    47 
    48 .horizontal ol,.vertical ol{margin:0;
    49 list-style-position:inside;
    50 }
    51 .horizontal >ol, .vertical > ol{list-style-position:outside;}
    52 
    53 
    54 .grille{margin:0;padding:0}
    55 
    56 .solution{clear:both}
    57 
    58 */
    59 td.noir {
    60         background-color:#000000;
    61         color:#000000;
    62 }
    63 
    64 table.motscroises0 {
    65         border:0;
    66         padding:0;
    67         width:100%;
    68         text-align:left;
     2table.sudoku {
     3        border:1px solid black;
    694}       
    705
    71 table.grille {
    72         border:0;
    73         padding:0;
    74         margin:0pt;
    75 }       
    76 
    77 table.grille input, table.grille th{
    78         min-width:1.5em;
    79         width:1.5em;
    80         text-align:center;
    81         vertical-align:middle;
    82         height:1.5em;
    83         border:0;
    84         margin:0;
    85         padding:0;
    86 }
    87 
    88 table.grille td{
    89         border:1px solid black;
    90         text-align:center;
    91         margin:0;
    92         padding:0;
    93 }
    94 
    95 .grille td.coin{
    96         border:0px;
    97 }
    98 
    99 table.grille label{
    100         display:none
    101 }
    102 
    103 .vertical, .horizontal{
    104         float:left;
    105         font-size:90%;
    106         text-align:left;
    107        
    108 /*
    109         min-width:18em;
    110         width:18em;
    111         margin-right:0.8em;
    112         margin-left:0.8em;
    113 */
    114         max-width:42%;
    115         width:42%;
    116         margin-right:3%;
    117         margin-left:3%;
    118 }
    119 
    120 .horizontal li{
    121         list-style-type:upper-alpha;
    122 }
    123 
    124 .vertical li{
    125         list-style-type:decimal;
    126 }
    127 
    128 /*.horizontal .vertical {float:left}*/
    129 
    130 form.grille{
    131         float:left;
    132         clear:both;
    133         padding:0;
    134         padding-right:2%;
    135         margin:0;
    136         width:auto;
    137 }
    138 /*
    139 p.spip {
    140         clear:both
    141 }
    142 */
    143 
    144 h4.grille{
    145         margin:0.8em;
    146         padding:0;
    147         font-weight:bold
    148 }
    149 
    150 
    151 .horizontal ol, .vertical ol{
    152         margin:0;
    153         list-style-position:inside;
    154 }
    155 
    156 .horizontal > ol, .vertical > ol{
    157         list-style-position:outside;
    158 }
    159 
    160 .grille{
    161         margin:0;
    162         padding:0;
    163 }
    164 
    165 .solution{
    166         clear:both;
    167 }
    168 
    169 
    170 .erreur{
    171 /*      float:left;*/
    172         clear:both;
    173         text-align:left;
    174 }
Note: See TracChangeset for help on using the changeset viewer.