Carta Genius: tutoriel

Hello,

Certains épruovant quelques difficultés à démarer avec CartaGenius, je vais tenter de faire un tutoriel. Ca sera au fil de l'eau en plusieurs posts ou en éditant celui-ci. Ne soyez donc pas supris si ca s'arrete déjà !

CG: c'est un logiciel pour générer un pdf avec dedans des cartes à jouer ou des tuiles (ou toutes formes rectangulaires avec des dessins et des textes).
Le logiciel et les infos sont ici.

Comme exemple, je vais m'appuyer sur le proto de Radek: Chromatic.
Les tuiles sont ici.
On va essayer de transformer cela en carte, plus sympa pour ce type de jeu.

1) Définir l'objectif
Je prend un papier blanc ou quadrillé pour ceux qui ne font pas des traits droits et je dessine à quoi ressemblera la carte. Ca fixe les idées et le cadre.
Ici, j'imagine une carte avec dedans une grosse tache de couleur, un bord blanc (pour le découpage) et un gros numéro.
Et puis aussi, un rappel dans le coin en haut à gauche reprenant la tache et le numéro.
Enfin, il me faudra un dos avec une rose des couleurs ou quelque chose comme cela.

2) Initier le projet
Généralement, je prends un fichier existant que je recopie dans un nouveau répertoire et que je nettoie. Je ne garde que la structure.
Par exemple:

pandocreon:carta-genius







/pandocreon:carta-genius

Ca compile déjà meme si on ne voit pas grand chose.
J'ai gardé le tag unit car ca m'énerve d'avoir à répéter mm partout à chaque valeur que je saisi ;-)
3) Dessin de la carte vide
Maintenant, je remplis le tag card avec le contour de la carte puor voir ce que cela donne.



Pour éviter d'avoir à changer toutes les tailles chaque fois que je change la taille de la carte.
Je mets aussi un rayon de 5mm pour avoir des bords ronds comme les cartes du commerce !
C'est un cadre et un exemple, cela sautera peut etre en final car les traits de découpe suffisent.

Suite au prochain numéro...

EDIT : Question résolue

Hello, la suite donc ;-)

4) Dessin de la carte
C'est toujours la mise ne place, cad les essais pour voir ce que cela donne. Après, on passera à la généralisation (les templates), donc pas d'inquiétude s'il n'y a qu'une carte.
On va ajouter le dessin de couleur, cela donne:





Maintenant, il y a quelque chose qui s'affiche !
Pour le texte, il faut définir une police de caractère. Pour éviter de le préciser à chaque utilisation, je préfère en définir une par défaut. Pour cela j'aoute fonts au début du fichier comme cela:



Puis le texte à afficher:
1

Et tant qu'on y est, on va ajouter le rappel avec la petite réplique en haut à gauche:
width($CARD)/10
height($CARD)/10
2mm
(height($CARD)-2)-$hscard

1

Comme j'utilise plusieurs fois les meme calculs, j'introduis des variables qui seront réutilisées partout.
5) Généralisation: mise ne place
La 1ère étape est simple, je recopie la carte dans une partie de définition des templates.
[...]




Et pour voir le résultat, j'utilise le template:

Je peux faire plusieurs cartes rouges ainsi.
6) Généralisation de la couleur
La ca se complique (à peine). La couleur #ff0000 utilisée est variable selon la série de carte. Je vais donc la transformer en variable $couleur dans un autre template.

Maintenant, j'utilise la variable
fill-color="#ff0000"

devient partout dans le template (que je renome d'ailleurs "carte":
fill-color="$couleur"

Pour voir le résultat:

6) Généralisation du chiffre
Meme chose, j'introduis une variable mais comme le "A" que je veux remplacer est dans la partie texte du tag "text", il faut explicitement appeler l'évaluateur pour convertir le $ en valeur:
$texte

Et j'initialise la variable dans un template.
Et la ca se complique ! Pour éviter d'avoir à redéfinir autant de template que de chiffre + le joker, j'utilise une grosse astuce: j'incrémente la variable une fois utilisée, elle passera donc à 2 puis à 3 à chaque appel !
string(scalar($texte)+1)

scalar convertit le texte en chiffre. Je peux faire une opération dessus. Et pour éviter les 0 après la virgule, je place la précision à 0 (obligatoire).
Et pour l'initialisation, je le fais dans le template "rouge":

Le J est entre double-cote car c'est un texte. Et par chance, comme scalar("J") vaut 0 ca me donne 1 la valeur que je cherche !
(sinon un aurait été nécessaire)
Pour l'utilisation, il me reste à appeler autant de fois le template que j'ai besoin de carte:




...

Un premier appel pour l'init "rouge" et un appel pour le dessin "carte".

Reste à généraliser avec bleu et autre.

On verra le dos demain.

Où c'est qu'elle est la suite pour les dos ?
J'avoue que je peine à la réaliser ... Par contre, le reste est devenu très clair grâce à toi !