You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jeux/jeux_config.php

221 lines
9.8 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
#---------------------------------------------------#
# Plugin : Jeux #
# Auteur : Patrice Vanneufville, 2006 #
# Gestion des scores : Maieul Rouquette, 2007 #
# Contact : patrice¡.!vanneufville¡@!laposte¡.!net #
# Licence : GPL #
#--------------------------------------------------------------------------#
# Documentation : https://contrib.spip.net/Des-jeux-dans-vos-articles #
#--------------------------------------------------------------------------#
# exemples de jeux avec les mots :
# http://www.cc-concarneaucornouaille.fr/net_bibli/portail/jouer%20avec%20les%20mots.htm
# http://d.ch.free.fr/index.html
# jeux musicaux :
# http://www.metronimo.com/fr/jeux/
// balises du plugin a inserer dans les articles
define('_JEUX_DEBUT', '<jeux>');
define('_JEUX_FIN', '</jeux>');
define('_JEUX_POST', '@@JEUX_POST@@');
define('_JEUX_HEAD1', "<!-- CSS/JS JEUX -->");
define('_JEUX_HEAD2', "<!-- CSS/JS JEUX (AUTO) -->");
// separateurs utilisables a l'interieur des balises ci-dessus
// format a utiliser dans la redaction : [separateur]
define('_JEUX_TITRE', 'titre'); // separateur indiquant le titre du jeu
define('_JEUX_TEXTE', 'texte'); // separateur indiquant un contenu a garder telquel
define('_JEUX_COPYRIGHT', 'copyright'); // separateur indiquant un contenu a encapsuler dans un <div class="jeux_copyright"/>
define('_JEUX_CONFIG', 'config'); // separateur permettant de passer des parametres au jeu
#define('_JEUX_CONFIG', 'input'); // separateur permettant d'inserer un <input/> non evalue
define('_JEUX_REPONSE', 'reponse');
define('_JEUX_SOLUTION', 'solution');
define('_JEUX_SCORE', 'score');
define('_JEUX_HORIZONTAL', 'horizontal');
define('_JEUX_VERTICAL', 'vertical');
define('_JEUX_SUDOKU', 'sudoku');
define('_JEUX_KAKURO', 'kakuro');
define('_JEUX_QCM', 'qcm');
define('_JEUX_QRM', 'qrm');
define('_JEUX_QUIZ', 'quiz');
define('_JEUX_RELIER', 'relier');
define('_JEUX_GAUCHE', 'gauche');
define('_JEUX_DROITE', 'droite');
define('_JEUX_CHARADE', 'charade');
define('_JEUX_DEVINETTE', 'devinette');
define('_JEUX_TROU', 'trou');
define('_JEUX_POESIE', 'poesie');
define('_JEUX_CITATION', 'citation');
define('_JEUX_BLAGUE', 'blague');
define('_JEUX_AUTEUR', 'auteur');
define('_JEUX_RECUEIL', 'recueil');
define('_JEUX_PENDU', 'pendu');
define('_JEUX_DIAG_ECHECS', 'diag_echecs');
define('_JEUX_COLORATION', 'coloration');
define('_JEUX_CHESSSTUFF', 'chesstuff');
define('_JEUX_SAISIE', 'saisie');
define('_JEUX_LABEL', 'label');
define('_JEUX_MULTI_JEUX', 'jeu');
// globale stockant les carateristiques d'un jeu :
// - les separateurs autorises
// - les signatures permettant de reconnaitre un jeu
// - le nom du jeu
// multi_jeux doit toujours etre en premier...
global $jeux_caracteristiques;
$jeux_caracteristiques = array(
// liste des separateurs autorises dans les jeux.
// tous les jeux doivent etre listes ci-apres.
// monjeu est le jeu traite dans le fichier jeux/monjeu.php
'SEPARATEURS' => array(
'multi_jeux' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_MULTI_JEUX, _JEUX_CONFIG, _JEUX_SCORE),
'sudoku' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_SUDOKU, _JEUX_SOLUTION, _JEUX_CONFIG),
//'kakuro' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_KAKURO, _JEUX_SOLUTION, _JEUX_CONFIG),
'mots_croises' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_HORIZONTAL, _JEUX_VERTICAL, _JEUX_SOLUTION, _JEUX_CONFIG),
'qcm' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_QCM, _JEUX_QRM, _JEUX_QUIZ, _JEUX_CONFIG, _JEUX_SCORE),
'textes' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_POESIE, _JEUX_CITATION, _JEUX_BLAGUE, _JEUX_AUTEUR, _JEUX_RECUEIL, _JEUX_CONFIG),
'devinettes' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_DEVINETTE, _JEUX_CHARADE, _JEUX_REPONSE, _JEUX_CONFIG),
'trous' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_TROU, _JEUX_CONFIG, _JEUX_SCORE),
'pendu' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_PENDU, _JEUX_CONFIG),
'diag_echecs' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_DIAG_ECHECS, _JEUX_COLORATION, _JEUX_CONFIG),
'chesstuff' => array(_JEUX_CHESSSTUFF, _JEUX_CONFIG),
'saisies' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_LABEL, _JEUX_SAISIE, _JEUX_CONFIG),
'relier' => array(_JEUX_TITRE, _JEUX_TEXTE, _JEUX_COPYRIGHT, _JEUX_GAUCHE, _JEUX_DROITE, _JEUX_SOLUTION, _JEUX_CONFIG),
),
// liste des signatures caracteristiques d'un jeu.
// tous les jeux doivent etre listes ci-apres.
// monjeu est le jeu traite dans le fichier jeux/monjeu.php
// exemple :
// array(_JEUX_SEPAR_3, _JEUX_SEPAR_4) doit s'interpreter :
// " le jeu est charge si on trouve _JEUX_SEPAR_3 ou _JEUX_SEPAR_4
// a l'interieur de <jeux> et </jeux> "
'SIGNATURES' => array(
'multi_jeux' => array(_JEUX_MULTI_JEUX),
'sudoku' => array(_JEUX_SUDOKU),
//'kakuro' => array(_JEUX_KAKURO),
'mots_croises' => array(_JEUX_HORIZONTAL, _JEUX_VERTICAL),
'qcm' => array(_JEUX_QCM, _JEUX_QRM, _JEUX_QUIZ),
'textes' => array(_JEUX_POESIE, _JEUX_CITATION, _JEUX_BLAGUE),
'devinettes' => array(_JEUX_DEVINETTE, _JEUX_CHARADE),
'trous' => array(_JEUX_TROU),
'pendu' => array(_JEUX_PENDU),
'diag_echecs' => array(_JEUX_DIAG_ECHECS),
'chesstuff' => array(_JEUX_CHESSSTUFF),
'saisies' => array(_JEUX_SAISIE),
'relier' => array(_JEUX_GAUCHE),
),
// nom court a donner aux jeux
'TYPES' => array(
'multi_jeux' => _T('jeux:multi_jeux'),
'sudoku' => _T('sudoku:titre_court'),
//'kakuro' => _T('kakuro:titre_court'),
'mots_croises' => _T('motscroises:titre_court'),
'qcm' => _T('qcm:titre_court'),
'textes' => _L('Textes'),
'devinettes' => _L('Devinettes'),
'trous' => _L('Trous'),
'pendu' => _T('pendu:titre_court'),
'diag_echecs' => _L('Echecs'),
'chesstuff' => _L('Echecs'),
'saisies' => _L('Saisies'),
'relier' => _L('Points à relier'),
),
); // $jeux_caracteristiques
// on envoie les caracteristiques aux plugins pour pouvoir ajouter des jeux tiers
$jeux_caracteristiques = pipeline('jeux_caracteristiques', $jeux_caracteristiques);
// addition de tous les separateurs
$temp = array();
foreach($jeux_caracteristiques['SEPARATEURS'] as $sep) $temp=array_merge($temp, $sep);
$jeux_caracteristiques['SEPARATEURS']['la_totale'] = array_unique($temp);
unset($temp);
// liste manuelle des css ou js a placer dans le header prive
// ca peut toujours servir pour les controles...
// dossiers : jeux/style/ et jeux/javascript/
global $jeux_header_prive, $jeux_javascript_prive;
$jeux_header_prive = array('jeux','qcm', 'mots_croises', 'sudoku', 'pendu', 'trous', 'relier');
// mots_croises.js suffit car sudoku.js est a priori l'exacte copie
$jeux_javascript_prive = array('jeux', 'qcm', 'pendu', 'mots_croises', 'relier');
// Codes RGB des couleurs predefinies a utiliser pour certains parametres apres la balise [config]
global $jeux_couleurs;
$jeux_couleurs = array(
// en
'white' => array(255,255,255),
'black' => array(0,0,0),
'grey2' => array(170,170,170),
'grey' => array(209,209,209),
'green' => array(191,220,192),
'blue' => array(152,192,218),
'brown' => array(224,183,153),
'lightyellow' => array(247,235,211),
'lightbrown' => array(255,243,217),
'red' => array(230,0,0),
// fr
'blanc' => array(255,255,255),
'noir' => array(0,0,0),
'gris2' => array(170,170,170),
'gris' => array(209,209,209),
'vert' => array(191,220,192),
'bleu' => array(152,192,218),
'brun' => array(224,183,153),
'jauneclair' => array(247,235,211),
'brunclair' => array(255,243,217),
'rouge' => array(230,0,0),
);
function jeux_rgbArray($couleur) {
global $jeux_couleurs;
if(isset($jeux_couleurs[$couleur]))
return $jeux_couleurs[$couleur];
include_spip('inc/filtres_images_mini');
$c = str_replace('html:', '', $couleur); // forcer une couleur html
$c = _couleur_hex_to_dec($c);
return $jeux_couleurs[$couleur] = array($c['red'], $c['green'], $c['blue']);
}
function jeux_rgb($couleur, $rgb=true) {
list($a, $b, $c) = jeux_rgbArray($couleur);
if($rgb) return "rgb($a, $b, $c)";
include_spip('inc/filtres_images_mini');
return _couleur_dec_to_hex($a, $b, $c);
}
global $scoreMULTIJEUX; $scoreMULTIJEUX = array();
// renvoie un tableau de lettres
function jeux_alphabet($alphabet = 'latin1', $br = false) {
// surcharge ou extension eventuelle par constante. Ex: define('jeux_alphabet_voyelles', 'A,E,I,O,U');
if(defined($a='jeux_alphabet_'.$alphabet)) $res = constant($a);
// quelques alphabets connus (a completer ?)
// le retour a la ligne est une double virgule
else switch($alphabet) {
case 'latin1' : $res = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,-'; break;
case 'latinbr' : $res = 'A,B,C,D,,E,F,G,H,I,,J,K,L,M,N,,O,P,Q,R,S,,T,U,V,W,X,,Y,Z,-'; break;
case 'azerty1' : $res = 'A,Z,E,R,T,Y,U,I,O,P,,Q,S,D,F,G,H,J,K,L,M,,W,X,C,V,B,N'; break;
case 'azerty2' : $res = 'A,Z,E,R,T,Y,U,I,O,P,,Q,S,D,F,G,H,J,K,L,M,,W,X,C,V,B,N,-'; break;
case 'qwerty1' : $res = 'Q,W,E,R,T,Y,U,I,O,P,,A,S,D,F,G,H,J,K,L,,Z,X,C,V,B,N,M'; break;
case 'qwerty2' : $res = 'Q,W,E,R,T,Y,U,I,O,P,,A,S,D,F,G,H,J,K,L,,Z,X,C,V,B,N,M,-'; break;
case 'qwerty3' : $res = 'Q,W,E,R,T,Y,U,I,O,P,,A,S,D,F,G,H,J,K,L,Ñ,,Z,X,C,V,B,N,M,-'; break;
case 'español1' : $res = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z,-'; break;
case 'español2' : $res = 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,Ñ,O,P,Q,R,S,T,U,V,W,X,Y,Z,Á,É,Í,Ó,Ú,-'; break;
case 'cyrillic1': $res = 'А,Б,В,Г,Д,Е,Ё,Ж,З,И,Й,К,Л,М,Н,О,П,Р,С,Т,У,Ф,Х,Ц,Ч,Ш,Щ,Ъ,Ь,Ы,Э,Ю,Я'; break;
// permet de retourner eventuellement un alphabet perso. Ex: jeux_alphabet('A,E,I,O,U')
default: $res = $alphabet;
}
// mb_regex_encoding('UTF-8'); return mb_split(',', $res);
if(!$br) return preg_split('/,+/u', $res);
$res = preg_split('/,,/u', $res);
foreach($res as $i=>$v) $res[$i] = preg_split('/,/u', $v);
return $res;
}
?>