Zapis obiektów, dodawanie obiektów jako argument metody.

0

Witajcie,
Na wstępie chciałem wszystkich przywitać, to mój pierwszy post na tym forum. Zaczynam swoją przygodę z programowaniem i wymyśliłem program, który będzie symulował prostą grę podobną do dawnych przeglądarkowych RPG, aby przećwiczyć dziedziczenie, konstruktory i polimorfizm, być może jeszcze interfejsy, w zależności co jeszcze przyjdzie mi do głowy. Mój problem polega na tym, że wyskakuje mi błąd w momencie gdy próbuje wywołać metodę "bitwa", coś jest nie tak z argumentami metody. Domyślam się, że argumenty, których używam nie są prawidłowo zdeklarowane, być może dlatego, że są one w switchu, jednak nie mam pomysłu jak to zrobić dobrze. Nie wiem też jak zrobić, aby program pamiętał, którą postać i którego potwora wybrałem, tak aby po wywołaniu metody "bitwa", oraz wraz z dalszą rozbudową programu, innych metod, program wiedział, który potwór i postać mają się pojedynkować. Chyba same utworzenie obiektu nie sprawi, że program będzie to prawidłowo pamiętać, prawda? Mam nadzieję, że w miarę sensownie wytłumaczyłem czego nie rozumiem, proszę o wyrozumiałość i z góry dziękuje za odpowiedzi.

Poniżej wstawiam link do githuba:
https://github.com/aronboguszewski/Gra.git

Problem występuje w klasie Menu

0

Na tym etapie, program nie wie co to jest postać a co to jest potwór :)
W switchu, gdzie dokonujesz wyboru bohatera zmienne nazwij np. Postac postac ( nie zależnie od wyboru ).


case 1:
                        Postac postac= new Wojownik(3000, 500, 1, 50, 3000);
                        System.out.println("Wybrales wojownika!");
                        break;
                    case 2:
                        Postac postac= new Mag(1000, 2000, 3,100, 2500);
                        System.out.println("Wybrales maga!");
                        break;
                    case 3:
                        Postac postac= new Lucznik(1800, 1000, 5,80, 3400);
                        System.out.println("Wybrales lucznika!");
                        break;
0

Tak nie może być, tylko raz można zastosować nazwę "postac", w case 2 i case 3 wyskakuje błąd, że zmienna jest już zdefiniowana. Jakieś inne pomysły?

0

Zadeklaruj zmienną postac przed switchem:

Postac postac = null;
switch(...)
{
    case 1:
        postac= new Wojownik(3000, 500, 1, 50, 3000);
 ...
0

Gdy tak robię to case nie przypisuje new Wojownik pod tą zmienną, ciągle ma wartość null.

0

To znaczy, że zmienna użyta w switchu nigdy nie ma wartości 1. (Do kodu nie zaglądałem).

0

Zatem jak zrobić aby pod tą zmienną switch przypisywał obiekt i żebym mógł użyć tych obiektów jako argumenty metody bitwa? Siedzę nad tym dwa dni i nie mogę nic wykombinować.

0

Zajrzałem do kodu. Za wcześnie jest dostępna opcja Bitwa. Co program ma zrobić gdy użytkownik wybierze bitwę bez uprzedniego wybrania bohatera i przeciwnika?
Szybkie lekarstwo:

  • zrób ze zmiennych posta i potwor pola w klasie,
  • zmień kod
            case 3:
                if(postac != null && potwor != null)
                {
                    bitwa(postac, potwor);
                }
                break;
0

Wiem, że opcja nie powinna być dostępna bez wcześniejszego wybrania bohatera i przeciwnika, ale nawet jeśli ich wybieram to i tak próbuje się wykonać bitwa na wartościach null.

0

A skąd Ty to wiesz? W kodzie na githubie jest klasa Main z metodą main. Metoda main wywołuje konstruktor klasy Menu - ale w tej klasie brak zdefiniowanego konstruktora. W konsekwencji program nic nie robi.

0

Dodałem w klasie Main menu.menu() i kiedy wybieram bohatera oraz przeciwnika a następnie opcje bitwa wyskakuje błąd:

Exception in thread "main" java.lang.NullPointerException
0

Opisz dokładnie jakie zmiany wprowadziłeś Jeśli tylko dopisałeś w klasie Main wiersz

menu.menu();

to nadal niczego nie możesz stwierdzić. Można wybrać tylko jedną pozycję z menu: albo bohatera, albo potwora, albo bitwę, po wyborze program kończy działanie. Nie można wybrać bohatera, potwora i zacząć bitwę.

0

No tak, faktycznie nie zaktualizowałem githuba. Dodałem pętle while.
https://github.com/aronboguszewski/Gra.git

0

Umiesz czytać? Przecież napisałem:

Szybkie lekarstwo:

zrób ze zmiennych postac i potwor pola w klasie,
0

Napisałeś dopiero po edycji posta, nie zauważyłem.
Teraz działa, dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1