// cfg2000fr_magie_2x3_v0.js
// Tout ce qui suit un double slash sont des commentaires, jusqu'à la fin de la ligne.
/*
Les blocs de lignes commençant par 'slash étoile' et terminant par 'étoile slash' sont des commentaires
Ceci est un fichier de configuration, qui permet de définir :
° la toolbox = l'ensemble des blocs disponibles
° la startblocs = les blocs présents au départ
° la définition des cases
° la définition des cartes présentes
° les fenêtres visibles et cachées
° la position des fenêtres
° la taille des fenêtres
° divers autres paramètres.
Ce fichier de configuration est un programme écrit en javascript.
Ceci rend la configuration très souple et puissante.
Il n'est pas nécessaire de tout comprendre pour prendre un fichier de configuration
existant, faire quelques modification et obtenir ainsi un nouveau fichier de fonfiguration.
*/
//-------------------------------------------------
/*
Un petit tour de magie.
Le plateau est préparé, mais c'est à l'utilisateur d'écrire le programme.
*/
// ########################################################################################
function confToolBoxInit() {
//==========================
// Définition de la toolbox utilisée.
} // confToolBoxInit
function confStartBlocksInit() {
//==============================
// Définition des blocs présents au départ
// C'est long mais simple à faire.
// On :
// ° place les blocs désirés dans ex2000.html
// ° Fichiers enregistrer sous ...
// ° demande de voir le fichier dans un éditeur de texte.
// ° fait un copier-coller du texte.
// ° ajoute des +'\n' en début de chaque ligne (sauf la première)
// ° ajoute des ' en fin de ligne.
//return; // Ne fait rien
gloB.demoWorkspace.clear(); // Enlève tous les blocs, c.f. : https://developers.google.com/blockly/reference/js/Blockly.WorkspaceSvg#cleanUp
var strText =
''
+'\n '
+'\n '
+'\n '
+'\n Juste un exemple, à effacer.'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n 401'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 900'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 12'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n NONE'
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n 12'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n NONE'
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n 12'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n NONE'
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n 1'
+'\n '
+'\n '
+'\n 12'
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n '
+'\n'
+'\n';
var xml = Blockly.Xml.textToDom(strText);
Blockly.Xml.domToWorkspace(xml, gloB.demoWorkspace);
} // confStartBlocksInit
function confParamInit() {
//========================
// Définition de certains paramètres
// c.f. bglibrary_frame_card.js
// c.f. bglibrary_abase.js
gloCanvas.marginRight = 5; // marge entre la droite du dernier cadre et la droite du canvas
gloCanvas.marginBottom = 5 + 6; // marge entre le bas du dernier cadre et le bas du canvas + 6 pour le numéro de la case.
gloCanvas.backgroundColor = "rgb(255,255,250)"; // Couleur de fond du canvas
// Augmente la vitesse d'animation.
gloB.nMoveStep = 10;
// Sont défini dans : confCardsInit
//gloCanvas.strSource = "../images/Carte"; // Source des images des cartes, un nombre entre 100 et 999 suivra
//gloCanvas.strExt = ".png"; // Extension des images des cartes. ".png", ".jpg" et ".gif" est habituel.
// function window_config(idWin, nVisible, nPosX, nPosY, nWidth, nHeight) définit dans : ex2000.js
// idWin est une référence à la fenêtre à modifier.
// nVisible == 1 pour être visible ; == 0 pour être caché ; autre => ne change pas la visibilité
// Positions et dimensions en pixels. -9999 => reste inchangé.
// dimension <= 0 => reste inchangé
window_config('idDisplay', 0, -9999, -9999, 0, 0); // Fenêtre d'affichage
window_config('idCodeBlockly', -1, -9999, -9999, 0, 0); // Fenêtre Blockly, tout reste inchangé
window_config('idCodeJavascript', -1, -9999, -9999, 0, 0); // Fenêtre Javascript, tout, reste inchangé
window_config('idCodePython', 0, -9999, -9999, 0, 0); // Fenêtre Python, carchée, reste inchangé
window_config('idCodeLua', 0, -9999, -9999, 0, 0); // Fenêtre Lua, carchée, reste inchangé
window_config('idVariableSpy', 0, -9999, -9999, 0, 0); // Fenêtre des valeurs de variables cachée, carchée, reste inchangé
window_config('idFrameCards', 1, -9999, -9999, 0, 0); // Fenêtre du jeu de cartes, tout, reste inchangé
} // confParamInit
function confFramesInit() {
//=========================
// Initialisation des cadres
// Définition de quelques cadres
// Les unités de position et de tailles sont arbitraires, car
// elles s'adaptent aux dimensions du canvas.
var nXmax = 2;
var nYmax = 5;
var nn = 0;
for (var nY=0; nY pas de couleur
glaoFrames[nn].width = 0; // Largeur du trait du cadre
glaoFrames[nn].margin = 0; // marge entre le trait du cadre et la carte qu'il contiendra
glnFramesMax = nn;
// Le cadre d'indice 0 sert à cacher des cartes ou
// est le point de départ d'apparition de nouvelles cartes.
// Ce cadre est défini dans la fonction myFramesInit() du fichier ex2000.js
} // confFramesInit
function confCardsInit() {
//========================
// Placement de cartes
var nn = 0;
var nCase = 0; // Numéro de la case dans laquelle la carte est placée
var nCardFace = 101; // Référence à l'image de la carte
var nCardBack = 900;
var strInstr = "";
gloCanvas.strSource = "../images/Carte";
gloCanvas.strExt = ".png";
gloCanvas.nbCards = 11; // Nombre de cartes
for (nn=1; nn<=gloCanvas.nbCards; nn++) { // Pour créer des instances de cartes
nCardFace = 99 + nn;
nCardBack = 900;
nCase = nn;
if (nn == 9) {nCardFace = 900; nCardBack = 500; }
if (nn == 10) {nCardFace = 910; nCardBack = 501; }
if (nn == 11) {nCardFace = 920; } // Carte blanche.
strInstr += " \n";
glaoFrames[nn].nNbCards = 1; // Certains cadres ont des cartes, c.f. "data-frame"
} // for
document.getElementById('idCards').innerHTML = strInstr;
// Écriture de texte par dessus la dernière carte, celle qui est blanche
CardTextWrite(0, 192, 640, "Reset");
// Pour compter le nombre de fois que l'on a indiqué la carte choisie
// On stock ce nombre dans le paramètre associé à la carte de la case 9.
// 9 = la case, 1 = la profondeur = dessus, 'data-param1' est le nom du paramètre et '0' la valeur qu'on lui donne.
CardSetParam(9, 1, 'data-param1', '0');
} // confCardsInit
function confMessageBegin() {
//==========================
// Permet d'afficher un message au départ,
// que l'on peut revoir en cliquant sur le point d'interrogation
// Si on en veut aucun, on peut laisser cette fonction vide,
// ou ne pas l'appeler ci-dessous.
// insert un espace
//
insert un retour à la ligne
// .. pour mettre du texte en gras
// toutes les balises HTML sont acceptée, y compris les styles CSS.
// Consultez le code source du fichier "ex2000.html" pour d'autres "id"
// permettant de faire d'autres modifications depuis ici.
// Change le contenu de la fenêtre "A'de..."
document.getElementById('HTML_MAIN_TITLE2').innerHTML = ""
+ " Prépare une situation pour pgrogrammer un tour de magie avec 2 colonnes de 4 cartes.
"
+ "
" //
est une balise pour sauter une ligne. Toutes la synthaxe HTML est disponible.
+ " C'est à vous d'écrire le programme.
"
+ "
" //
est une balise pour sauter une ligne. Toutes la synthaxe HTML est disponible.
+ " Vous pouvez bien-sûr utiliser cette situation de départ pour le programme que vous désirez.
"
+ " Il n'est pas obligatoire d'utiliser toutes les cases."
;
// Changement du titre du message
document.getElementById('HTML_MESSAGE').innerHTML =
" Un petit tour de magie. "
;
// Change le contenu de la fenêtre "À propos..."
document.getElementById('HTML_ABOUT2').innerHTML =
" Configuration créée par Bernard Gisin
"
+ " le 3 janvier 2020."
+ "
"
;
// Changement du titre de la boîte de dialogue "À propos de..."
document.getElementById('HTML_ABOUT1').innerHTML =
" À propos de cette configuration. "
;
DialogHelp(true);
} // confMessageBegin
//##########################################################################
// Exécution des fonctions d'initialisations.
ConfigInitClear(); // Pour préparer une nouvelle configuration
confToolBoxInit();
confStartBlocksInit();
confParamInit();
confFramesInit();
confCardsInit();
// Pour placer les cartes correctement dans les cadres.
myFrameCardsResize(null);
// Boîte de dialogue initiale, expliquant ce qu'il faut faire.
// Elle revient si on clique sur le point d'interrogation.
confMessageBegin();