2017-04-09 4 views
0

J'écris un jeu. Sa structure ressemble à ceci - Diagram. Maintenant, j'ai une carte dans une autre classe appelée Monde (essentiellement un tableau d'organismes), où je veux engendrer n organismes aléatoires.Choisir une sous-classe aléatoire en C++

Je sais que je pourrais faire rand()% subclassesCount et faire si/switch instructions, mais si j'avais 1000 types d'animaux et de plantes? Devrais-je les spécifier tous dans mon code? Y a-t-il un moyen plus simple de le faire?

+0

Peut-être pertinent: http://stackoverflow.com/q/7803345 – Hasturkun

+0

Contrairement à l'intuition d'un débutant, de bonnes conceptions de POO utilisent le sous-classement plutôt avec parcimonie. Vous ne voulez pas avoir 1000 sous-classes pour les animaux et les plantes. Votre objectif devrait être de transformer ces 1000 sous-classes en 1000 objets différents de beaucoup moins de classes. Je pense que le livre Design Patterns classique est toujours une bonne lecture pour comprendre ces bases. –

Répondre

0

Il peut y avoir deux cas:

Cas 1: Pas de contrainte sur l'organisme a donné naissance.

Solution:

Vous pouvez simplement attribuer à chaque organisme un numéro d'identité unique (faire un tableau) et utiliser le numéro d'index pour choisir au hasard organisme. Cas n o 2: Chaque organisme devrait être unique.

Solution: Maintenir un autre réseau de bactéries qui stockera si cet organisme a été engendré ou non. bool status[1000];//remember to initialize it with 0.