EricBischoff
&Niels.Reedijk;
2002-04-100.03.02KDEKTuberlingtechnische referentieTechnische referentie&ktuberling; biedt een elegante en belonende inleiding in het programmeren voor en aanpassen van &kde;. Het programma kan worden uitgebreid. Bijvoorbeeld, zonder dat u hoeft te programmaren kunt u nieuwe speelvelden toevoegen door de grafische bestanden te wijzigen. Door de juiste geluidsbestanden kunnen vertalers de geluiden aanpassen aan hun eigen taal! Als u het spel uitbreidt, overweeg dan om uw toevoegingen te sturen aan de ontwikkelaar Eric Bischoff zodat ze in toekomstige versies kunnen worden bijgesloten. Voor artiestenDe grootte en vorm van het speelveld en het aantal objecten kan worden gewijzigd. Nieuwe speelvelden kunnen worden toegevoegd. U hoeft slechts twee afbeeldingsbestanden te maken voor elk speelveld: een spelbord en een masker. Er zijn maximaal 8 speelvelden mogelijk, waarvan momenteel slechts 3 worden gebruikt. Er worden zes afbeeldingen gebruikt in &ktuberling;: potato-game.png, potato-mask.png, penguin-game.png, penguin-mask.png, aquarium-game.png en aquarium-mask.png. De standaardlocatie voor deze bestanden is de map $KDEDIR/share/apps/ktuberling/pics/. Het eerste type afbeeldingen, *-game.png bevatten het speelveld en de objecten die de gebruiker selecteert. Het is de illustratie die de gebruiker ziet tijdens het spelen van het spel. Het tweede type afbeeldingen, *-mask.png bevat alleen de masker van de objecten. De maskers worden gebruikt om de randen van de objecten te bepalen, en, in sommige gevallen, het object enige transparantie te geven (bijv. de brillenglazen). Het is vereist dat de objecten op dezelfde positie in het spelbord-bestand en maskerbestand worden geplaatst. In dezelfde map is een bestand genaamd layout.xml te vinden ($KDEDIR/share/apps/ktuberling/pics/layout.xml). Dit bestand vertelt welke afbeeldingen gebruikt dienen te worden en koppelt ze aan menuopties. Het bevat ook de positieparameters van het speelveld en de objecten in het spelbord en in de maskers. Het koppelt de geluiden aan objecten en plaatst de objecten in groepen. Tot slot declareert het talen als sets vertaalde geluiden. Het volgt de standaard XML-syntaxis (zie hieronder voor meer details). In dezelfde map bevindt zich ook een bestand genaamd layout.i18n ($KDEDIR/share/apps/ktuberling/pics/layout.i18n). Deze bevat de tekenreeksen uit layout.xml die kunnen worden vertaald: De menuopties die gebruikt worden om het speelveld en de taal te selecterenDe namen van de objectcategorieënEen map hoger bevindt zich een bestand genaamd ktuberlingui.rc ($KDEDIR/share/apps/ktuberling/ktuberlingui.rc). Dit is een XML-bestand dat de menu's van &ktuberling; beschrijft. Dit bestand dient één <action>-tag per speelveld en taal te bevatten. De symbolische naam van de actie in dit bestand dient identiek te zijn aan de symbolische naam van de actie in layout.xml. VertalingNaast de gebruikelijke mechanisme met .po-bestanden voor het vertalen van programmateksten en documentatie kunnen ook de geluiden worden overgezet naar andere talen. Als vertalers hun stem kunnen opnemen als .ogg of .wav-bestand dan kunnen ze deze opslaan in de taalspecifieke submap van de geluidenmap. (.wav-bestanden dient u eerst om te zetten naar .ogg, lees verderop in de documentatie hoe u dat doet.) De naam van het geluid dient dan te worden toegewezen aan een bestand in het bestand layout.xml. Bijvoorbeeld, als de doeltaal Italiaans is, dan kunnen de vertalers hun stem opnemen in .ogg-bestanden in de map $KDEDIR/share/apps/ktuberling/sounds/it. Vervolgens kunnen ze het geluid genaamd hat toewijzen aan de bestandsnaam it/cappello.ogg. De huidige versies van &ktuberling; maken gebruik van het bestandsformaat OGG Vorbis rc3 voor de geluiden. U kunt uw WAV-bestanden omzetten naar OGG Vorbis rc3 door middel van het volgende commando: $oggenc_rc3 -o geluid.ogggeluid.wavInformatie over hoe u gebruik kunt maken met de vertaalmechanismen van &kde; is beschikbaar in The KDE Translation HOWTO. Kijk ook op de vertalerswebsite van het Nederlandse KDE-team. Voor programmeurs&ktuberling; is voor programmeurs niet moeilijk om uit te breiden.C++-klassenTopLevelTopLevel window en basic program managementPlayGroundBeschrijving van een van de spelniveausToDrawBeschrijving van een van de grafische objecten om te tekenenSoundFactoryBeschrijving van een van de talen en diens geluidenActionEen van de gebruikers' manipulatie in de undo/redo stackBestandsstructuur van .tuberlingEen .tuberling-bestand bevat alle nodige gegevens om een tuberling te hertekenen. Het kan worden bewerkt met een doorsnee teksteditor.De eerste regel bevat het nummer van het speelveld.Op alle andere regels is er een grafisch object per regel, in de volgorde die is gebruikt om ze te tekenen. Elke regel bevat 5 getallen: de identifier van het object en de rechthoek waar het getekend dient te worden (links, boven, rechts, onder). De getallen worden van elkaar gescheiden met witruimtes.De structuur van het layout-bestand (layout.xml)De tag top-level is uniek en heet <ktuberling>. Het bevat enkele <playground>-tags, een per speelveld, en enkele <language>-tags, een per taal. De tag <playground> heeft twee attributen: gameboard en masks. Deze attributen geven de naam van de bestanden die de afbeeldingen bevatten. De tag <playground> bevat ook een <menuitem>-tag, een <editablearea>-tag, meerdere <category>-tags en enkele <object>-tags. De tag <menuitem> beschrijft de action identifier van de menuoptie voor het selecteren van de positie ban het gebied waar u objecten kan plaatsen, en het label voor deze menuoptie. Deze action identifier dient identiek te zijn aan degene in ktuberlingui.rc. De tag <editablearea> beschrijft de positie van het gebied waar u objecten kunt plaatsen, en de naam van het geluid dat er mee is geassocieerd. De tag <category> beschrijft de positie en het label van een tekst die een groep objecten beschrijft. Bijvoorbeeld, het kan de positie en de tekst van de groep met hebbedingetjes beschrijven. De tag <object> beschrijft de positie (in het spelbord en in de maskers) van een object en de naam van het bijhorende geluid. De tag <language> bevat één attribuut: code. Dit attribuut geeft de code van de taal. De tag <language> bevat een <menuitem>-tag en enkele <sound>-tags. De tags op een lager niveau worden hier niet uitgelegd, aangezien hun betekenis voor zich spreekt. Als u layout.xml bewerkt, vergeet dan niet om ook layout.i18n en ktuberlingui.rc te wijzigen.