Android-Spiel RPG-Inventar-System

8

Ich verwende eine ArrayList als mein "Inventar". Ich habe Probleme, einen Weg zu finden, um ein Vielfaches des gleichen Gegenstandes hinzuzufügen, ohne einen Platz im "Inventar" einzunehmen. Zum Beispiel: Ich füge einen Trank zu meinem Inventar hinzu. Nun füge ich einen anderen Trank hinzu, aber dieses Mal, anstatt einen weiteren Trank zu dem Inventar hinzuzufügen, sollte es stattdessen zeigen, dass ich: Zaubertränke x 2 habe, während ich nur einen Punkt in der ArrayListe aufnehme. Ich habe ein paar Lösungen gefunden, aber ich habe das Gefühl, dass es schlechte Praktiken sind. Eine Lösung, die ich ausprobierte, bestand darin, dem Element selbst eine AMOUNT-Variable hinzuzufügen und diese zu erhöhen. Helfen Sie mir, eine viel bessere Lösung zu finden?

BEARBEITEN: Ok, bitte ignoriere das oben. Ich habe dafür ziemlich gute Antworten bekommen, aber was mich überrascht hat war, dass es fast keine Tutorials zu Rollenspiel-Inventarsystemen gab. Ich habe viele Google-Suche gemacht und kann keine guten Beispiele / Tutorials / Quellcode finden. Wenn jemand mich auf einige gute Beispiele / Tutorials / Quellcode verweisen könnte (egal welche Sprache, aber vorzugsweise Java, oder sogar C / C ++), würde ich mich freuen, danke. Oh, und irgendwelche Bücher zum Thema.

    
semajhan 30.07.2011, 06:43
quelle

5 Antworten

22

Der übliche Weg, dies zu lösen (mit der Standard-API), besteht darin, ein Map<Item, Integer> zu verwenden, das ein Element auf die Anzahl solcher Elemente im Inventar abbildet.

Um die "Menge" für ein bestimmtes Objekt zu erhalten, rufen Sie einfach get :

auf %Vor%

Um etwas zum Inventar hinzuzufügen, das Sie tun

%Vor%

Um etwas aus dem Inventar zu entfernen, könntest du es zum Beispiel tun

%Vor%

Dies kann sehr unordentlich werden, wenn Sie es an vielen Stellen tun. Daher würde ich Ihnen empfehlen, diese Methoden in einer Klasse Inventory zu kapseln.

Viel Glück!

    
aioobe 30.07.2011, 06:46
quelle
6

Ähnlich wie aioobes Lösung können Sie TObjectIntHashMap verwenden.

%Vor%

Sie können eine Mehrfachklasse erstellen.

%Vor%

Oder Sie können eine Sammlung verwenden, die ein Vielfaches nach Anzahl aufzeichnet.

z.B. eine Tasche

%Vor%     
Peter Lawrey 30.07.2011 06:48
quelle
5

Sie sollten wahrscheinlich eine Klasse namens InventorySlot mit einem Feld für Menge und Inhalt erstellen. Dies gibt dir auch die Flexibilität, andere Eigenschaften hinzuzufügen, wie z. B. was der Inventar-Slot enthalten kann, falls du dich dafür entscheidest, einen 'Tränke'-Sack oder ähnliches zu erstellen.

Alternativ wird eine StackCount und eine boolesche IsStackable oder vielleicht MaxStack -Eigenschaft in einigen MMOs verwendet, es ist auch eine vollkommen gültige Methode.

    
Flynn1179 30.07.2011 06:54
quelle
2

oder eine InventoryField-Klasse mit einem Element und einer Ganzzahl für den Betrag.

%Vor%     
Dominic Bartl 14.08.2011 23:50
quelle
-2

Wie wäre es mit den folgenden

%Vor%

Dann haben Sie eine Liste, die das Inventar darstellt

%Vor%     
Triztian 30.07.2011 06:57
quelle

Tags und Links