2017-04-09 3 views
0

Ich schreibe ein Spiel. Seine Struktur sieht so aus - Diagram.Auswahl zufällige Unterklasse in C++

Jetzt habe ich eine Karte in einer anderen Klasse namens World (im Grunde eine Reihe von Organismen), wo ich n zufällige Organismen spawn will.

Ich weiß, dass ich rand()% subclassesCount und tun könnte, wenn/switch Anweisungen, aber was ist, wenn ich 1000 Arten von Tieren und Pflanzen hatte? Müsste ich sie alle in meinem Code angeben? Gibt es einen einfacheren Weg, dies zu tun?

+0

Möglicherweise relevant: http://StackOverflow.com/q/7803345 – Hasturkun

+0

Im Gegensatz zu einer Anfänger Intuition, verwenden gute OOP Designs Subclassing eher sparsam. Sie möchten nicht 1000 Unterklassen für Tiere und Pflanzen haben. Ihr Ziel sollte sein, diese 1000 Unterklassen in 1000 verschiedene Objekte mit wesentlich weniger Klassen umzuwandeln. Ich denke, das klassische Design Patterns-Buch ist immer noch eine gute Lektüre, um diese Grundlagen zu verstehen. –

Antwort

0

Es können zwei Fälle auftreten:

Fall 1: Keine Einschränkung auf den Organismus hervorgebracht.

Lösung:

Sie können einfach jeden Organismus eine eindeutige Identitätsnummer zuweisen (ein Array machen) und Indexnummer verwenden Organismus zufällig zu wählen.

Fall 2: Jeder Organismus sollte einzigartig sein.

Lösung: Behalten Sie ein anderes bool Array bei, das speichert, ob dieser Organismus erzeugt worden ist oder nicht. bool status[1000];//remember to initialize it with 0.