Eric
Bischoff
&traducteurBenoitCosandier;
2002-04-10
0.03.02
KDE
KTuberling
référence technique

# Référence technique

&ktuberling; offre une agréable et gratifiante introduction à la personnalisation et à la programmation de &kde; Cette application peut être étendue. Par exemple vous pouvez ajouter un nouveau terrain de jeu, sans changer le code source, en changeant les fichiers graphiques. En ajoutant les fichiers de son adéquats, les traducteurs peuvent adapter les sons à leur langue d'origine.

Si vous étendez ou ajoutez des choses au jeu, pensez à envoyer vos modifications au développeur Éric Bischoff (en anglais) pour qu'elles soient inclues lors de la future version.

## Pour les graphistes

Les dimensions et la forme du terrain de jeu ainsi que le nombre d'objets peuvent être changés. De nouveaux terrains de jeu peuvent être ajoutés. Deux fichiers d'image par terrain de jeu seulement doivent être créés : un tableau de jeu et un masque. Il y a un maximum autorisé de 8 terrains de jeu, dont seulement 3 sont utilisés pour le moment.

Six images sont utilisées par &ktuberling; : `potato-game.png`, `potato-mask.png`, `penguin-game.png`,.`penguin-mask.png`, `aquarium-game.png` et `aquarium-mask.png`. L'emplacement standard de ces fichiers est le dossier `$KDEDIR/share/apps/ktuberling/pics/`.

Le premier type d'images, `*-game.png` contient le terrain de jeu et les objets que l'utilisateur choisit. C'est le graphisme que voit l'utilisateur quand il joue au jeu.

Le second type d'images, `*-mask.png`, contient seulement les masques des objets. Les masques sont utilisés pour délimiter les bords des objets et, dans certains cas, donner à l'objet une certaine transparence (par exemple, les lunettes). Il est obligatoire de placer les objets au même emplacement dans le terrain de jeu et dans le fichier de masques.

Dans le même dossier, un fichier nommé `layout.xml` (`$KDEDIR/share/apps/ktuberling/pics/layout.xml`) indique quelles images utiliser et les relie aux éléments de menu. Il contient également les paramètres de position du terrain de jeu ainsi que des objets et des masques. Il affecte les sons aux objets et classe ces objets dans des groupes. Enfin, il déclare des langues sous forme d'ensembles de sons traduits. Ce fichier suit la syntaxe standard XML (pour plus de détails, voir plus bas).

Toujours dans ce dossier, un fichier nommé `layout.i18n` (`$KDEDIR/share/apps/ktuberling/pics/layout.xml`) récapitule les chaînes de `layout.xml` qui peuvent être traduites.

- Les éléments de menu qui permettent de choisir les terrains de jeu et la langue.

- Les noms des catégories d'objets

Dans le dossier de niveau supérieur, un fichier nommé `ktuberlingui.rc` (`$KDEDIR/share/apps/ktuberling/ktuberlingui.rc`) est un second fichier XML décrivant les menus de &ktuberling;. Il devrait contenir une balise <action> par terrain de jeu et par langue. Le nom symbolique de cette action devrait être identique au nom symbolique de l'action dans `layout.xml`.

## Traduction

À coté de l'habituel mécanisme basé sur les fichiers `.po` pour traduire les chaînes du programme, les sons peuvent être localisés également.

Si les différents traducteurs ont l'opportunité d'enregistrer leur voix dans un fichier `.wav`, ils peuvent placer ce fichier dans le sous-dossier propre au langage dans le dossier des sons. Le nom des fichiers son est alors traduit dans le fichier `layout.xml`. Par exemple, si le langage de destination est l'italien, les traducteurs peuvent enregistrer leur voix dans un fichier `.wav` situé dans `$KDEDIR/share/apps/ktuberling/sounds/it`. Ils peuvent ensuite traduire le son nommé hat en des noms de fichiers comme `it/cappello.wav`.

Dans une prochaine version, &ktuberling; utilisera le format de fichiers OGG Vorbis rc3 pour les sons. À ce moment, il sera possible de convertir les fichiers VAV en OGG Vorbis rc3 grâce à la commande suivante :

    $ oggenc_rc3 -o son.ogg son.wav

Des informations sur la façon dont fonctionnent les mécanismes de traduction dans &kde; sont disponible à l'adresse The KDE Translation HOWTO ou en français dans Le HOWTO de traduction de KDE.

## Pour les programmeurs

&ktuberling; n'est pas réellement difficile à améliorer pour les programmeurs.

### Classes C++

`TopLevel`

  Gestion du programme principal et de la fenêtre principale

`PlayGround`

  Description d'un des niveaux du jeu

`ToDraw`

  Description d'un des objets graphiques à dessiner

`SoundFactory`

  Description d'une des langues et de ses sons

`Action`

  Une des manipulations de l'utilisateur, rangée dans la pile annuler/refaire.

### Structure du fichier `.tuberling`

Un fichier `.tuberling` contient toutes les données nécessaire pour redessiner une patate. il peut être édité avec un éditeur de texte ordinaire.

La première ligne contient le numéro du terrain de jeu.

Pour toutes les autres lignes, il y a un objet graphique par ligne, dans l'ordre dans lequel ils seront affichés. Chaque ligne contient 5 nombres : l'identifiant de l'objet, et le rectangle où il devra être dessiné (gauche, haut, droite, bas). Les nombres sont séparés par des espaces.

## Structure du fichier de disposition (`layout.xml`)

La balise de plus haut niveau est unique et est intitulée <ktuberling>. Elle contient plusieurs balises <playground>, une par terrain de jeu, ainsi que plusieurs balises <language>, une par langue.

La balise <playground> a deux attributs : gameboard et masks. Ces attributs indiquent le nom des fichiers contenant les images. La balise <playground> contient également une balise <menuitem>, une balise <editablearea>, plusieurs balises <category> et plusieurs balises <object>.

La balise <menuitem> décrit l'identificateur de l'action associée à l'élément de menu permettant de choisir la position de la zone où vous pouvez faire glisser des objets, ainsi que l'intitulé de cet élément de menu. Cet identificateur d'action doit être identique à celui dans `ktuberlingui.rc`.

La balise <editablearea> décrit la position de la zone où vous pouvez faire glisser les objets, ainsi que le nom du son qui lui est associé.

La balise <category> décrit la position et l'intitulé d'un groupe d'objets. Par exemple, il permet de décrire la position et l'intitulé du groupe d'accessoires.

La balise <object> décrit la position (dans le plateau de jeu et dans les masques) d'un objet, ainsi que le nom du son qui lui est associé.

La balise <language> a un attribut : code. Cet attribut indique le code des réglages locaux pour cette langue. La balise <language> contient également une balise <menuitem> et plusieurs balises <sound>.

Les balises de plus bas niveau ne sont pas expliquées ici, car leur signification est relativement évidente. Si vous modifiez `layout.xml`, n'oubliez pas de modifier `layout.i18n` ainsi que `ktuberlingui.rc` en conséquence.