Objekte in Arrays ablegen und verändern
Übersicht

![]() |
marcel_bohnBetreff: Objekte in Arrays ablegen und verändern |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo alle zusammen ich habe folgendes Problem
Ich möchte ein Inventar erstellen und dies mit einem Array realisieren. Ich weiß das hier im Forum schon einmal erklärt wurde wie man ein inventar programmieren kann, aber ich möchte es eigentlich gerne mit einer eigenen Lösung versuchen. Ich wollte ein 2D array erstellen in der die Slot X und Slot Y ID enthalten sind. In diesem Array will ich nun ein Objekt ablegen zum Beispiel "t.trank". Soweit so gut, jetzt möchte ich aber auf ein Field dieses Objektes zugreifen kann, ist das irgendwie möglich? hatte an soetwas gedacht, aber das geht leider nicht... BlitzBasic: [AUSKLAPPEN]
Wenn das mit einem Array so nicht möglich ist dann mach ich es halt mit types... |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo marcel_bohn,
du müsstest das Array dann so definieren: BlitzBasic: [AUSKLAPPEN] Dim inventar.trank(3,3) Allerdings kannst du dann nur Tränke darin ablegen, deswegen würde ich an deiner Stelle ein allgemeines Item-Type anlegen. mfg, Tennisball |
||
![]() |
Dice of Darkness |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich würde das mit dem Inventar auch lieber so machen, dass man einen allgemeinen Typ hat für alle Objekte, die darin gespeichert werden können. Es kommt jetzt darauf an, was die Gemeinsamkeit bzw. vielmehr die wesentlichen Unterschiede zwischen den einzelnen Objekten sind. Wahrscheinlich wird man mit ihnen ja immer ähnliche Sachen anstellen können, z.B. Gegenstand betrachten, kombinieren, wegwerfen etc.? Dann würde ich als ein wichtiges neues Field die Art des Gegenstandes einbauen: Code: [AUSKLAPPEN] Type inventar_objekte Field art ;was für ein Objekt ist es? Field anzahl ;wie viele gibt es davon? Field betrachten ;wenn man es betrachten will (nur so als Beispiel) (...) End Type Dim inventar(3,3) For x = 0 To 3 For y = 0 To 3 If inventar(x,y) = Null o.inventar_objekt = New inventar_objekt o\art = trank o\anzahl = 1 inventar(x,y) = o\art EndIf Next Next Ist zwar nicht unbedingt besonders schön, aber zweckmäßig: In diesem Code wird dem Array inventar(x,y) einfach nur die Variable Art des aktuellen Objekts übergeben. Es kommt jetzt völlig darauf an, was du mit den Objekten anstellen willst; meiner Meinung nach ist es ungünstig, eine Objektreferenz in einem Arrayeintrag zu speichern; aber das musst du selbst entscheiden. Ich würde mit dem Wissen, was für ein Objekt an welcher Stelle im Inventar ist, einfach alle weiteren Operationen machen. Z.B. indem ich als Parameter "art" immer einen Integer verwende, und wenn der Spieler eine Beschreibung zu einem Objekt aufrufen will, dann gucke ich, welchen Eintrag hat das Inventar an der Stelle: Irgend einen Wert. Jetzt schaue ich in einer Tabelle oder sonstwas nach, wo ich vorher die Beschreibungen zu jedem Objekt festgelegt habe, und zeige diese auf dem Bildschirm an... Ich hoffe, dass du meine Grundidee verstehst und ich dich nicht zu sehr verwirrt habe^^. MfG Dice |
||
Gratis Spiele, Musik, Tools |
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso ![]() ![]() Ja, ich weiß das da noch andere Felder dazu kommen. Mein Code den ich hier rein geschrieben habe war eine abgespeckte Version! beim Item kommen noch paar felder hinzu z.b. das image |
||
![]() |
marcel_bohn |
![]() Antworten mit Zitat ![]() |
---|---|---|
noch ne frage: die art bzw. der name, soll ich den dann einfach als string einbauen? FIELD name$ | ||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist deine Sache, aber ich würde es eigentlich auch so machen. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group