ich hatte es in einem towerdefense spiel mit den towern ähnlich...
ich hatte eine klassse TTower und in ihr war ALLES gespeichert
z.B:
Range, Dmg, Splash (Boolean), Aoe, Schussgeschwindigkeit, Dauerschaden, Dauerschadendauer, Dauerschadenschaden....
anschließend bin ich die Liste der Tower durchgegangen, habe geschaut welche mobs anzugreifen sind (range), bin dann mob für mob durchgegangne und habe dann sowas hier gemacht
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| begin derMob.Hp := derMob.HP - Dmg; if derTower.Dauerschaden then begin dermob.dauerschaden := derTower.Dauerschadenschaden; dermob.dauerschadendauer := derTower.dauerschadendauer; end;
if derTower.splash then end; |
ich hatte also eine klasse mit vielen vielen variablen !
ein neuer tower war relativ einfach, ich musste auf seinem create button nur alle parameter angeben.
eine neue fähigkeit war sehr aufwendig ! (z.B. gift oder slow) da man in der procedure immer an der richtigen stelle etwas neues schreiben musste...
die update routinen waren nnicht pro tower sondern vom startpreis und lv abhängig.. somit konnte ich mir da einiges ersparen, wie aber welcher tower die werte erhöht bekommt war ebenso mehr aufwand...
eine eigene klasse hätte den vorteil, dass man immer die selben proceduren hätte (also abstrakt gestaltet) und einen neuen tower einfach eine neue klasse erstellt die dann diese procedure aufruft -> übersichtlichkeit und einfacher.. aber für den ersten Turm mehr arbeit!