[PROJET] Jeu d'avions (question heritage/polymorph)

juin 2011 modifié dans Vos applications #1
Dans le petit jeu que je developpe, j'essaie de mettre en oeuvre l'héritage et le polymorphisme.
J'ai créé une classe mere "Lesplateformes" et 1 classes fille "Bonus"

Mais le parametre supplémentaire donc qui surchage la méthode en l'occurence le label lbltest n'est pas pris en compte... enfin il ne se modifie pas. je ne vois pas ce qui manque...?

Voici mes appels de la classe mere et de la classe fille:
<br /> Lesplateformes *plate = [[Lesplateformes alloc] init];<br />&nbsp; &nbsp; &nbsp; &nbsp; [plate initwithBonus:platform3 difference:difference];&nbsp; // la 3 avance moins vite<br />&nbsp; &nbsp; &nbsp; &nbsp; [plate collisionplateforme:platform3 <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  avecleperso:ball <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  changelimageduperso:@&quot;rainbyrose.png&quot;];<br />&nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; Bonus *unbonus = [[Bonus alloc] init];<br />&nbsp; &nbsp; &nbsp; &nbsp; [unbonus collisionplateforme:platform5 <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  avecleperso:ball <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; changelimageduperso:@&quot;rainbyvert.png&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  indiqueparlabel:lbltest];<br />


voici mon implémentation de ces 2 classes:

<br />///////////////////////////////////////////////////<br />@implementation Lesplateformes<br /><br />- (void)collisionplateforme:&nbsp; (UIImageView *)uneplateforme<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; avecleperso:&nbsp; (UIImageView *)ball<br />&nbsp; &nbsp; &nbsp; &nbsp; changelimageduperso:&nbsp; (NSString *)imageperso<br />{<br />&nbsp; &nbsp; &nbsp; &nbsp; // Si la plateforme est affichée et intercepte le personnage<br />&nbsp; &nbsp; if (CGRectIntersectsRect(ball.frame, uneplateforme.frame) &amp;&amp; uneplateforme.hidden == 0 )<br />	{<br />&nbsp; &nbsp; &nbsp;  ball.image = [UIImage imageNamed:(imageperso)];<br />&nbsp; &nbsp; }<br />}<br />@end<br />///////////////////////////////////////////////////<br />///////////////////////////////////////////////////<br />@implementation Bonus <br /><br />- (void)collisionplateforme:&nbsp; (UIImageView *)uneplateforme<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; avecleperso:&nbsp; (UIImageView *)ball<br />&nbsp; &nbsp; &nbsp; &nbsp; changelimageduperso:&nbsp; (NSString *)imageperso<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; indiqueparlabel:&nbsp; (UILabel *)lbltest<br />{<br />&nbsp; &nbsp; [self collisionplateforme:uneplateforme avecleperso:ball changelimageduperso:(imageperso)];<br />&nbsp; &nbsp; lbltest.text =@&quot;VERT&quot;;<br />}<br />@end<br />///////////////////////////////////////////////////<br />

Réponses

  • DrakenDraken Membre
    juin 2011 modifié #2
    Euh .. désolé, mais ton code ne ressemble pas à  de l'Objective-C là , mais plutôt à  du C.

    Si tu avais une classe mère PlateForme, tu n'aurais pas besoin de passer à  chaque fonction un pointeur uneplateforme.

    Je ne comprend pas trop ce que tu appelles polymorphisme. Pour moi ce serait créer une classe de base Sprite, puis s'en servir pour créer des classes filles SpritePerso, SpritePlateForme, SpriteAvion.

  • 04:19 modifié #3
    j'ai corrigé mon message. mais je ne comprends pas trop ta réponse, car j'ai bien une classe fille et une classe mere, je l'ai defini dans le header du fichier et quand je fais appel a la fonction de la classe mere dans une classe fille cela fonctionne, parcontre mon label, enfin le parametre que je veux ajouter en plus ne fonctionne pas...  ???
  • 04:19 modifié #4
    mon label fonctionne dorénavant, c'est seulement qu'il n'etait plus dans la condition dans laquelle il devait s'executer...

    Donc est-ce que la ca te parait etre correcte pour de l'objective-c ?
  • DrakenDraken Membre
    04:19 modifié #5
    Oui, cela ressemble beaucoup plus à  de l'Objective-C depuis que tu as édité le premier post. La prochaine fois que tu as un problème avec un objet poste l'ensemble, y compris le .h.

Connectez-vous ou Inscrivez-vous pour répondre.