utilité de faire des classes pour un jeu

a marqué ce sujet comme résolu.

Bonjour, je me demandais si c’est vraiment utile de faire un jeu vidéo dont chaque chose est mise en classe et objets, alors que je n’ai qu’un héro à bouger. L’utilité d’une classe pour moi, c’est de pouvoir créer des objets à partir d’elle, mais si je n’ai qu’un seul sprite à bouger je vois pas l’intérêt :/

Par contre pour les munitions ça se comprend s’il y en a plusieurs sur l’écran. Pareil pour les ennemis.

Mais si je vois l’exemple d’un ballon, je vois pas l’intérêt puisque y aurait qu’un seul ballon.

+0 -0

Ce n’est pas une histoire de classe. Si tu crées une structure Ballon (avec son x, son y, sa vitesse…), tu pourras aussi créer plusieurs instances de cette structure.

La notion de classe n’est pas là pour résoudre ce problème d’instanciation multiple. Avec l’objet, on raisonne en terme de service. Au lieu d’avoir des variables et des fonctions qui agissent dessus, on a un objet 'autonome’, qui possède ses variables et qui rend des services (fonctions publiques).

Bein justement s’il n’y a qu’un ballon, quel est l’intérêt de penser aux instances, et qui dit instances dit classe, forcément. Si je fais juste une fonction ballon, le ballon sera autonome quand même, je vois pas :/

+0 -0

Salut,

Dans la plupart des langages orientés-objet, tu es obligé d’écrire une classe si tu veux créer un objet. Certains langages sont orientés-prototype (certains diront que c’est la véritable notion d’orienté-objet) et permettent de créer des objets à partir de rien ou à partir d’autres objets, sans définir de classes.

Comme dit par @Looping, dans d’autres langages, il n’y a pas d’objets ou de classes à proprement parler, mais on peut tout de même créer des types « structure » et agir dessus sans connaître son détail interne (comme sur objet), c’est ce qu’on appelle des « types de données abstraits » (abstract data type, ADT). On peut créer plein de structure de ce type qu’on vient de définir et tout se passe comme si on était dans un langage objet.

Maintenant, je reformule ta question : pourquoi créer un type si on ne crée qu’une seule entité de ce type ? Il y a plein de raisons :

  • souvent tu es obligé de le faire, donc tu n’as pas le choix en fait ;
  • souvent en tu auras pas plusieurs un jour (exemple : jeu coop, boom, tu as deux héros) ;
  • définir un type, c’est définir le comportement (= les services) d’une entité, pas définir l’entité elle-même.

Le dernier point est important (déjà souligné par Looping), c’est l’essence de l’orienté objet et ce qui lui a permis tout le succès qu’on connaît : un objet fournit des services (à d’autres objets bien souvent).

Par exemple, tu imagines une entité "héros". Qu’est-ce que c’est en termes de comportements/services ? On peut imaginer ça par exemple :

  • dire s’il est vivant ou mort,
  • l’afficher sur un écran donné,
  • le faire avancer dans une direction donnée,
  • lui faire subir des dégâts,
  • lui faire avaler une potion,
  • lui faire attaquer une créature,
  • mettre un objet dans son inventaire,
  • etc.

Que tu en es un seul ou mille, ça ne change rien à ce que sait faire une entité "héros" : c’est sa classe.

+0 -0

Ah je comprend mieux, parce que moi je pensais qu’en faisant une fonction pour chacune de ces actions de l’objet c’était suffisant, quand il n’y avait qu’un objet.

Merci à vous deux !!!

PS: Moi je pense que dans ce cas, le mot prototype convient mieux.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte