Un peu de philosophie ... objet !

I) Intro

Le langage d'Unreal Tournament est un langage orienté objet. S'il est très similaire a Java, il implémente de nouveaux concepts comme les etats (state) ou la persistance. Vous trouverez plus d'information en consultant la reference du langage.

Contrairement a certains jeux (comme Quake1 par exemple), vous ne devez pas modifier directement le code. L'idée est de créer de nouvelles classes par héritage puis de surcharger certaines fonctionnalites de l'ancienne classe afin de modifier son comportement.

II) Quelques explications

Afin d'illustrer l'intéret du mécanisme d'héritage, créons les deux classes suivantes:

// ============================================================
// Definition de la class A a partir de la classe Object
// La classe A possede donc toutes les proprietes de Object
// auquelles s'ajoutent celles definies ensuite
// ============================================================
class A expands Object;

// Ajout d'un variable n a l'interieur de A var int n; // initialise n a 0 function void initN() { n=0; } function void setN(int entier) { n=entier; } function int getN() { return (n); }
// ============================================================ // Definition de la class B a partir de la classe A // La classe B possede donc toutes les proprietes de Object // et de A auquelles s'ajoutent celles definies ensuite // ============================================================ class B expands A;
// ajout d'une fonction d'increment de n dans B void nPlusUn() { setN(getN()+1); }
// surcharge de initN // initN etait DEJA defini dans A donc disponible dans B mais // le redefinir dans B masque la definition faite dans A function void initN(int entier) { n=10; // remarque: il est possible de faire appel a initN de A par super.initN() // super fait reference a la classe dont celle-ci herite (dans ce cas A) // tout autre appel a initN fera reference a celui defini ici }


Tout code utilisant une classe A pourra utiliser (sans meme en etre informe) une classe B (car B herite de A).
Par contre la methode initN etant redefinie, l'execution sera modifiée. C'est ce mécanisme qui est utilisé pour modifier les armes. Lorsque le joueur fait feu, Unreal Tournament appelle la méthode Fire de la classe TournamentWeapon. Toute classe héritant de TournamentWeapon peut etre utilisée comme une arme. Si cette nouvelle classe redéfinie Fire, alors la méthode appelée sera celle de la nouvelle classe. Donc le comportement du tir peut-etre modifié.

Bon, ca peut paraitre un peu obscur, la meilleure méthode est de consulter les autres tutorials, de faire les modifications indiquées et de bidouiller le code fournit. C'est en forgeant ....