wie packt man einen Techtree/Forschungsbaum an ?

SucheUndFinde

Grünschnabel
hi @ll !

ich brauche einen Techtree, für ca. 50 Forschungen - jede hat bis zu 2 Bedingungen, die erfüllt sein müssen und zwar sind diese nicht zwangsläufig Forschungen.

nimmt man da ein mehrimensionales array ? [name][schaltetFrei1][schaltetFrei2][cond1][cond2] ? wohl eher nich *g*

nehm ich da eine Klasse, von der bei Spielbeginn eine entsprechende Anzahl von Objekten mit den entsprechenden Namen initialisiert werden ?

oder nehm ich da Bit-Operatoren (was ich absolut nicht kapier) ?


Danke für eure Mühe!
 
also mit einem zweidimensionalen array hast du schon sowas wie eine datenbank, also kein sooo großes monster.
hab in delphi schonmal ne kleine datenbank mit 2d array gemacht, das war recht smart... aber vllt kennt ja einer ne bessere lösung, wirklich auskennen tu ich mich nich ;D

bei dir sollte es aber auch ein 2d-array schon tun
stell dir das wie ne tabelle for:

ID -------- | ---- Bed.1 ----- | ----- Bed.2
Forsch1 | ---- bed.1 ------ | ----- bed.2
Forsch2 | ---- bed.1 ------ | ----- bed.2

usw.

das entspricht also einem TYPE array[50][2]

dann kannst du also über die 2 bed. deine forschungen oder umgekehrt ansprechen und den datentyp musst du evtl. noch festlegen (weiß ja nicht wie du das aufgebaut hast)
in c++ sollte es aber auch möglich sein, 2d-arrays mit verschiedenen typen zu benutzen, zur not mit zeigern ;)

hoffe das hilft dir etwas
 
du meinst also für jede Bedingung eine extra Dimension ? und wo speicher ich ab was welche forschung freischaltet ?
und was wenn es eine nicht festgelegte Anzahl von Bedingungen gibt ?

hab schon überlegt, dass man für "Bedingungen" und "Schaltet frei" einen Ansatz mit Flags wählt..
1. forschung a
2. forschung b
4. forschung c
8. forschung d

dann ein 2 dimensionales array:
forschung a braucht b,c und schaltet d frei -> [a]=condition 6, leads to 8

dieser Ansatz wäre zumindest bis ins unendliche mit Bedingungen und Freischaltungen erweiterbar - vielleicht geht das ja auch ressourcenschonender ?


EDIT: ich merke grade ich habe das Konzept eines Mehrdimensionalen Arrays ein bischen durcheinandergebracht :p

wenn ich die flags als normale Integers implementiere lande ich zum Schluß bei
17592186044416...
vielleicht bin ich da mit bit-weise-operatoren doch gut beraten - nur leider, wie gesagt, schnall ich das nich... naja ich probiers weiter


aber vielleicht gibts ja Alternativen ?
 
Zuletzt bearbeitet:
Zurück