ÉricBischoffJoséPiresjncp@netcabo.ptTradução2002-04-100.03.02KDEHomem Batatareferência técnicaReferência técnicaO &ktuberling; oferece uma forma gentil e compensadora de introduzir à personalização e programação do &kde;. A aplicação pode ser extendida. Por exemplo, sem qualquer codificação, poderão ser adicionados novos recreios, alterando os ficheiros gráficos. Ao adicionar os ficheiros de som apropriados, os tradutores poderão alterar os sons para a sua língua-mãe! Se extender ou adicionar ao jogo, por favor pense na hipótese de enviar as suas adições ao programador Éric Bischoff de modo a inclui-las nas próximas versões. Para artistasO tamanho e a forma do recreio, assim como o número de objectos, poderão ser alterados. Poderão ser adicionados novos recreios. Só é preciso criar dois ficheiros de imagens para cada recreio: um tabuleiro de jogo e uma máscara. É permitido um máximo de 8 recreios, dos quais estão usados 3 neste momento. São usadas seis imagens no &ktuberling;: potato-game.png, potato-mask.png, penguin-game.png, penguin-mask.png, aquarium-game.png e aquarium-mask.png. A localização normal destes ficheiros é a pasta $KDEDIR/share/apps/ktuberling/pics/. O primeiro tipo de imagens, os *-game.png contém o tabuleiro e os objectos que o utilizador selecciona. Este é o gráfico que o utilizador vê enquanto joga. O segundo tipo de imagens, os *-mask.png, contêm apenas as máscaras dos objectos. Estas máscaras são usadas para delimitar os contornos dos objectos e, em alguns casos, dão ao objecto alguma transferência (por exemplo, os espectáculo). É obrigatório pôr os objectos na mesma posição, tanto no ficheiro do tabuleiro como no da máscara. Na mesma pasta, um ficheiro chamado layout.xml. ($KDEDIR/share/apps/ktuberling/pics/layout.xml) indica quais as imagens a usar e associa-os aos itens do menu. Contém também os parâmetros de posição do recreio e dos objectos no tabuleiro e nas máscaras. Ele atribui também os sons aos objectos e coloca os objectos em grupos. Finalmente, declara as línguas como sendo conjuntos de sons traduzidos. Este ficheiro segue a sintaxe-padrão do &XML; (ver os detalhes em baixo). Ainda na mesma pasta, existe um ficheiro chamado layout.i18n ($KDEDIR/share/apps/ktuberling/pics/layout.i18n) que recapitula os textos no layout.xml que podem ser traduzidos: As entradas de menu que lhe permitem escolher o recreio e a línguaOs nomes das categorias de objectosUma pasta mais acima, existe um ficheiro chamado ktuberlingui.rc ($KDEDIR/share/apps/ktuberling/ktuberlingui.rc), o qual é um segundo ficheiro &XML; que descreve os menus do &ktuberling;. Ele deverá conter uma marca <action> por cada recreio e língua. O nome simbólico da acção neste ficheiro deverá ser idêntico ao nome simbólico da acção no layout.xml. TraduçãoPara além do mecanismo normal dos ficheiros .po para traduzir os textos do programa e as mensagens, os sons também poderão ser localizados. Se os vários tradutores puderem gravar a sua voz para um ficheiro .wav, eles poderão gravar esse ficheiro para a subpasta específica da língua da pasta de sons. O nome do som é então atribuído a um ficheiro no ficheiro layout.xml. Por exemplo, se a língua de destino é o Português, os tradutores poderão gravar a sua voz para os ficheiros .wav localizados na pasta $KDEDIR/share/apps/ktuberling/sounds/pt. Aí, eles poderão então atribuir o som chamado hat ao nome do ficheiro pt/chapeu.wav. Numa versão futura, o &ktuberling; irá usar o formato de ficheiros OGG Vorbis rc3 para os sons. Nessa altura, será possível converter os ficheiros WAV para o OGG Vorbis rc3 através da seguinte linha de comandos: $oggenc -q 10 -o som.oggsom.wavA informação sobre como lidar com os mecanismos de tradução no &kde; está disponível no HOWTO de Traduções do &kde;. Para programadoresNão é difícil aos programadores extenderem o &ktuberling;.Classes C++TopLevelJanela de topo e gestão básica do programaPlayGroundDescrição de um dos níveis de jogoToDrawUma descrição de um dos objectos gráficos a serem desenhadosSoundFactoryDescrição de uma das línguas e dos seus sonsActionUma das acções do utilizador na minha de desfazer/refazer.Estrutura dos ficheiros .tuberlingUm ficheiro .tuberling que contém todos os dados necessários para desenhar um boneco. Este poderá ser editado com um editor de texto normal.A primeira linha contém o número do recreio.Em todas as outras linhas, existe um objecto gráfico por linha, na ordem que é usada para os desenhar. Cada linha contém 5 números: o identificador do objecto e o rectângulo onde deverá ser desenhado (esquerda, cima, direita, baixo). Os números são separados por espaços.Estrutura do ficheiro de disposição (layout.xml)A marca do nível de topo é única e chama-se <ktuberling>. Ela contém várias marcas <playground>, uma por cada recreio, bem como várias marcas <language>, uma para cada língua. A marca <playground> tem dois atributos: o gameboard e o masks. Estes atributos contêm os nomes dos ficheiros que contêm as imagens. A marca <playground> também contém uma marca <menuitem>, uma <editablearea> e várias marcas <category>, tendo ainda várias marcas <object>. A marca <menuitem> descreve o identificador da acção do item do menu que permite seleccionar a posição da área onde poderá largar os objectos, assim como a legenda deste item do menu. Este identificador de acção deverá ser idêntico ao do ktuberlingui.rc. A marca <editablearea> descreve a posição da área onde você poderá largar os objectos, bem como o nome do som associado a ele. A marca <category> descreve a posição e o texto que descreve um grupo de objectos. Por exemplo, ela pode descrever a posição e o texto do grupo diversos. A marca <object> descreve a posição (no tabuleiro e nas máscaras) de um objecto, assim como o nome do som associado a ele. A marca <language> tem um atributo: o code. Este atributo dá o código da localização para essa língua. A marca <language> também contém uma marca <menuitem> tag e várias <sound>. As marcas de nível inferior não são aqui explicadas, dado que o seu significado é bastante intuitivo. Se você modificar o ficheiro layout.xml, não se esqueça de modificar o layout.i18n e o ktuberlingui.rc na mesma medida.