Cześć wszystkim to moje pierwsze pytani tutaj, więc mam nadzieję że będzie prawidłowo zadane :)
Tworzę, jako pierwszy "projekt", prostą grę RPG w consoli, jestem na etapie tworzenia części odpowiedzialnej za ekwipunek, loot z potwora, i podnoszeni itemków, obecnie w moim programie gracz class player
i potwór class Monster
mają zmienną arrayList<Item> Backpack
, kiedy gra się zaczyna to do Backpack
wpadają jakieś obiekty klasy Item
, i na tym etapie pojawia się problem, po zabiciu potwora chce zebrać z niego loota, wiec do mojego Backpack
chce dodać jakiś item, jak w elegancki sposób sprawdzić czy dany item jest w Backpack
i jeśli jest to nie dodawać go po raz drugi a tylko zwiększyć jego wartość/ilość, obecnie mam działające rozwiązanie, przy podnoszeniu loota w zagnieżdżonej pętli sprawdzam czy dany item jest już w moim backpacku, jeśli jest to zamiast dodawać go drugi raz, zwiększam wartość zmiennej amount
która należy do danego obiektu klasy Item
który jest w moim plecaku, to działa, ale wydaje mi się że jest to mało praktyczne, bo jesli mój ekwipunek zwiększy sie do kilkudziesięciu itemów wtedy funkcja którą zrobiłem będzie musiała iterować za każdym razem po tych obiektach, a jeśli z potwora wypadnie na przykład 10 itemów, wtedy będzie musiała robić to 10x, jaki sposób rozwiązania tego problemu możecie mi zaproponować? Czytałem już na ten temat, ludzie proponują użycie HashMapy, ale ciężko mi pojąć jak mogłoby to wyglądać? musiałbym zrobić HashMape<Item.ItemName, Integer Amount>
czy coś takigo? poniżej wstawiam kawałki kodu
public static ArrayList<Item> Backpack = new ArrayList<>()
}```
classa Skeleton
```public class Skeleton extends Monsters {
public static ArrayList<Item> Backpack;
public Skeleton() {
Backpack = new ArrayList<>();
Backpack.add(new Weapon("Rusty sword", "Just a rusty sword", 3, 2 ));
Backpack.add(new Armor("Leather Armor", "Old leather armor", 6, 3));
}```
classa Item
```public class Item {
public String ItemName;
public String Description;
public int ItemSize;
public int ItemWeight;
public int Amount;
public Item(String ItemName, String Description, int ItemSize, int ItemWeight)
{
this.ItemName = ItemName;
this.Description = Description;
this.ItemSize = ItemSize;
this.ItemWeight = ItemWeight;
}
public Item() {
}
}```