Witam,
Mam za zadanie wykonać w Javie psudo grę RPG, gdzie stworze klasę bohatera, który będzie posiadał tak jakby swój ekwipunek na broń, zbroję, mikstury w postaci różnych rodzai kolekcji elementów.
Mam problem w postaci błędu NullPointerException występującego w metodzie sprawdzającej czy mogę jeszcze coś dorzucić do ekwipunku.
Poniżej zamieszczam kod tej właśnie klasy:
package com.postacie;
import java.util.*;
import com.zbroja.*;
import com.bron.*;
import com.postacie.MojWyjatek;
import com.mikstury.*;
public class Postac {
// Dane Podstawowe
protected static String NazwaBohatera;
protected static String Pseudonim;
// Parametry
protected int Siła;
protected int Zrecznosc;
protected int Zywotnosc;
protected int Energia;
protected static int PktDoswiadczenia;
protected static int PktNastLvl;
protected static int Lvl;
protected static int Złoto;
protected static int MaxObciazenie;
// Założone na sobie
protected Zbroja Hełm;
protected Zbroja Napiersnik;
protected Zbroja Rekawice;
protected Zbroja Buty;
protected Zbroja Pas;
protected Bron PrawaReka;
protected Bron LewaReka;
protected Zbroja LewaReka2;
protected Mikstury PodrecznaMikst;
// Ekwipunek
private HashSet<Zbroja> EkwipunekZbroje;
private ArrayList<Mikstury> EkwipunekMikstury;
private LinkedList<Bron> EkwipunekBron;
public Postac(String NazwaBohatera, String Pseudonim)
{
this.NazwaBohatera = NazwaBohatera;
this.Pseudonim = Pseudonim;
this.PktDoswiadczenia = 0;
this.PktNastLvl = 1000;
this.Lvl = 1;
this.Złoto = 0;
this.MaxObciazenie = 100;
}
// METODY
public int SprawdzPojemnosc()
{
// Wartosci tymczasowe
Zbroja ZbrojaTemp;
Bron BronTemp;
Mikstury MiksturyTemp;
// Sumatory
int SumaZbroja = 0;
int SumaBron = 0;
int SumaMikstury = 0;
if(!EkwipunekZbroje.isEmpty()) <---------- TUTAJ BŁĄD
{
Iterator<Zbroja> iter = EkwipunekZbroje.iterator();
while(iter.hasNext())
{
ZbrojaTemp = (Zbroja) iter.next();
SumaZbroja += ZbrojaTemp.Ciezar;
}
}
if(!EkwipunekBron.isEmpty())
{
Iterator<Bron> iter = EkwipunekBron.iterator();
while(iter.hasNext())
{
BronTemp = (Bron) iter.next();
SumaZbroja += BronTemp.Ciezar;
}
}
if(!EkwipunekMikstury.isEmpty())
{
Iterator<Mikstury> iter = EkwipunekMikstury.iterator();
while(iter.hasNext())
{
MiksturyTemp = (Mikstury) iter.next();
SumaZbroja += MiksturyTemp.Ciezar;
}
}
int SumaCalkowita = SumaZbroja + SumaBron + SumaMikstury;
return SumaCalkowita;
}
public void DodajDoEkwipunku(Zbroja Zbroja)
{
try{
if(SprawdzPojemnosc() + Zbroja.Ciezar <= 100) <---------- TUTAJ BŁĄD
{
EkwipunekZbroje.add(Zbroja);
}
else{
throw new MojWyjatek("Nie można dodać Zbroji do ekwipunku. Przkroczony ciezar maksymalny");
}
}
catch (MojWyjatek exc)
{
exc.printStackTrace();
System.out.println(exc);
}
finally {
System.out.println("Zakończono dodawanie do ekwipunku");
System.out.println();
}
}
public void DodajDoEkwipunku(Bron Bron)
{
try{
if(SprawdzPojemnosc() + Bron.Ciezar <= 100)
{
EkwipunekBron.add(Bron);
}
else{
throw new MojWyjatek("Nie można dodać Broni do ekwipunku. Przkroczony ciezar maksymalny");
}
}
catch (MojWyjatek exc)
{
exc.printStackTrace();
System.out.println(exc);
}
finally {
System.out.println("Zakończono dodawanie do ekwipunku");
System.out.println();
}
}
public void DodajDoEkwipunku(Mikstury Mikstura)
{
try{
if(SprawdzPojemnosc() + Mikstura.Ciezar <= 100)
{
EkwipunekMikstury.add(Mikstura);
}
else{
throw new MojWyjatek("Nie można dodać Mikstury do ekwipunku. Przkroczony ciezar maksymalny");
}
}
catch (MojWyjatek exc)
{
exc.printStackTrace();
System.out.println(exc);
}
finally {
System.out.println("Zakończono dodawanie do ekwipunku");
System.out.println();
}
}
Z góry dziękuję Wam za pomoc,